Skip to content

Commit f7953a6

Browse files
committed
add Stdlib::base64 and Stdlib::Base32 types
1 parent cb80a76 commit f7953a6

7 files changed

Lines changed: 165 additions & 0 deletions

File tree

README.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,60 @@ Unacceptable input example:
413413
/usr2/username/bin:/usr/local/bin:/usr/bin:.
414414
```
415415

416+
#### `Stdlib::Base32`
417+
418+
Matches paths a valid base32 string
419+
420+
Acceptable input example:
421+
422+
```shell
423+
ASDASDDASD3453453
424+
425+
asdasddasd3453453=
426+
427+
ASDASDDASD3453453==
428+
429+
asdasddasd3453453===
430+
```
431+
432+
Unacceptable input example:
433+
434+
```shell
435+
asdasd!@#$
436+
437+
=asdasd9879876876+/
438+
439+
asdads asdasd
440+
441+
asdasddasd3453453=======
442+
```
443+
444+
#### `Stdlib::Base64`
445+
446+
Matches paths a valid base64 string
447+
448+
Acceptable input example:
449+
450+
```shell
451+
asdasdASDSADA342386832/746+=
452+
453+
asdasdASDSADA34238683274/6+
454+
455+
asdasdASDSADA3423868327/46+==
456+
```
457+
458+
Unacceptable input example:
459+
460+
```shell
461+
asdasd!@#$
462+
463+
=asdasd9879876876+/
464+
465+
asda=sd9879876876+/
466+
467+
asdads asdasd
468+
```
469+
416470
### Facts
417471

418472
#### `package_provider`

spec/aliases/base32_spec.rb

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
require 'spec_helper'
2+
3+
if Puppet::Util::Package.versioncmp(Puppet.version, '4.5.0') >= 0
4+
describe 'test::base32', type: :class do
5+
describe 'valid handling' do
6+
%w(
7+
ASDASDDASD3453453
8+
ASDASDDASD3453453=
9+
ASDASDDASD3453453==
10+
ASDASDDASD3453453===
11+
ASDASDDASD3453453====
12+
ASDASDDASD3453453=====
13+
ASDASDDASD3453453======
14+
asdasddasd3453453
15+
asdasddasd3453453=
16+
asdasddasd3453453==
17+
asdasddasd3453453===
18+
asdasddasd3453453====
19+
asdasddasd3453453=====
20+
asdasddasd3453453======
21+
).each do |value|
22+
describe value.inspect do
23+
let(:params) { { value: value } }
24+
it { is_expected.to compile }
25+
end
26+
end
27+
end
28+
29+
describe 'invalid path handling' do
30+
context 'garbage inputs' do
31+
[
32+
[nil],
33+
[nil, nil],
34+
{ 'foo' => 'bar' },
35+
{},
36+
'',
37+
'asdasd!@#$',
38+
'=asdasd9879876876+/',
39+
'asda=sd9879876876+/',
40+
'asdaxsd9879876876+/===',
41+
'asdads asdasd',
42+
'asdasddasd3453453=======',
43+
'asdaSddasd',
44+
'asdasddasd1',
45+
'asdasddasd9'
46+
].each do |value|
47+
describe value.inspect do
48+
let(:params) { { value: value } }
49+
it { is_expected.to compile.and_raise_error(%r{parameter 'value' expects a match for Stdlib::Base32}) }
50+
end
51+
end
52+
end
53+
end
54+
end
55+
end

spec/aliases/base64_spec.rb

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
require 'spec_helper'
2+
3+
if Puppet::Util::Package.versioncmp(Puppet.version, '4.5.0') >= 0
4+
describe 'test::base64', type: :class do
5+
describe 'valid handling' do
6+
%w(
7+
asdasdASDSADA342386832/746+=
8+
asdasdASDSADA34238683274/6+
9+
asdasdASDSADA3423868327/46+==
10+
).each do |value|
11+
describe value.inspect do
12+
let(:params) { { value: value } }
13+
it { is_expected.to compile }
14+
end
15+
end
16+
end
17+
18+
describe 'invalid path handling' do
19+
context 'garbage inputs' do
20+
[
21+
[nil],
22+
[nil, nil],
23+
{ 'foo' => 'bar' },
24+
{},
25+
'',
26+
'asdasd!@#$',
27+
'=asdasd9879876876+/',
28+
'asda=sd9879876876+/',
29+
'asdaxsd9879876876+/===',
30+
'asdads asdasd'
31+
].each do |value|
32+
describe value.inspect do
33+
let(:params) { { value: value } }
34+
it { is_expected.to compile.and_raise_error(%r{parameter 'value' expects a match for Stdlib::Base64}) }
35+
end
36+
end
37+
end
38+
end
39+
end
40+
end
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Class to test the Stdlib::Base32 type alias
2+
class test::base32 (
3+
Stdlib::Base32 $value,
4+
) {
5+
notice('Success')
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Class to test the Stdlib::Base64 type alias
2+
class test::base64 (
3+
Stdlib::Base64 $value,
4+
) {
5+
notice('Success')
6+
}

types/base32.pp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Type to match base32 String
2+
type Stdlib::Base32 = Pattern[/^[a-z2-7]+={,6}$/, /^[A-Z2-7]+={,6}$/]

types/base64.pp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Type to match base64 String
2+
type Stdlib::Base64 = Pattern[/^[a-zA-Z0-9\/\+]+={,2}$/]

0 commit comments

Comments
 (0)