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.
- data/CHANGELOG +253 -0
- data/CONTRIBUTING.md +65 -0
- data/Gemfile +33 -0
- data/LICENSE +19 -0
- data/Modulefile +11 -0
- data/README.markdown +1173 -0
- data/README_DEVELOPER.markdown +35 -0
- data/RELEASE_PROCESS.markdown +24 -0
- data/Rakefile +2 -0
- data/lib/facter/pe_version.rb +53 -0
- data/lib/facter/puppet_vardir.rb +26 -0
- data/lib/facter/root_home.rb +19 -0
- data/lib/facter/util/puppet_settings.rb +21 -0
- data/lib/puppet/parser/functions/abs.rb +36 -0
- data/lib/puppet/parser/functions/any2array.rb +33 -0
- data/lib/puppet/parser/functions/bool2num.rb +49 -0
- data/lib/puppet/parser/functions/capitalize.rb +34 -0
- data/lib/puppet/parser/functions/chomp.rb +35 -0
- data/lib/puppet/parser/functions/chop.rb +37 -0
- data/lib/puppet/parser/functions/concat.rb +37 -0
- data/lib/puppet/parser/functions/count.rb +22 -0
- data/lib/puppet/parser/functions/defined_with_params.rb +35 -0
- data/lib/puppet/parser/functions/delete.rb +46 -0
- data/lib/puppet/parser/functions/delete_at.rb +49 -0
- data/lib/puppet/parser/functions/downcase.rb +33 -0
- data/lib/puppet/parser/functions/empty.rb +28 -0
- data/lib/puppet/parser/functions/ensure_packages.rb +24 -0
- data/lib/puppet/parser/functions/ensure_resource.rb +35 -0
- data/lib/puppet/parser/functions/flatten.rb +33 -0
- data/lib/puppet/parser/functions/floor.rb +20 -0
- data/lib/puppet/parser/functions/fqdn_rotate.rb +46 -0
- data/lib/puppet/parser/functions/get_module_path.rb +17 -0
- data/lib/puppet/parser/functions/getparam.rb +35 -0
- data/lib/puppet/parser/functions/getvar.rb +26 -0
- data/lib/puppet/parser/functions/grep.rb +33 -0
- data/lib/puppet/parser/functions/has_interface_with.rb +52 -0
- data/lib/puppet/parser/functions/has_ip_address.rb +25 -0
- data/lib/puppet/parser/functions/has_ip_network.rb +25 -0
- data/lib/puppet/parser/functions/has_key.rb +28 -0
- data/lib/puppet/parser/functions/hash.rb +41 -0
- data/lib/puppet/parser/functions/is_array.rb +22 -0
- data/lib/puppet/parser/functions/is_domain_name.rb +47 -0
- data/lib/puppet/parser/functions/is_float.rb +27 -0
- data/lib/puppet/parser/functions/is_function_available.rb +23 -0
- data/lib/puppet/parser/functions/is_hash.rb +22 -0
- data/lib/puppet/parser/functions/is_integer.rb +27 -0
- data/lib/puppet/parser/functions/is_ip_address.rb +32 -0
- data/lib/puppet/parser/functions/is_mac_address.rb +27 -0
- data/lib/puppet/parser/functions/is_numeric.rb +27 -0
- data/lib/puppet/parser/functions/is_string.rb +26 -0
- data/lib/puppet/parser/functions/join.rb +41 -0
- data/lib/puppet/parser/functions/join_keys_to_values.rb +47 -0
- data/lib/puppet/parser/functions/keys.rb +26 -0
- data/lib/puppet/parser/functions/loadyaml.rb +20 -0
- data/lib/puppet/parser/functions/lstrip.rb +33 -0
- data/lib/puppet/parser/functions/max.rb +21 -0
- data/lib/puppet/parser/functions/member.rb +44 -0
- data/lib/puppet/parser/functions/merge.rb +33 -0
- data/lib/puppet/parser/functions/min.rb +21 -0
- data/lib/puppet/parser/functions/num2bool.rb +43 -0
- data/lib/puppet/parser/functions/parsejson.rb +24 -0
- data/lib/puppet/parser/functions/parseyaml.rb +24 -0
- data/lib/puppet/parser/functions/pick.rb +29 -0
- data/lib/puppet/parser/functions/prefix.rb +45 -0
- data/lib/puppet/parser/functions/range.rb +80 -0
- data/lib/puppet/parser/functions/reject.rb +31 -0
- data/lib/puppet/parser/functions/reverse.rb +28 -0
- data/lib/puppet/parser/functions/rstrip.rb +32 -0
- data/lib/puppet/parser/functions/shuffle.rb +46 -0
- data/lib/puppet/parser/functions/size.rb +48 -0
- data/lib/puppet/parser/functions/sort.rb +27 -0
- data/lib/puppet/parser/functions/squeeze.rb +36 -0
- data/lib/puppet/parser/functions/str2bool.rb +46 -0
- data/lib/puppet/parser/functions/str2saltedsha512.rb +32 -0
- data/lib/puppet/parser/functions/strftime.rb +107 -0
- data/lib/puppet/parser/functions/strip.rb +39 -0
- data/lib/puppet/parser/functions/suffix.rb +45 -0
- data/lib/puppet/parser/functions/swapcase.rb +39 -0
- data/lib/puppet/parser/functions/time.rb +49 -0
- data/lib/puppet/parser/functions/to_bytes.rb +28 -0
- data/lib/puppet/parser/functions/type.rb +50 -0
- data/lib/puppet/parser/functions/unique.rb +51 -0
- data/lib/puppet/parser/functions/upcase.rb +41 -0
- data/lib/puppet/parser/functions/uriescape.rb +36 -0
- data/lib/puppet/parser/functions/validate_absolute_path.rb +56 -0
- data/lib/puppet/parser/functions/validate_array.rb +33 -0
- data/lib/puppet/parser/functions/validate_augeas.rb +81 -0
- data/lib/puppet/parser/functions/validate_bool.rb +34 -0
- data/lib/puppet/parser/functions/validate_cmd.rb +47 -0
- data/lib/puppet/parser/functions/validate_hash.rb +33 -0
- data/lib/puppet/parser/functions/validate_re.rb +40 -0
- data/lib/puppet/parser/functions/validate_slength.rb +52 -0
- data/lib/puppet/parser/functions/validate_string.rb +33 -0
- data/lib/puppet/parser/functions/values.rb +39 -0
- data/lib/puppet/parser/functions/values_at.rb +98 -0
- data/lib/puppet/parser/functions/zip.rb +65 -0
- data/lib/puppet/provider/file_line/ruby.rb +59 -0
- data/lib/puppet/type/anchor.rb +41 -0
- data/lib/puppet/type/file_line.rb +70 -0
- data/manifests/init.pp +20 -0
- data/manifests/stages.pp +43 -0
- data/spec/functions/defined_with_params_spec.rb +37 -0
- data/spec/functions/ensure_packages_spec.rb +42 -0
- data/spec/functions/ensure_resource_spec.rb +40 -0
- data/spec/functions/getparam_spec.rb +34 -0
- data/spec/monkey_patches/alias_should_to_must.rb +8 -0
- data/spec/monkey_patches/publicize_methods.rb +10 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +28 -0
- data/spec/unit/facter/pe_version_spec.rb +76 -0
- data/spec/unit/facter/root_home_spec.rb +40 -0
- data/spec/unit/facter/util/puppet_settings_spec.rb +35 -0
- data/spec/unit/puppet/parser/functions/abs_spec.rb +25 -0
- data/spec/unit/puppet/parser/functions/any2array_spec.rb +55 -0
- data/spec/unit/puppet/parser/functions/bool2num_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/capitalize_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/chomp_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/chop_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/concat_spec.rb +15 -0
- data/spec/unit/puppet/parser/functions/count_spec.rb +31 -0
- data/spec/unit/puppet/parser/functions/delete_at_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/delete_spec.rb +38 -0
- data/spec/unit/puppet/parser/functions/downcase_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/empty_spec.rb +23 -0
- data/spec/unit/puppet/parser/functions/flatten_spec.rb +27 -0
- data/spec/unit/puppet/parser/functions/floor_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/fqdn_rotate_spec.rb +33 -0
- data/spec/unit/puppet/parser/functions/get_module_path_spec.rb +46 -0
- data/spec/unit/puppet/parser/functions/getvar_spec.rb +37 -0
- data/spec/unit/puppet/parser/functions/grep_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/has_interface_with_spec.rb +64 -0
- data/spec/unit/puppet/parser/functions/has_ip_address_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/has_ip_network_spec.rb +36 -0
- data/spec/unit/puppet/parser/functions/has_key_spec.rb +42 -0
- data/spec/unit/puppet/parser/functions/hash_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/is_array_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/is_domain_name_spec.rb +64 -0
- data/spec/unit/puppet/parser/functions/is_float_spec.rb +33 -0
- data/spec/unit/puppet/parser/functions/is_function_available.rb +31 -0
- data/spec/unit/puppet/parser/functions/is_hash_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/is_integer_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/is_ip_address_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/is_mac_address_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/is_numeric_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/is_string_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/join_keys_to_values_spec.rb +40 -0
- data/spec/unit/puppet/parser/functions/join_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/keys_spec.rb +21 -0
- data/spec/unit/puppet/parser/functions/lstrip_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/max_spec.rb +27 -0
- data/spec/unit/puppet/parser/functions/member_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/merge_spec.rb +47 -0
- data/spec/unit/puppet/parser/functions/min_spec.rb +27 -0
- data/spec/unit/puppet/parser/functions/num2bool_spec.rb +67 -0
- data/spec/unit/puppet/parser/functions/parsejson_spec.rb +22 -0
- data/spec/unit/puppet/parser/functions/parseyaml_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/pick_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/prefix_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/range_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/reject_spec.rb +20 -0
- data/spec/unit/puppet/parser/functions/reverse_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/rstrip_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/shuffle_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/size_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/sort_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/squeeze_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/str2bool_spec.rb +31 -0
- data/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb +45 -0
- data/spec/unit/puppet/parser/functions/strftime_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/strip_spec.rb +18 -0
- data/spec/unit/puppet/parser/functions/suffix_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/swapcase_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/time_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/to_bytes_spec.rb +58 -0
- data/spec/unit/puppet/parser/functions/type_spec.rb +43 -0
- data/spec/unit/puppet/parser/functions/unique_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/upcase_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/uriescape_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb +83 -0
- data/spec/unit/puppet/parser/functions/validate_array_spec.rb +38 -0
- data/spec/unit/puppet/parser/functions/validate_augeas_spec.rb +102 -0
- data/spec/unit/puppet/parser/functions/validate_bool_spec.rb +51 -0
- data/spec/unit/puppet/parser/functions/validate_cmd_spec.rb +81 -0
- data/spec/unit/puppet/parser/functions/validate_hash_spec.rb +43 -0
- data/spec/unit/puppet/parser/functions/validate_re_spec.rb +76 -0
- data/spec/unit/puppet/parser/functions/validate_slength_spec.rb +48 -0
- data/spec/unit/puppet/parser/functions/validate_string_spec.rb +60 -0
- data/spec/unit/puppet/parser/functions/values_at_spec.rb +38 -0
- data/spec/unit/puppet/parser/functions/values_spec.rb +31 -0
- data/spec/unit/puppet/parser/functions/zip_spec.rb +15 -0
- data/spec/unit/puppet/provider/file_line/ruby_spec.rb +127 -0
- data/spec/unit/puppet/type/anchor_spec.rb +11 -0
- data/spec/unit/puppet/type/file_line_spec.rb +69 -0
- data/spec/watchr.rb +86 -0
- data/tests/file_line.pp +9 -0
- data/tests/has_interface_with.pp +10 -0
- data/tests/has_ip_address.pp +3 -0
- data/tests/has_ip_network.pp +4 -0
- data/tests/init.pp +1 -0
- 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
|