App-Dochazka-CLI

 view release on metacpan or  search on metacpan

t/cmd_admin/employee.t  view on Meta::CPAN

plan skip_all => "init_unit failed with status " . $rv->text unless $rv->ok;

$rv = authenticate_to_server( user => 'root', password => 'immutable', quiet => 1 );
if ( $rv->not_ok and $rv->{'http_status'} =~ m/500 Can\'t connect/ ) {
    plan skip_all => "Can't connect to server";
}

isnt( $meta->MREST_CLI_URI_BASE, undef, 'MREST_CLI_URI_BASE is defined after initialization' );

#=====================================
# EMPLOYEE
# EMPLOYEE SHOW
# EMPLOYEE PROFILE
# EMPLOYEE_SPEC
# EMPLOYEE_SPEC SHOW
# EMPLOYEE_SPEC PROFILE
#======================================

$cmd = "EMPLOYEE";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
is( $rv->level, 'OK' );
is( $rv->code, 'DOCHAZKA_CLI_NORMAL_COMPLETION' );
like( $rv->payload, qr/Nick:\s+root/ );

$cmd = "EMPLOYEE PROFILE";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
is( $rv->level, 'OK' );
is( $rv->code, 'DOCHAZKA_CLI_NORMAL_COMPLETION' );
like( $rv->payload, qr/Nick:\s+root/ );

note( 'EMPLOYEE_SPEC on self always works' );
$cmd = "EMPLOYEE=root PROFILE";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
is( $rv->level, 'OK' );
like( $rv->payload, qr/Nick:\s+root/ );

note( 'EMPLOYEE_SPEC on a different employee => also works, because root is an admin' );
$cmd = "EMPLOYEE=demo SHOW";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
is( $rv->level, 'OK' );
like( $rv->payload, qr/Nick:\s+demo/ );

note( 'EMPLOYEE_SPEC on worker' );
$cmd = "EMPLOYEE=worker PROFILE";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
is( $rv->level, 'OK' );
like( $rv->payload, qr/Nick:\s+worker/ );

note( 'EMPLOYEE_SPEC on non-existent employee' );
$cmd = "EMPLOYEE=99999 PROFILE";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
is( $rv->level, 'ERR' );
is( $rv->code, 'REST_ERROR' );
like( $rv->payload, qr/DISPATCH_SEARCH_EMPTY/ );
is( $rv->{'http_status'}, '404 Not Found' );


#==========================================
# EMPLOYEE LIST
# EMPLOYEE LIST _TERM
#==========================================

note( 'Get list of all employee nicks' );
$cmd = "EMPLOYEE LIST";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
is( $rv->level, 'OK' );
like( $rv->payload, qr/List of employees with priv level ->all<-/ );


#==========================================
# EMPLOYEE SET SEC_ID _TERM
# EMPLOYEE_SPEC SET SEC_ID _TERM
#==========================================

note( 'Set my own Workforce ID' );
$cmd = "EMPLOYEE SET SEC_ID test123";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
is( $rv->level, 'OK' );
like( $rv->payload, qr/test123/ );

note( 'Check that it has really been set' );
$cmd = "GET employee nick root";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
is( $rv->level, 'OK' );
is( $rv->code, 'DISPATCH_EMPLOYEE_FOUND' );
is( $rv->payload->{'sec_id'}, 'test123' );
is( $rv->payload->{'nick'}, 'root' );

note( 'Set someone else\'s Workforce ID to the same thing' );
$cmd = "EMPLOYEE=worker SET SEC_ID test123";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
ok( $rv->not_ok );
like( $rv->payload, qr/duplicate key value violates unique constraint/ );

note( 'Set someone else\'s Workforce ID to HAMBURG_SUBST' );
$cmd = "EMPLOYEE=worker SET SEC_ID HAMBURG_SUBST";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
ok( $rv->ok );
like( $rv->payload, qr/HAMBURG_SUBST/ );

note( 'Check that it really got set to HAMBURG_SUBST' );
$cmd = "GET employee nick worker";
$rv = process_command( $cmd );
ok( ref( $rv ) eq 'App::CELL::Status' );
is( $rv->level, 'OK' );
is( $rv->code, 'DISPATCH_EMPLOYEE_FOUND' );
is( $rv->payload->{'sec_id'}, 'HAMBURG_SUBST' );
is( $rv->payload->{'nick'}, 'worker' );

#==========================================



( run in 2.249 seconds using v1.01-cache-2.11-cpan-8f98c5d2c55 )