puppetmodule-stdlib 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. data/CHANGELOG +253 -0
  2. data/CONTRIBUTING.md +65 -0
  3. data/Gemfile +33 -0
  4. data/LICENSE +19 -0
  5. data/Modulefile +11 -0
  6. data/README.markdown +1173 -0
  7. data/README_DEVELOPER.markdown +35 -0
  8. data/RELEASE_PROCESS.markdown +24 -0
  9. data/Rakefile +2 -0
  10. data/lib/facter/pe_version.rb +53 -0
  11. data/lib/facter/puppet_vardir.rb +26 -0
  12. data/lib/facter/root_home.rb +19 -0
  13. data/lib/facter/util/puppet_settings.rb +21 -0
  14. data/lib/puppet/parser/functions/abs.rb +36 -0
  15. data/lib/puppet/parser/functions/any2array.rb +33 -0
  16. data/lib/puppet/parser/functions/bool2num.rb +49 -0
  17. data/lib/puppet/parser/functions/capitalize.rb +34 -0
  18. data/lib/puppet/parser/functions/chomp.rb +35 -0
  19. data/lib/puppet/parser/functions/chop.rb +37 -0
  20. data/lib/puppet/parser/functions/concat.rb +37 -0
  21. data/lib/puppet/parser/functions/count.rb +22 -0
  22. data/lib/puppet/parser/functions/defined_with_params.rb +35 -0
  23. data/lib/puppet/parser/functions/delete.rb +46 -0
  24. data/lib/puppet/parser/functions/delete_at.rb +49 -0
  25. data/lib/puppet/parser/functions/downcase.rb +33 -0
  26. data/lib/puppet/parser/functions/empty.rb +28 -0
  27. data/lib/puppet/parser/functions/ensure_packages.rb +24 -0
  28. data/lib/puppet/parser/functions/ensure_resource.rb +35 -0
  29. data/lib/puppet/parser/functions/flatten.rb +33 -0
  30. data/lib/puppet/parser/functions/floor.rb +20 -0
  31. data/lib/puppet/parser/functions/fqdn_rotate.rb +46 -0
  32. data/lib/puppet/parser/functions/get_module_path.rb +17 -0
  33. data/lib/puppet/parser/functions/getparam.rb +35 -0
  34. data/lib/puppet/parser/functions/getvar.rb +26 -0
  35. data/lib/puppet/parser/functions/grep.rb +33 -0
  36. data/lib/puppet/parser/functions/has_interface_with.rb +52 -0
  37. data/lib/puppet/parser/functions/has_ip_address.rb +25 -0
  38. data/lib/puppet/parser/functions/has_ip_network.rb +25 -0
  39. data/lib/puppet/parser/functions/has_key.rb +28 -0
  40. data/lib/puppet/parser/functions/hash.rb +41 -0
  41. data/lib/puppet/parser/functions/is_array.rb +22 -0
  42. data/lib/puppet/parser/functions/is_domain_name.rb +47 -0
  43. data/lib/puppet/parser/functions/is_float.rb +27 -0
  44. data/lib/puppet/parser/functions/is_function_available.rb +23 -0
  45. data/lib/puppet/parser/functions/is_hash.rb +22 -0
  46. data/lib/puppet/parser/functions/is_integer.rb +27 -0
  47. data/lib/puppet/parser/functions/is_ip_address.rb +32 -0
  48. data/lib/puppet/parser/functions/is_mac_address.rb +27 -0
  49. data/lib/puppet/parser/functions/is_numeric.rb +27 -0
  50. data/lib/puppet/parser/functions/is_string.rb +26 -0
  51. data/lib/puppet/parser/functions/join.rb +41 -0
  52. data/lib/puppet/parser/functions/join_keys_to_values.rb +47 -0
  53. data/lib/puppet/parser/functions/keys.rb +26 -0
  54. data/lib/puppet/parser/functions/loadyaml.rb +20 -0
  55. data/lib/puppet/parser/functions/lstrip.rb +33 -0
  56. data/lib/puppet/parser/functions/max.rb +21 -0
  57. data/lib/puppet/parser/functions/member.rb +44 -0
  58. data/lib/puppet/parser/functions/merge.rb +33 -0
  59. data/lib/puppet/parser/functions/min.rb +21 -0
  60. data/lib/puppet/parser/functions/num2bool.rb +43 -0
  61. data/lib/puppet/parser/functions/parsejson.rb +24 -0
  62. data/lib/puppet/parser/functions/parseyaml.rb +24 -0
  63. data/lib/puppet/parser/functions/pick.rb +29 -0
  64. data/lib/puppet/parser/functions/prefix.rb +45 -0
  65. data/lib/puppet/parser/functions/range.rb +80 -0
  66. data/lib/puppet/parser/functions/reject.rb +31 -0
  67. data/lib/puppet/parser/functions/reverse.rb +28 -0
  68. data/lib/puppet/parser/functions/rstrip.rb +32 -0
  69. data/lib/puppet/parser/functions/shuffle.rb +46 -0
  70. data/lib/puppet/parser/functions/size.rb +48 -0
  71. data/lib/puppet/parser/functions/sort.rb +27 -0
  72. data/lib/puppet/parser/functions/squeeze.rb +36 -0
  73. data/lib/puppet/parser/functions/str2bool.rb +46 -0
  74. data/lib/puppet/parser/functions/str2saltedsha512.rb +32 -0
  75. data/lib/puppet/parser/functions/strftime.rb +107 -0
  76. data/lib/puppet/parser/functions/strip.rb +39 -0
  77. data/lib/puppet/parser/functions/suffix.rb +45 -0
  78. data/lib/puppet/parser/functions/swapcase.rb +39 -0
  79. data/lib/puppet/parser/functions/time.rb +49 -0
  80. data/lib/puppet/parser/functions/to_bytes.rb +28 -0
  81. data/lib/puppet/parser/functions/type.rb +50 -0
  82. data/lib/puppet/parser/functions/unique.rb +51 -0
  83. data/lib/puppet/parser/functions/upcase.rb +41 -0
  84. data/lib/puppet/parser/functions/uriescape.rb +36 -0
  85. data/lib/puppet/parser/functions/validate_absolute_path.rb +56 -0
  86. data/lib/puppet/parser/functions/validate_array.rb +33 -0
  87. data/lib/puppet/parser/functions/validate_augeas.rb +81 -0
  88. data/lib/puppet/parser/functions/validate_bool.rb +34 -0
  89. data/lib/puppet/parser/functions/validate_cmd.rb +47 -0
  90. data/lib/puppet/parser/functions/validate_hash.rb +33 -0
  91. data/lib/puppet/parser/functions/validate_re.rb +40 -0
  92. data/lib/puppet/parser/functions/validate_slength.rb +52 -0
  93. data/lib/puppet/parser/functions/validate_string.rb +33 -0
  94. data/lib/puppet/parser/functions/values.rb +39 -0
  95. data/lib/puppet/parser/functions/values_at.rb +98 -0
  96. data/lib/puppet/parser/functions/zip.rb +65 -0
  97. data/lib/puppet/provider/file_line/ruby.rb +59 -0
  98. data/lib/puppet/type/anchor.rb +41 -0
  99. data/lib/puppet/type/file_line.rb +70 -0
  100. data/manifests/init.pp +20 -0
  101. data/manifests/stages.pp +43 -0
  102. data/spec/functions/defined_with_params_spec.rb +37 -0
  103. data/spec/functions/ensure_packages_spec.rb +42 -0
  104. data/spec/functions/ensure_resource_spec.rb +40 -0
  105. data/spec/functions/getparam_spec.rb +34 -0
  106. data/spec/monkey_patches/alias_should_to_must.rb +8 -0
  107. data/spec/monkey_patches/publicize_methods.rb +10 -0
  108. data/spec/spec.opts +6 -0
  109. data/spec/spec_helper.rb +28 -0
  110. data/spec/unit/facter/pe_version_spec.rb +76 -0
  111. data/spec/unit/facter/root_home_spec.rb +40 -0
  112. data/spec/unit/facter/util/puppet_settings_spec.rb +35 -0
  113. data/spec/unit/puppet/parser/functions/abs_spec.rb +25 -0
  114. data/spec/unit/puppet/parser/functions/any2array_spec.rb +55 -0
  115. data/spec/unit/puppet/parser/functions/bool2num_spec.rb +24 -0
  116. data/spec/unit/puppet/parser/functions/capitalize_spec.rb +19 -0
  117. data/spec/unit/puppet/parser/functions/chomp_spec.rb +19 -0
  118. data/spec/unit/puppet/parser/functions/chop_spec.rb +19 -0
  119. data/spec/unit/puppet/parser/functions/concat_spec.rb +15 -0
  120. data/spec/unit/puppet/parser/functions/count_spec.rb +31 -0
  121. data/spec/unit/puppet/parser/functions/delete_at_spec.rb +19 -0
  122. data/spec/unit/puppet/parser/functions/delete_spec.rb +38 -0
  123. data/spec/unit/puppet/parser/functions/downcase_spec.rb +24 -0
  124. data/spec/unit/puppet/parser/functions/empty_spec.rb +23 -0
  125. data/spec/unit/puppet/parser/functions/flatten_spec.rb +27 -0
  126. data/spec/unit/puppet/parser/functions/floor_spec.rb +39 -0
  127. data/spec/unit/puppet/parser/functions/fqdn_rotate_spec.rb +33 -0
  128. data/spec/unit/puppet/parser/functions/get_module_path_spec.rb +46 -0
  129. data/spec/unit/puppet/parser/functions/getvar_spec.rb +37 -0
  130. data/spec/unit/puppet/parser/functions/grep_spec.rb +19 -0
  131. data/spec/unit/puppet/parser/functions/has_interface_with_spec.rb +64 -0
  132. data/spec/unit/puppet/parser/functions/has_ip_address_spec.rb +39 -0
  133. data/spec/unit/puppet/parser/functions/has_ip_network_spec.rb +36 -0
  134. data/spec/unit/puppet/parser/functions/has_key_spec.rb +42 -0
  135. data/spec/unit/puppet/parser/functions/hash_spec.rb +19 -0
  136. data/spec/unit/puppet/parser/functions/is_array_spec.rb +29 -0
  137. data/spec/unit/puppet/parser/functions/is_domain_name_spec.rb +64 -0
  138. data/spec/unit/puppet/parser/functions/is_float_spec.rb +33 -0
  139. data/spec/unit/puppet/parser/functions/is_function_available.rb +31 -0
  140. data/spec/unit/puppet/parser/functions/is_hash_spec.rb +29 -0
  141. data/spec/unit/puppet/parser/functions/is_integer_spec.rb +34 -0
  142. data/spec/unit/puppet/parser/functions/is_ip_address_spec.rb +39 -0
  143. data/spec/unit/puppet/parser/functions/is_mac_address_spec.rb +29 -0
  144. data/spec/unit/puppet/parser/functions/is_numeric_spec.rb +39 -0
  145. data/spec/unit/puppet/parser/functions/is_string_spec.rb +34 -0
  146. data/spec/unit/puppet/parser/functions/join_keys_to_values_spec.rb +40 -0
  147. data/spec/unit/puppet/parser/functions/join_spec.rb +19 -0
  148. data/spec/unit/puppet/parser/functions/keys_spec.rb +21 -0
  149. data/spec/unit/puppet/parser/functions/lstrip_spec.rb +19 -0
  150. data/spec/unit/puppet/parser/functions/max_spec.rb +27 -0
  151. data/spec/unit/puppet/parser/functions/member_spec.rb +24 -0
  152. data/spec/unit/puppet/parser/functions/merge_spec.rb +47 -0
  153. data/spec/unit/puppet/parser/functions/min_spec.rb +27 -0
  154. data/spec/unit/puppet/parser/functions/num2bool_spec.rb +67 -0
  155. data/spec/unit/puppet/parser/functions/parsejson_spec.rb +22 -0
  156. data/spec/unit/puppet/parser/functions/parseyaml_spec.rb +24 -0
  157. data/spec/unit/puppet/parser/functions/pick_spec.rb +34 -0
  158. data/spec/unit/puppet/parser/functions/prefix_spec.rb +19 -0
  159. data/spec/unit/puppet/parser/functions/range_spec.rb +34 -0
  160. data/spec/unit/puppet/parser/functions/reject_spec.rb +20 -0
  161. data/spec/unit/puppet/parser/functions/reverse_spec.rb +19 -0
  162. data/spec/unit/puppet/parser/functions/rstrip_spec.rb +24 -0
  163. data/spec/unit/puppet/parser/functions/shuffle_spec.rb +24 -0
  164. data/spec/unit/puppet/parser/functions/size_spec.rb +24 -0
  165. data/spec/unit/puppet/parser/functions/sort_spec.rb +24 -0
  166. data/spec/unit/puppet/parser/functions/squeeze_spec.rb +24 -0
  167. data/spec/unit/puppet/parser/functions/str2bool_spec.rb +31 -0
  168. data/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb +45 -0
  169. data/spec/unit/puppet/parser/functions/strftime_spec.rb +29 -0
  170. data/spec/unit/puppet/parser/functions/strip_spec.rb +18 -0
  171. data/spec/unit/puppet/parser/functions/suffix_spec.rb +19 -0
  172. data/spec/unit/puppet/parser/functions/swapcase_spec.rb +19 -0
  173. data/spec/unit/puppet/parser/functions/time_spec.rb +29 -0
  174. data/spec/unit/puppet/parser/functions/to_bytes_spec.rb +58 -0
  175. data/spec/unit/puppet/parser/functions/type_spec.rb +43 -0
  176. data/spec/unit/puppet/parser/functions/unique_spec.rb +24 -0
  177. data/spec/unit/puppet/parser/functions/upcase_spec.rb +24 -0
  178. data/spec/unit/puppet/parser/functions/uriescape_spec.rb +24 -0
  179. data/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb +83 -0
  180. data/spec/unit/puppet/parser/functions/validate_array_spec.rb +38 -0
  181. data/spec/unit/puppet/parser/functions/validate_augeas_spec.rb +102 -0
  182. data/spec/unit/puppet/parser/functions/validate_bool_spec.rb +51 -0
  183. data/spec/unit/puppet/parser/functions/validate_cmd_spec.rb +81 -0
  184. data/spec/unit/puppet/parser/functions/validate_hash_spec.rb +43 -0
  185. data/spec/unit/puppet/parser/functions/validate_re_spec.rb +76 -0
  186. data/spec/unit/puppet/parser/functions/validate_slength_spec.rb +48 -0
  187. data/spec/unit/puppet/parser/functions/validate_string_spec.rb +60 -0
  188. data/spec/unit/puppet/parser/functions/values_at_spec.rb +38 -0
  189. data/spec/unit/puppet/parser/functions/values_spec.rb +31 -0
  190. data/spec/unit/puppet/parser/functions/zip_spec.rb +15 -0
  191. data/spec/unit/puppet/provider/file_line/ruby_spec.rb +127 -0
  192. data/spec/unit/puppet/type/anchor_spec.rb +11 -0
  193. data/spec/unit/puppet/type/file_line_spec.rb +69 -0
  194. data/spec/watchr.rb +86 -0
  195. data/tests/file_line.pp +9 -0
  196. data/tests/has_interface_with.pp +10 -0
  197. data/tests/has_ip_address.pp +3 -0
  198. data/tests/has_ip_network.pp +4 -0
  199. data/tests/init.pp +1 -0
  200. metadata +252 -0
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the pick function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("pick").should == "function_pick"
9
+ end
10
+
11
+ it 'should return the correct value' do
12
+ scope.function_pick(['first', 'second']).should == 'first'
13
+ end
14
+
15
+ it 'should return the correct value if the first value is empty' do
16
+ scope.function_pick(['', 'second']).should == 'second'
17
+ end
18
+
19
+ it 'should remove empty string values' do
20
+ scope.function_pick(['', 'first']).should == 'first'
21
+ end
22
+
23
+ it 'should remove :undef values' do
24
+ scope.function_pick([:undef, 'first']).should == 'first'
25
+ end
26
+
27
+ it 'should remove :undefined values' do
28
+ scope.function_pick([:undefined, 'first']).should == 'first'
29
+ end
30
+
31
+ it 'should error if no values are passed' do
32
+ expect { scope.function_pick([]) }.to raise_error(Puppet::Error, /Must provide non empty value./)
33
+ end
34
+ end
@@ -0,0 +1,19 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the prefix function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("prefix").should == "function_prefix"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_prefix([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return a prefixed array" do
16
+ result = scope.function_prefix([['a','b','c'], 'p'])
17
+ result.should(eq(['pa','pb','pc']))
18
+ end
19
+ end
@@ -0,0 +1,34 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the range function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("range").should == "function_range"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_range([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return a letter range" do
16
+ result = scope.function_range(["a","d"])
17
+ result.should(eq(['a','b','c','d']))
18
+ end
19
+
20
+ it "should return a number range" do
21
+ result = scope.function_range(["1","4"])
22
+ result.should(eq([1,2,3,4]))
23
+ end
24
+
25
+ it "should work with padded hostname like strings" do
26
+ expected = ("host01".."host10").to_a
27
+ scope.function_range(["host01","host10"]).should eq expected
28
+ end
29
+
30
+ it "should coerce zero padded digits to integers" do
31
+ expected = (0..10).to_a
32
+ scope.function_range(["00", "10"]).should eq expected
33
+ end
34
+ end
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "the reject function" do
6
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
7
+
8
+ it "should exist" do
9
+ Puppet::Parser::Functions.function("reject").should == "function_reject"
10
+ end
11
+
12
+ it "should raise a ParseError if there is less than 1 arguments" do
13
+ lambda { scope.function_reject([]) }.should( raise_error(Puppet::ParseError))
14
+ end
15
+
16
+ it "should reject contents from an array" do
17
+ result = scope.function_reject([["1111", "aaabbb","bbbccc","dddeee"], "bbb"])
18
+ result.should(eq(["1111", "dddeee"]))
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the reverse function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("reverse").should == "function_reverse"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_reverse([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should reverse a string" do
16
+ result = scope.function_reverse(["asdfghijkl"])
17
+ result.should(eq('lkjihgfdsa'))
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the rstrip function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("rstrip").should == "function_rstrip"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_rstrip([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should rstrip a string" do
16
+ result = scope.function_rstrip(["asdf "])
17
+ result.should(eq('asdf'))
18
+ end
19
+
20
+ it "should rstrip each element in an array" do
21
+ result = scope.function_rstrip([["a ","b ", "c "]])
22
+ result.should(eq(['a','b','c']))
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the shuffle function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("shuffle").should == "function_shuffle"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_shuffle([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should shuffle a string and the result should be the same size" do
16
+ result = scope.function_shuffle(["asdf"])
17
+ result.size.should(eq(4))
18
+ end
19
+
20
+ it "should shuffle a string but the sorted contents should still be the same" do
21
+ result = scope.function_shuffle(["adfs"])
22
+ result.split("").sort.join("").should(eq("adfs"))
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the size function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("size").should == "function_size"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_size([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return the size of a string" do
16
+ result = scope.function_size(["asdf"])
17
+ result.should(eq(4))
18
+ end
19
+
20
+ it "should return the size of an array" do
21
+ result = scope.function_size([["a","b","c"]])
22
+ result.should(eq(3))
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the sort function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("sort").should == "function_sort"
9
+ end
10
+
11
+ it "should raise a ParseError if there is not 1 arguments" do
12
+ lambda { scope.function_sort(['','']) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should sort an array" do
16
+ result = scope.function_sort([["a","c","b"]])
17
+ result.should(eq(['a','b','c']))
18
+ end
19
+
20
+ it "should sort a string" do
21
+ result = scope.function_sort(["acb"])
22
+ result.should(eq('abc'))
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the squeeze function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("squeeze").should == "function_squeeze"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 2 arguments" do
12
+ lambda { scope.function_squeeze([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should squeeze a string" do
16
+ result = scope.function_squeeze(["aaabbbbcccc"])
17
+ result.should(eq('abc'))
18
+ end
19
+
20
+ it "should squeeze all elements in an array" do
21
+ result = scope.function_squeeze([["aaabbbbcccc","dddfff"]])
22
+ result.should(eq(['abc','df']))
23
+ end
24
+ end
@@ -0,0 +1,31 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the str2bool function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("str2bool").should == "function_str2bool"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_str2bool([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should convert string 'true' to true" do
16
+ result = scope.function_str2bool(["true"])
17
+ result.should(eq(true))
18
+ end
19
+
20
+ it "should convert string 'undef' to false" do
21
+ result = scope.function_str2bool(["undef"])
22
+ result.should(eq(false))
23
+ end
24
+
25
+ it "should return the boolean it was called with" do
26
+ result = scope.function_str2bool([true])
27
+ result.should(eq(true))
28
+ result = scope.function_str2bool([false])
29
+ result.should(eq(false))
30
+ end
31
+ end
@@ -0,0 +1,45 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the str2saltedsha512 function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("str2saltedsha512").should == "function_str2saltedsha512"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 argument" do
12
+ expect { scope.function_str2saltedsha512([]) }.to( raise_error(Puppet::ParseError) )
13
+ end
14
+
15
+ it "should raise a ParseError if there is more than 1 argument" do
16
+ expect { scope.function_str2saltedsha512(['foo', 'bar', 'baz']) }.to( raise_error(Puppet::ParseError) )
17
+ end
18
+
19
+ it "should return a salted-sha512 password hash 136 characters in length" do
20
+ result = scope.function_str2saltedsha512(["password"])
21
+ result.length.should(eq(136))
22
+ end
23
+
24
+ it "should raise an error if you pass a non-string password" do
25
+ expect { scope.function_str2saltedsha512([1234]) }.to( raise_error(Puppet::ParseError) )
26
+ end
27
+
28
+ it "should generate a valid password" do
29
+ # Allow the function to generate a password based on the string 'password'
30
+ password_hash = scope.function_str2saltedsha512(["password"])
31
+
32
+ # Separate the Salt and Password from the Password Hash
33
+ salt = password_hash[0..7]
34
+ password = password_hash[8..-1]
35
+
36
+ # Convert the Salt and Password from Hex to Binary Data
37
+ str_salt = Array(salt.lines).pack('H*')
38
+ str_password = Array(password.lines).pack('H*')
39
+
40
+ # Combine the Binary Salt with 'password' and compare the end result
41
+ saltedpass = Digest::SHA512.digest(str_salt + 'password')
42
+ result = (str_salt + saltedpass).unpack('H*')[0]
43
+ result.should == password_hash
44
+ end
45
+ end
@@ -0,0 +1,29 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the strftime function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("strftime").should == "function_strftime"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_strftime([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "using %s should be higher then when I wrote this test" do
16
+ result = scope.function_strftime(["%s"])
17
+ result.to_i.should(be > 1311953157)
18
+ end
19
+
20
+ it "using %s should be lower then 1.5 trillion" do
21
+ result = scope.function_strftime(["%s"])
22
+ result.to_i.should(be < 1500000000)
23
+ end
24
+
25
+ it "should return a date when given %Y-%m-%d" do
26
+ result = scope.function_strftime(["%Y-%m-%d"])
27
+ result.should =~ /^\d{4}-\d{2}-\d{2}$/
28
+ end
29
+ end
@@ -0,0 +1,18 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the strip function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+ it "should exist" do
7
+ Puppet::Parser::Functions.function("strip").should == "function_strip"
8
+ end
9
+
10
+ it "should raise a ParseError if there is less than 1 arguments" do
11
+ lambda { scope.function_strip([]) }.should( raise_error(Puppet::ParseError))
12
+ end
13
+
14
+ it "should strip a string" do
15
+ result = scope.function_strip([" ab cd "])
16
+ result.should(eq('ab cd'))
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the suffix function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("suffix").should == "function_suffix"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_suffix([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return a suffixed array" do
16
+ result = scope.function_suffix([['a','b','c'], 'p'])
17
+ result.should(eq(['ap','bp','cp']))
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the swapcase function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("swapcase").should == "function_swapcase"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_swapcase([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should swapcase a string" do
16
+ result = scope.function_swapcase(["aaBBccDD"])
17
+ result.should(eq('AAbbCCdd'))
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the time function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("time").should == "function_time"
9
+ end
10
+
11
+ it "should raise a ParseError if there is more than 2 arguments" do
12
+ lambda { scope.function_time(['','']) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return a number" do
16
+ result = scope.function_time([])
17
+ result.should be_an(Integer)
18
+ end
19
+
20
+ it "should be higher then when I wrote this test" do
21
+ result = scope.function_time([])
22
+ result.should(be > 1311953157)
23
+ end
24
+
25
+ it "should be lower then 1.5 trillion" do
26
+ result = scope.function_time([])
27
+ result.should(be < 1500000000)
28
+ end
29
+ end