Skip to content
Snippets Groups Projects
account-manager.t 6.63 KiB
#!/usr/bin/perl

use strict;
use warnings;

use English qw(-no_match_vars);
use File::Temp;
use IPC::Run qw(run);
use Test::More;

plan tests => 48;

my ($out, $err, $rc);

($out, $err, $rc) = run_executable('account-manager.pl', '--help');
ok($rc == 0, '--help exit status');
is($err, '', '--help stderr');
like(
    $out,
    qr/^Usage:/,
    '--help stdout'
);

($out, $err, $rc) = run_executable('account-manager.pl');
ok($rc == 2, 'no action exit status');
like(
    $err,
    qr/no action given, aborting/,
    'no action stderr'
);
is($out, '', 'no action stdout');

SKIP: {
    skip 'live database required', 15 unless
        $ENV{TEST_DB_TYPE} &&
        $ENV{TEST_DB_HOST} &&
        $ENV{TEST_DB_NAME} &&
        $ENV{TEST_DB_USER} &&
        $ENV{TEST_DB_PASSWORD};

    my $config_file   = File::Temp->new(UNLINK => $ENV{TEST_DEBUG} ? 0 : 1);
    my $accounts_file = File::Temp->new(UNLINK => $ENV{TEST_DEBUG} ? 0 : 1);
    print {$config_file} <<EOF;
tokens_validity_period = 2
templates_dir = templates

[idp]
accounts_file = $accounts_file
scope = localhost

[service]
account_validity_period = 2

[database]
type = $ENV{TEST_DB_TYPE}
host = $ENV{TEST_DB_HOST}
name = $ENV{TEST_DB_NAME}
user = $ENV{TEST_DB_USER}
password = $ENV{TEST_DB_PASSWORD}
EOF
    $config_file->flush();

    # reset database content
    ($out, $err, $rc) = run_executable(
        'account-manager.pl',
        "--config $config_file list_accounts --delete"
    );
    ok($rc == 0, 'delete accounts exit status');
    is($err, '', 'delete accounts stderr output');