diff --git a/README.md b/README.md index bd0802230..53b6752bd 100644 --- a/README.md +++ b/README.md @@ -465,6 +465,61 @@ Unacceptable input example: bob@example.com ``` +#### `Stdlib::Base32` + +Matches paths a valid base32 string + +Acceptable input example: + +```shell +ASDASDDASD3453453 + +asdasddasd3453453= + +ASDASDDASD3453453== + +asdasddasd3453453=== +``` + +Unacceptable input example: + +```shell +asdasd!@#$ + +=asdasd9879876876+/ + +asdads asdasd + +asdasddasd3453453======= +``` + +#### `Stdlib::Base64` + +Matches paths a valid base64 string + +Acceptable input example: + +```shell +asdasdASDSADA342386832/746+= + +asdasdASDSADA34238683274/6+ + +asdasdASDSADA3423868327/46+== +``` + +Unacceptable input example: + +```shell +asdasd!@#$ + +=asdasd9879876876+/ + +asda=sd9879876876+/ + +asdads asdasd +``` + + ### Facts #### `package_provider` diff --git a/spec/fixtures/test/manifests/base32.pp b/spec/fixtures/test/manifests/base32.pp new file mode 100644 index 000000000..591863351 --- /dev/null +++ b/spec/fixtures/test/manifests/base32.pp @@ -0,0 +1,6 @@ +# Class to test the Stdlib::Base32 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..d9e98d921 --- /dev/null +++ b/spec/fixtures/test/manifests/base64.pp @@ -0,0 +1,6 @@ +# Class to test the Stdlib::Base64 type alias +class test::base64 ( + Stdlib::Base64 $value, + ) { + notice('Success') +} diff --git a/spec/type_aliases/base32_spec.rb b/spec/type_aliases/base32_spec.rb new file mode 100644 index 000000000..7e0076f57 --- /dev/null +++ b/spec/type_aliases/base32_spec.rb @@ -0,0 +1,53 @@ +require 'spec_helper' + +if Puppet::Util::Package.versioncmp(Puppet.version, '4.5.0') >= 0 + describe 'Stdlib::Base32' 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 + it { is_expected.to allow_value(value) } + 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 + it { is_expected.not_to allow_value(value) } + end + end + end + end + end +end diff --git a/spec/type_aliases/base64_spec.rb b/spec/type_aliases/base64_spec.rb new file mode 100644 index 000000000..1c5391610 --- /dev/null +++ b/spec/type_aliases/base64_spec.rb @@ -0,0 +1,38 @@ +require 'spec_helper' + +if Puppet::Util::Package.versioncmp(Puppet.version, '4.5.0') >= 0 + describe 'Stdlib::Base64' do + describe 'valid handling' do + %w[ + asdasdASDSADA342386832/746+= + asdasdASDSADA34238683274/6+ + asdasdASDSADA3423868327/46+== + ].each do |value| + describe value.inspect do + it { is_expected.to allow_value(value) } + 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 + it { is_expected.not_to allow_value(value) } + end + end + end + end + end +end 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}$/]