Arango-Tango

 view release on metacpan or  search on metacpan

t/05-users.t  view on Meta::CPAN

# -*- cperl -*-

use Arango::Tango;
use Test2::V0;
use Test2::Tools::Exception qw/dies lives/;

do "./t/helper.pl";

skip_all "No ArangoDB environment variables for testing. See README" unless valid_env_vars();
skip_all "Can't reach ArangoDB Server" unless server_alive();

my $arango = Arango::Tango->new( );
skip_all "Credentials problems" unless auth_ok($arango);
clean_test_environment($arango);

## 1. Create User
my $ans = $arango->create_user('tmp_user_');
is $ans->{user}, "tmp_user_", "Looks like it was created";

## 2. List Users
my $users = $arango->list_users;
ok(exists($users->{result}));
is ref($users->{result}), "ARRAY";

## 3. Retrieve User Data
my $user = $arango->user('tmp_user_');
ok $user->{active};

## 4. Check New User Has No Database Access
my $dbs = $arango->user_databases('tmp_user_');
ok exists($dbs->{result});
is scalar(keys %{$dbs->{result}}), 0;

## 5. Create a database to test permissions
my $db = $arango->create_database('tmp_');

## 6. Ask about user access level to database

my $perms = $arango->get_access_level('tmp_user_', 'tmp_');
ok !$perms->{error};
is $perms->{result}, "none"; # no permission for the user

my $perms2 = $db->get_access_level('tmp_user_');
is $perms, $perms2, "Permissions are the same, getting them from different methods";

## 7. Create Collection
my $col = $db->create_collection('tmp_col');

$perms = $arango->get_access_level('tmp_user_', 'tmp_', 'tmp_col');
ok !$perms->{error};
is $perms->{result}, "none"; # no permission for the user
$perms2 = $db->get_access_level('tmp_user_', 'tmp_col');
is $perms, $perms2, "Permissions are the same, getting them from different methods";

$perms2 = $col->get_access_level('tmp_user_');
is $perms, $perms2, "Permissions are the same, getting them from different methods";

## 8. Update and Replace user

$ans = $arango->update_user('tmp_user_', extra => { email => q'me@there.com' });
ok !$ans->{error};
$user = $arango->user('tmp_user_');
is $ans->{extra}{email}, 'me@there.com';

$ans = $arango->replace_user('tmp_user_', extra => { phone => q'696969696' });
ok !$ans->{error};
$user = $arango->user('tmp_user_');
ok !exists($ans->{extra}{email});

## 9. Grant Permissions



( run in 1.327 second using v1.01-cache-2.11-cpan-df04353d9ac )