diff --git a/spec/aliases/base32_spec.rb b/spec/aliases/base32_spec.rb new file mode 100644 index 000000000..e4376e3ae --- /dev/null +++ b/spec/aliases/base32_spec.rb @@ -0,0 +1,54 @@ +require 'spec_helper' + +if Puppet.version.to_f >= 4.5 + describe 'test::base32', type: :class do + describe 'valid handling' do + %w( + ASDASDDASD3453453 + ASDASDDASD3453453= + ASDASDDASD3453453== + ASDASDDASD3453453=== + ASDASDDASD3453453==== + ASDASDDASD3453453===== + ASDASDDASD3453453====== + asdasddasd3453453 + asdasddasd3453453= + asdasddasd3453453== + asdasddasd3453453=== + asdasddasd3453453==== + asdasddasd3453453===== + asdasddasd3453453====== + ).each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile } + end + end + end + describe 'invalid path handling' do + context 'garbage inputs' do + [ + [nil], + [nil, nil], + { 'foo' => 'bar' }, + {}, + '', + 'asdasd!@#$', + '=asdasd9879876876+/', + 'asda=sd9879876876+/', + 'asdaxsd9879876876+/===', + 'asdads asdasd', + 'asdasddasd3453453=======', + 'asdaSddasd', + 'asdasddasd1', + 'asdasddasd9' + ].each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile.and_raise_error(%r{parameter 'value' expects a match for Stdlib::Base32}) } + end + end + end + end + end +end diff --git a/spec/aliases/base64_spec.rb b/spec/aliases/base64_spec.rb new file mode 100644 index 000000000..347403c55 --- /dev/null +++ b/spec/aliases/base64_spec.rb @@ -0,0 +1,40 @@ +require 'spec_helper' + +if Puppet.version.to_f >= 4.5 + describe 'test::base64', type: :class do + describe 'valid handling' do + %w( + asdasdASDSADA342386832/746+= + asdasdASDSADA34238683274/6+ + asdasdASDSADA3423868327/46+== + ).each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile } + end + end + end + + describe 'invalid path handling' do + context 'garbage inputs' do + [ + [nil], + [nil, nil], + { 'foo' => 'bar' }, + {}, + '', + 'asdasd!@#$', + '=asdasd9879876876+/', + 'asda=sd9879876876+/', + 'asdaxsd9879876876+/===', + 'asdads asdasd' + ].each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile.and_raise_error(%r{parameter 'value' expects a match for Stdlib::Base64}) } + end + end + end + end + end +end diff --git a/spec/aliases/fqdn_spec.rb b/spec/aliases/fqdn_spec.rb new file mode 100644 index 000000000..e5f3630d9 --- /dev/null +++ b/spec/aliases/fqdn_spec.rb @@ -0,0 +1,36 @@ +require 'spec_helper' + +if Puppet.version.to_f >= 4.5 + describe 'test::fqdn', type: :class do + describe 'valid handling' do + %w( + example + example.com + www.example.com + ).each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile } + end + end + end + + describe 'invalid path handling' do + context 'garbage inputs' do + [ + [nil], + [nil, nil], + { 'foo' => 'bar' }, + {}, + '', + 'www www.example.com' + ].each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile.and_raise_error(%r{parameter 'value' expects a match for Stdlib::Fqdn}) } + end + end + end + end + end +end diff --git a/spec/aliases/host_spec.rb b/spec/aliases/host_spec.rb new file mode 100644 index 000000000..5fc1ecb7c --- /dev/null +++ b/spec/aliases/host_spec.rb @@ -0,0 +1,43 @@ +require 'spec_helper' + +if Puppet.version.to_f >= 4.5 + describe 'test::host', type: :class do + describe 'valid handling' do + %w( + example + example.com + www.example.com + 2001:0db8:85a3:0000:0000:8a2e:0370:7334 + fa76:8765:34ac:0823:ab76:eee9:0987:1111 + 2001:0db8::1 + 224.0.0.0 + 255.255.255.255 + 0.0.0.0 + 192.88.99.0 + ).each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile } + end + end + end + + describe 'invalid path handling' do + context 'garbage inputs' do + [ + [nil], + [nil, nil], + { 'foo' => 'bar' }, + {}, + '', + 'www www.example.com' + ].each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile.and_raise_error(%r{parameter 'value' expects a match for Stdlib::Host}) } + end + end + end + end + end +end diff --git a/spec/aliases/puppetcontent.spec b/spec/aliases/puppetcontent.spec new file mode 100644 index 000000000..25f866f79 --- /dev/null +++ b/spec/aliases/puppetcontent.spec @@ -0,0 +1,44 @@ +require 'spec_helper' + +if Puppet.version.to_f >= 4.5 + describe 'test::puppetcontent', type: :class do + describe 'valid handling' do + %w{ + usr2/username/bin + var/tmp + var///tmp + tea/file.erb + }.each do |value| + describe value.inspect do + let(:params) {{ value: value }} + it { is_expected.to compile } + end + end + end + + describe 'invalid path handling' do + context 'garbage inputs' do + [ + nil, + [ nil ], + [ nil, nil ], + { 'foo' => 'bar' }, + { }, + '', + "C:/whatever", + "\\var\\tmp", + "\\Users/hc/wksp/stdlib", + "*/Users//nope" + "/Users//nope" + "/Users/nope" + ].each do |value| + describe value.inspect do + let(:params) {{ value: value }} + it { is_expected.to compile.and_raise_error(/parameter 'value' expects a match for Stdlib::Puppetcontent/) } + end + end + end + + end + end +end diff --git a/spec/aliases/puppetsource_spec.rb b/spec/aliases/puppetsource_spec.rb new file mode 100644 index 000000000..6f46e0387 --- /dev/null +++ b/spec/aliases/puppetsource_spec.rb @@ -0,0 +1,55 @@ +require 'spec_helper' + +if Puppet.version.to_f >= 4.5 + describe 'test::puppetsource', type: :class do + describe 'valid handling' do + %w( + https://hello.com + https://notcreative.org + https://canstillaccepthttps.co.uk + http://anhttp.com + http://runningoutofideas.gov + file:///hello/bla + file:///foo/bar.log + /usr2/username/bin:/usr/local/bin:/usr/bin:. + C:/ + C:\\ + C:\\WINDOWS\\System32 + C:/windows/system32 + X:/foo/bar + X:\\foo\\bar + \\\\host\\windows + //host/windows + /var/tmp + /var/opt/../lib/puppet + ).each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile } + end + end + end + + describe 'invalid path handling' do + context 'garbage inputs' do + [ + nil, + [nil], + [nil, nil], + { 'foo' => 'bar' }, + {}, + '', + '*/Users//nope', + '\\Users/hc/wksp/stdlib', + 'C:noslashes', + '\\var\\tmp' + ].each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile.and_raise_error(%r{parameter 'value' expects a match for Stdlib::Puppetsource}) } + end + end + end + end + end +end diff --git a/spec/aliases/puppeturi_spec.rb b/spec/aliases/puppeturi_spec.rb new file mode 100644 index 000000000..15f7599b5 --- /dev/null +++ b/spec/aliases/puppeturi_spec.rb @@ -0,0 +1,42 @@ +require 'spec_helper' + +if Puppet.version.to_f >= 4.5 + describe 'test::puppeturi', type: :class do + describe 'valid handling' do + %w( + puppet:///modules/hello/bla + puppet:///modules/foo/bar.log + ).each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile } + end + end + end + + describe 'invalid path handling' do + context 'garbage inputs' do + [ + nil, + [nil], + [nil, nil], + { 'foo' => 'bar' }, + {}, + '', + 'puppe:///modules/notquiteright.org', + 'puppets:///modules/nah', + 'puppet://modules/nah', + 'puppet:/modules/nah', + 'puppet:///hello/bla', + '/file/test', + 'https//notrightbutclose.org' + ].each do |value| + describe value.inspect do + let(:params) { { value: value } } + it { is_expected.to compile.and_raise_error(%r{parameter 'value' expects a match for Stdlib::Puppeturi}) } + end + end + end + end + end +end diff --git a/spec/fixtures/test/manifests/base32.pp b/spec/fixtures/test/manifests/base32.pp new file mode 100644 index 000000000..f9ae6d01b --- /dev/null +++ b/spec/fixtures/test/manifests/base32.pp @@ -0,0 +1,6 @@ +# Class to test the Stdlib::HTTPUrl type alias +class test::base32 ( + Stdlib::Base32 $value, + ) { + notice('Success') +} diff --git a/spec/fixtures/test/manifests/base64.pp b/spec/fixtures/test/manifests/base64.pp new file mode 100644 index 000000000..91b963495 --- /dev/null +++ b/spec/fixtures/test/manifests/base64.pp @@ -0,0 +1,6 @@ +# Class to test the Stdlib::HTTPUrl type alias +class test::base64 ( + Stdlib::Base64 $value, + ) { + notice('Success') +} diff --git a/spec/fixtures/test/manifests/fileuri.pp b/spec/fixtures/test/manifests/fileuri.pp new file mode 100644 index 000000000..db58ea5c9 --- /dev/null +++ b/spec/fixtures/test/manifests/fileuri.pp @@ -0,0 +1,6 @@ +# Class to test the Stdlib::HTTPUrl type alias +class test::fileuri ( + Stdlib::Fileuri $value, + ) { + notice('Success') +} diff --git a/spec/fixtures/test/manifests/fqdn.pp b/spec/fixtures/test/manifests/fqdn.pp new file mode 100644 index 000000000..c8411adaf --- /dev/null +++ b/spec/fixtures/test/manifests/fqdn.pp @@ -0,0 +1,6 @@ +# Class to test the Stdlib::HTTPUrl type alias +class test::fqdn ( + Stdlib::Fqdn $value, + ) { + notice('Success') +} diff --git a/spec/fixtures/test/manifests/host.pp b/spec/fixtures/test/manifests/host.pp new file mode 100644 index 000000000..09daed3cd --- /dev/null +++ b/spec/fixtures/test/manifests/host.pp @@ -0,0 +1,6 @@ +# Class to test the Stdlib::Host type alias +class test::host ( + Stdlib::Host $value, + ) { + notice('Success') +} diff --git a/spec/fixtures/test/manifests/puppetcontent.pp b/spec/fixtures/test/manifests/puppetcontent.pp new file mode 100644 index 000000000..dd2de5acf --- /dev/null +++ b/spec/fixtures/test/manifests/puppetcontent.pp @@ -0,0 +1,6 @@ +# Class to test the Stdlib::Puppeturi type alias +class test::puppetcontent ( + Stdlib::Puppetcontent $value, + ) { + notice('Success') +} diff --git a/spec/fixtures/test/manifests/puppetsource.pp b/spec/fixtures/test/manifests/puppetsource.pp new file mode 100644 index 000000000..93bdc374d --- /dev/null +++ b/spec/fixtures/test/manifests/puppetsource.pp @@ -0,0 +1,6 @@ +# Class to test the Stdlib::Puppeturi type alias +class test::puppetsource ( + Stdlib::Puppetsource $value, + ) { + notice('Success') +} diff --git a/spec/fixtures/test/manifests/puppeturi.pp b/spec/fixtures/test/manifests/puppeturi.pp new file mode 100644 index 000000000..1bfd5add9 --- /dev/null +++ b/spec/fixtures/test/manifests/puppeturi.pp @@ -0,0 +1,6 @@ +# Class to test the Stdlib::Puppeturi type alias +class test::puppeturi ( + Stdlib::Puppeturi $value, + ) { + notice('Success') +} diff --git a/types/base32.pp b/types/base32.pp new file mode 100644 index 000000000..99854935b --- /dev/null +++ b/types/base32.pp @@ -0,0 +1,2 @@ +# Type to match base32 String +type Stdlib::Base32 = Pattern[/^[a-z2-7]+={,6}$/, /^[A-Z2-7]+={,6}$/] diff --git a/types/base64.pp b/types/base64.pp new file mode 100644 index 000000000..b3544d280 --- /dev/null +++ b/types/base64.pp @@ -0,0 +1,2 @@ +# Type to match base64 String +type Stdlib::Base64 = Pattern[/^[a-zA-Z0-9\/\+]+={,2}$/] diff --git a/types/fileuri.pp b/types/fileuri.pp new file mode 100644 index 000000000..ea8036707 --- /dev/null +++ b/types/fileuri.pp @@ -0,0 +1,2 @@ +#Type to match URIs +type Stdlib::Fileuri = Pattern[/^file:\/\/\/([^\/\0]+(\/)?)+/] diff --git a/types/fqdn.pp b/types/fqdn.pp new file mode 100644 index 000000000..840ec5cec --- /dev/null +++ b/types/fqdn.pp @@ -0,0 +1 @@ +type Stdlib::Fqdn = Pattern[/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/] diff --git a/types/host.pp b/types/host.pp new file mode 100644 index 000000000..8f6919e70 --- /dev/null +++ b/types/host.pp @@ -0,0 +1 @@ +type Stdlib::Host = Variant[Stdlib::Fqdn, Stdlib::Compat::Ip_address] diff --git a/types/port.pp b/types/port.pp new file mode 100644 index 000000000..edeef151e --- /dev/null +++ b/types/port.pp @@ -0,0 +1 @@ +type Stdlib::Port = Integer[0, 65535] diff --git a/types/privilegedport.pp b/types/privilegedport.pp new file mode 100644 index 000000000..24390f4ec --- /dev/null +++ b/types/privilegedport.pp @@ -0,0 +1 @@ +type Stdlib::Privilegedport = Integer[1, 1023] diff --git a/types/puppetcontent.pp b/types/puppetcontent.pp new file mode 100644 index 000000000..b4f30c5a2 --- /dev/null +++ b/types/puppetcontent.pp @@ -0,0 +1,2 @@ +# this regex rejects any path component that is a / or a NUL +type Stdlib::Puppetcontent = Pattern[/^([^\/\0]+(\/)?)+$/] diff --git a/types/puppetsource.pp b/types/puppetsource.pp new file mode 100644 index 000000000..3601d33b8 --- /dev/null +++ b/types/puppetsource.pp @@ -0,0 +1,2 @@ +# Validate the source parameter on file opjects +type Stdlib::Puppetsource = Variant[Stdlib::Absolutepath, Stdlib::HTTPUrl, Stdlib::Fileuri, Stdlib::Puppeturi] diff --git a/types/puppeturi.pp b/types/puppeturi.pp new file mode 100644 index 000000000..4f651b8ad --- /dev/null +++ b/types/puppeturi.pp @@ -0,0 +1,2 @@ +#Type to match URIs +type Stdlib::Puppeturi = Pattern[/^puppet:\/\/\/modules\/([^\/\0]+(\/)?)+/] diff --git a/types/unprivilegedport.pp b/types/unprivilegedport.pp new file mode 100644 index 000000000..47ba9703d --- /dev/null +++ b/types/unprivilegedport.pp @@ -0,0 +1 @@ +type Stdlib::Unprivilegedport = Integer[1024, 65535]