diff options
Diffstat (limited to 't/basic.t')
-rw-r--r-- | t/basic.t | 105 |
1 files changed, 105 insertions, 0 deletions
@@ -0,0 +1,105 @@ +#!perl +use strict; +use warnings; +use Test::Most; +use ACME::AutoRedact; + +sub test_redact { + my ($o,$redacted,$revealed) = @_; + + cmp_deeply( + $o, + str($revealed), + 'should stringify to the original value', + ); + + { + ACME::AutoRedact->redact; + cmp_deeply( + $o, + str($redacted), + 'inside a ->redact, it should stringify to asterisks', + ); + } + + cmp_deeply( + $o, + str($revealed), + 'outside the ->redact, it should stringify to the value again', + ); +} + +sub test_reveal { + my ($o,$redacted,$revealed) = @_; + + cmp_deeply( + $o, + str($redacted), + 'should stringify to asterisks', + ); + + { + ACME::AutoRedact->reveal; + cmp_deeply( + $o, + str($revealed), + 'inside a ->reveal, it should stringify to the original value', + ); + } + + cmp_deeply( + $o, + str($redacted), + 'outside the ->revealed, it should stringify to asterisks again', + ); +} + +sub simulate_redact { return '*' x length($_[0]) } + +subtest 'just the object' => sub { + my $value = 'a password'; + my $o = ACME::AutoRedact->new({ + value => $value, + }); + test_redact($o,simulate_redact($value),$value); +}; + +subtest 'redact by default' => sub { + my $value = 'another password'; + my $o = ACME::AutoRedact->new({ + value => $value, + default_behaviour => 'redact', + }); + test_reveal($o,simulate_redact($value),$value); +}; + +subtest 'concatenation' => sub { + my $value = 'some secret'; + my $o = ACME::AutoRedact->new($value); + my $prefix = 'embedding '; + my $suffix = ' in a bigger string'; + + my $string = "$prefix$o$suffix"; + + test_redact( + $string, + $prefix.simulate_redact($value).$suffix, + "$prefix$value$suffix", + ); +}; + +subtest 'sprintf' => sub { + my $value = 'some secret'; + my $o = ACME::AutoRedact->new($value); + my $pattern = 'embedding %s in a bigger string'; + + my $string = sprintf $pattern,$o; + + test_redact( + $string, + sprintf($pattern,simulate_redact($value)), + sprintf($pattern,$value), + ); +}; + +done_testing; |