summaryrefslogtreecommitdiff
path: root/t/basic.t
diff options
context:
space:
mode:
Diffstat (limited to 't/basic.t')
-rw-r--r--t/basic.t105
1 files changed, 105 insertions, 0 deletions
diff --git a/t/basic.t b/t/basic.t
index e69de29..712afe4 100644
--- a/t/basic.t
+++ b/t/basic.t
@@ -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;