summaryrefslogtreecommitdiff
path: root/spec/unit/puppet/parser
AgeCommit message (Collapse)Author
2012-03-07(#12357) Add ability to display an error message from validate_reJeff McCune
I've seen a number of times the following error displayed to the end user: validate_re(): "" does not match "^true$|^false$" at /p/t/f.pp:40 This is an absolutely horrific error message. I'm to blame for it. Users stumble over this quite often and they shouldn't have to go read the code to sort out what's happening. This patch makes an effort to fix the problem by adding a third, optional, argument to validate_re(). This third argument will be the message thrown back in the exception which will be displayed to the end user. This sets the stage for nicer error messages coming from modules we write. This patch is backwards compatible but is a new feature.
2012-03-07(#12357) Add validate_absolute_path() functionJeff McCune
This patch adds a new function to validate if a string is an absolute filesystem path or not. The intent of this is to make this functionality generic and reusable. Josh left a comment in another pull request I had: If node_installdir or $node_vardir is not defined, then we should raise an error, otherwise we may create a scheduled task to an untrusted directory. One solution to this comment is to validate the Puppet variable is an absolute path. Examples of this function look like: function_validate_absolute_path Using Puppet::Parser::Scope.new Garbage inputs validate_absolute_path(nil) should fail validate_absolute_path([nil]) should fail validate_absolute_path({"foo"=>"bar"}) should fail validate_absolute_path({}) should fail validate_absolute_path("") should fail relative paths validate_absolute_path("relative1") should fail validate_absolute_path(".") should fail validate_absolute_path("..") should fail validate_absolute_path("./foo") should fail validate_absolute_path("../foo") should fail validate_absolute_path("etc/puppetlabs/puppet") should fail validate_absolute_path("opt/puppet/bin") should fail absolute paths validate_absolute_path("C:/") should not fail validate_absolute_path("C:\\") should not fail validate_absolute_path("C:\\WINDOWS\\System32") should not fail validate_absolute_path("C:/windows/system32") should not fail validate_absolute_path("X:/foo/bar") should not fail validate_absolute_path("X:\\foo\\bar") should not fail validate_absolute_path("/var/tmp") should not fail validate_absolute_path("/var/lib/puppet") should not fail validate_absolute_path("/var/opt/../lib/puppet") should not fail validate_absolute_path("C:\\Program Files (x86)\\Puppet Labs\\Puppet Enterprise") should not fail validate_absolute_path("C:/Program Files (x86)/Puppet Labs/Puppet Enterprise") should not fail Finished in 0.05637 seconds 23 examples, 0 failures
2012-02-22(#12776) Added validate_slength function and rspec testChris Spence
This function is used to validate a string is less than a maximum length. The string, or array of strings, is passed as the first argument to the function. The maximum length of the string is passed as the second argument. It is useful to validate, for example, that Puppet is not sending a username to a downstream system that the system cannot cope with, but that might not cause an error message - for example, MySQL will not accept a username of more than 16 characters. This enables a Puppet administrator to validate the data that it may have been passed from upstream through, for example, Hiera.
2012-01-11Merge branch '2.2.x'Jeff McCune
* 2.2.x: Check according to rfc1035 Add additional domain name tests (maint) Memoize scope in domain_name spec
2012-01-11Add additional domain name testsJeff McCune
Without this patch some valid domain names are not covered in the spec tests as Stig Sandbeck Mathisen <ssm@debian.org> points out. This patch adds spec tests for the domains "." and "x.com" which are both valid.
2012-01-11(maint) Memoize scope in domain_name specJeff McCune
This is an opportunity improvement since I'm in the code. Get rid of instance variables in the spec test and replace them with a memo let method block.
2012-01-11Merge branch '2.2.x'Jeff McCune
* 2.2.x: (#11901) Fix sort order error in tests for 'keys' and 'values'
2012-01-11(#11901) Fix sort order error in tests for 'keys' and 'values'Jeff McCune
Between Ruby 1.8.7 p352 and p357 the way arrays were returned when using keys and values in Ruby changed, and due to assumption about the ordering our tests are now failing. This patch fixes the issue by using the =~ operator matcher in rspec. This matcher is implemented as RSpec::Matchers::MatchArray and performs multiset equality matching of arrays. Order doesn't matter, but duplicate values do. This patch also switches @scope instance variables to memoized let methods for clarity in the code. Original Author: Ken Barber Reviewed-by: Nick Lewis This commit closes GH-29
2012-01-11Merge branch '2.2.x'Ken Barber
* 2.2.x: (#11873) time function spec failure on Fixnum matcher
2012-01-10(#11873) time function spec failure on Fixnum matcherKen Barber
The rspec code for the time function was trying to match the type to be a 'Fixnum'. Ruby will sometimes make this a 'Bignum' depending on its internals and we can't rely on this to be true all the time. This patch just makes sure the type is an integer instead.
2012-01-09New str2saltedsha512 function for OS X PasswordsGary Larizza
OS X 10.7 introduced salted-SHA512 password hashes as opposed to the older LANMAN + SHA1 hashes. To assist in generating properly-formatted password hashes, this commit adds the str2saltedsha512() function which accepts a single string argument (the password) and returns a salted-SHA512 password hash which can be fed as the password attribute of a user resource in OS X 10.7. Spec tests are also added to ensure that functionality isn't broken with future commits.
2011-11-14(#10802) add new function get_module_pathDan Bode
This commit adds a new function called get_module_path. get_module_path returns the absolute path of a specified module. The code and functionality is very similar to how templates and files are detected inside of modules. the function has been tested against puppet 2.6.10 and 2.7.x
2011-10-10(#10007) Revert "Merge pull request #13 from ↵Jeff McCune
kbarber/issue/master/8925-user_ssl_certs" This reverts commit 14852e0259e1e43371dbcb2675e00c6d6e614f05, reversing changes made to a95dccd464b55945feb8bcf7483f777c25164115. This is to fix the broken build (failing tests) as per #8925 and #10007
2011-08-17(#8925) Added new function called 'get_certificate' for retrievingKen Barber
certificates from a CA (or locally). This function works by either obtaining the file locally or remotely based on Puppets configuration. Also added get_pubkey which wraps get_certificate and extracts the public key.
2011-08-05(#8797) Merge puppetlabs-functions into puppetlabs-stdlibKen Barber
It was decided that maintaining puppetlabs-functions and puppetlabs-stdlib was duplication as both are trying to achieve the same goal. This patch provides a merge of the puppetlabs-functions into the puppetlabs-stdlib repository, with history preservation. The following conflicts were found and resolved: * LICENSE file from functions was used as it aligns with ASL usage instructions and contains relevant copyright information: http://www.apache.org/licenses/LICENSE-2.0.html * Used spec_helper.rb from functions - this is what Puppet core uses and doesn't break tests. * Merged .gitignore and spec.opts options.
2011-08-05* Moved kwalify to puppetlabs-kwalify projectKen Barber
* Re-arranged tests in line with puppetlabs-stdlib
2011-08-04(#8678) Add validate_array and validate_string functionsJeff McCune
The accounts module is making use of validate_array() and validate_string() which do not exist int he stdlib module without this patch. This patch adds the two functions to the stdlib with unit tests. Reviewed-by: Dan Bode
2011-07-29(#8709) Add hash merging functionDan Bode
In Puppet, it is not possible to reassign hash values. This function allows a reasonable way to perform hash munging in Puppet. Reviewed-by: Jeff McCune
2011-07-29(#8708) Add has_key functionDan Bode
It is difficult to use existance of keys in a hash as a boolean condition in Puppet (see #8705) This function provides a working solution until the underlying issue in Puppet can be resolved. Reviewed-by: Jeff McCune
2011-06-21(#8010) Add validate_hash spec testsJeff McCune
These tests run through a number of example cases and exercise the behavior of the validate_hash function. To run, simple execute rspec validate_hash_spec.rb
2011-06-21(#8010) Add getvar() rvalue functionJeff McCune
This isn't directly related to #8010, but rather indirectly fills the need to allow the end user to configure where data values are looked up. This allows the namespace to be passed as a class parameter. A module may then quickly and easily look up data from the user-defined namespace.
2011-06-03Add additional tests to validate_bool() specJeff McCune
2011-06-03Add spec test for validate_bool functionJeff McCune
This is an interesting spec test for module developers. It illustrates how to cause Puppet to test the function from the Puppet DSL rather than the Ruby DSL, fully exercising the system from the perspective of the end user. (Note how Puppet[:code] is set, then the scope reset, then the compile method called.) Paired-with: Dan Bode <dan@puppetlabs.com>