The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More;
use Dancer::Error;
use Dancer::ModuleLoader;

plan tests => 5;

my $error_obj = Dancer::Error->new(
    code => '404',
    pass => 'secret',
    deep => {
        pass => 'secret'
    },
);

isa_ok( $error_obj, 'Dancer::Error' );

my $censored = $error_obj->dumper;

like(
    $censored,
    qr/\QNote: Values of 2 sensitive-looking keys hidden\E/,
    'Data was censored in the output',
);

is(
    $error_obj->{'pass'},
    'secret',
    'Original data was not overwritten',
);

is(
    $error_obj->{'deep'}{'pass'},
    'secret',
    'Censoring of complex data structures works fine',
);

my %recursive;
$recursive{foo}{bar}{baz}  = 1;
$recursive{foo}{bar}{oops} = $recursive{foo};

$censored = Dancer::Error::_censor( \%recursive );

pass "recursive censored hash";

1;