inspec/test/unit/mock/files/crondotd

14 lines
249 B
Text
Raw Normal View History

Allow crontab resource to read crontab at user specified paths. (#2328) * add a emulated /etc/cron.d/crondotd file to the mocking system. * test that we handle incoming paths correctly by rendering to_s. * We take in both users and a path, so lets call that destination. * To make the test pass we'll determine if we are dealing with a path or a user and return the correct string. * we will need the ability to determine if we are dealing with a path when either calling the crontab command or reading the file directly, so break that out into a path? method. * remove author field. * test contents of our crondotd file. * we have to explicitly make @destination a String to use include?. * when we get a path we use inspec.file to get conents, otherwise we run the crontab command. Signed-off-by: Miah Johnson <miah@chia-pet.org> * Add documentation for example usage with file path. Signed-off-by: Miah Johnson <miah@chia-pet.org> * Make path? and path_or_user private methods Signed-off-by: Miah Johnson <miah@chia-pet.org> * Add missing username filed to crondotd mock file Signed-off-by: Miah Johnson <miah@chia-pet.org> * Pass argument as a hash when testing file paths Signed-off-by: Miah Johnson <miah@chia-pet.org> * Expected results should include usernames when testing file paths Signed-off-by: Miah Johnson <miah@chia-pet.org> * Add special string `@yearly` test to crondotd mock file Signed-off-by: Miah Johnson <miah@chia-pet.org> * Add user to existing cron tests Signed-off-by: Miah Johnson <miah@chia-pet.org> * Rubocop says I need spaces after/before curly brackets Signed-off-by: Miah Johnson <miah@chia-pet.org> * Add user to crondotd file tests and add @yearly test Signed-off-by: Miah Johnson <miah@chia-pet.org> * Modify initialize to take options hash and be backwards compatible. Change initialize default argument to create a hash by default, though it is still possible to pass in a 'user' string argument. @user gets set with the argument value unless its a hash, in which case it tries to set the value of the user key, otherwise it becomes nil. @file gets set with the value of the path key, unless it doesn't exist in which case it becomes nil. All hash keys are symbolized to ensure consistent access. Signed-off-by: Miah Johnson <miah@chia-pet.org> * Check if @path is nil to determine if we run crontab command or parse file. path? was removed as we're not overloading a @destination variable anymore. Signed-off-by: Miah Johnson <miah@chia-pet.org> * if @user is nil assume current user otherwise crontab for @user Signed-off-by: Miah Johnson <miah@chia-pet.org> * Change to complete if rather than ternary. We have three possible cases, current user, other user, or file path. This accounts for all of them. Signed-off-by: Miah Johnson <miah@chia-pet.org> * Add user to the crontab FilterTable Signed-off-by: Miah Johnson <miah@chia-pet.org> * Remove path? and path_or_user Signed-off-by: Miah Johnson <miah@chia-pet.org> * Move crontab parsing to two methods, parse_user_crontab and parse_system_crontab Because a command in a crontab file could have spaces we must parse user and system crontabs differently. When we parse user crontabs the user field will either be nil, or the requested user. Both user and path parsers handle special strings (@yearly, @weekly, etc). And also account for position of user in these files (or adds it in user case) Signed-off-by: Miah Johnson <miah@chia-pet.org> * Update examples with user: and path: Signed-off-by: Miah Johnson <miah@chia-pet.org> * Add spaces after : in example docs Signed-off-by: Miah Johnson <miah@chia-pet.org> * Disable rubocop ClassLength check Signed-off-by: Miah Johnson <miah@chia-pet.org> * Moved rubocop ClassLength metric next to class instead of above the module. Remove unnecessary braces. Add is_system_crontab? and is_user_crontab helper methods and use them. Add tests to see if error conditions are raised when the resource is invoked with missing parameters (user, or path), and on a unsupported os. Change initialize to group all hash functions together and raise errors when user and path is unset. Also raise errors on unsupported operating systems. Change order of ternary and use is_system_crontab? rather than @path.nil? Signed-off-by: Miah Johnson <miah@chia-pet.org>
2017-12-07 12:50:07 +00:00
#
# This is a sample cron.d file for unit testing crontab with paths.
#
# entry number 1
0 2 11 9 4 root /path/to/crondotd1
# entry number 2
1 3 12 10 5 daemon /path/to/crondotd2 arg1 arg2
# entry number 3
@yearly root /usr/local/bin/foo.sh bar