The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 4;
use Test::Fatal;
use Authorize::Rule;

like(
    exception { Authorize::Rule->new },
    qr/^You must provide rules/,
    'Cannot instantiate Authorize::Rule without rules',
);

my $auth = Authorize::Rule->new(
    rules => {
        Person => {
            Place => [
                [ 1, { name => ['error'] } ]
            ]
        }
    },
);

isa_ok( $auth, 'Authorize::Rule' );
can_ok( $auth, qw<allowed is_allowed> );

like(
    exception { $auth->allowed( 'Person', 'Place', { name => 'blah' } ) },
    qr/^Rule keys can only be strings, regexps, or code/,
    'We fail on unknown reference in key value in params',
);