The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 6;
use RDF::ACL;
use Error qw(:try);

my $acl = RDF::ACL->new;

my $id = $acl->allow(
	'webid'     => ['http://example.com/joe#me'],
	'item'      => 'http://example.com/private/document',
	'level'     => ['read']
	);

$acl->i_am('http://example.com/joe#me');

is($acl->who_am_i, 'http://example.com/joe#me',
	"who_am_i works");

try
{
	$acl->allow(
		'webid'     => ['http://example.com/joe#me'],
		'item'      => 'http://example.com/private/document',
		'level'     => ['write']
		);
}
catch Error::Simple with
{
	my $e = shift;
	ok($e, "This is supposed to fail:- $e");
};

try
{
	$acl->deny($id);
}
catch Error::Simple with
{
	my $e = shift;
	ok($e, "This is also supposed to fail:- $e");
};

$acl->i_am(undef);

ok($acl->allow(
		'webid'     => ['http://example.com/joe#me'],
		'item'      => 'http://example.com/private/document',
		'level'     => ['control']
		),
	"Assigning control access to joe.");

$acl->i_am('http://example.com/joe#me');

ok($acl->allow(
		'webid'     => ['http://example.com/joe#me'],
		'item'      => 'http://example.com/private/document',
		'level'     => ['write']
		),
	"Now it works!");

ok($acl->deny($id), "This works too!");