App-OATH
view release on metacpan or search on metacpan
t/001-test.t view on Meta::CPAN
};
subtest 'Key sort and length' => sub {
$app->{'password'} = 'secret';
delete $app->{'search'};
$app->set_filename( $filename2 );
$app->init();
my @a;
@a = trap{ $app->add_entry( 'alice:JBSWY3DPEHPK3PXP' ); };
is( $trap->exit, undef, 'New key succeeds' );
is( $trap->stdout, "Adding OTP for alice\n", 'Gives success message' );
@a = trap{ $app->add_entry( 'bob:JBSWY3DPEHPK3PXP' ); };
is( $trap->exit, undef, 'New key succeeds' );
is( $trap->stdout, "Adding OTP for bob\n", 'Gives success message' );
@a = trap{ $app->add_entry( 'catriona:JBSWY3DPEHPK3PXP' ); };
is( $trap->exit, undef, 'New key succeeds' );
is( $trap->stdout, "Adding OTP for catriona\n", 'Gives success message' );
my $timestamp = 48058835;
my $newapp = Test::MockObject::Extends->new( $app );
isa_ok( $newapp, 'T::MO::E::e' );
$newapp->mock( 'get_counter', sub{ return 48058835; } );
my $counter = $newapp->get_counter();
is( $counter, $timestamp, 'Mocked get counter' );
@a = trap{ $app->display_codes() };
my $expected = "\n alice : 205414\n bob : 205414\ncatriona : 205414\n\n";
is( $trap->stdout, $expected, 'Shows correct codes properly sorted and justified' );
$app->set_raw();
@a = trap{ $app->display_codes() };
my $expected = "\n alice : JBSWY3DPEHPK3PXP\n bob : JBSWY3DPEHPK3PXP\ncatriona : JBSWY3DPEHPK3PXP\n\n";
is( $trap->stdout, $expected, 'Shows correct raw codes properly sorted and justified' );
delete $app->{'raw'};
open my $inf,'<','t/qr.out';
my @expected_qr = <$inf>;
close $inf;
$app->set_rawqr();
@a = trap{ $app->display_codes() };
$expected = join( q{}, @expected_qr );
# Test failing on travis, producing different QR code
# ToDo - Fix this
#is( $trap->stdout, $expected, 'Shows correct raw qr codes properly sorted and justified' );
delete $app->{'rawqr'};
$app->set_filename( $filename );
};
subtest 'Locking' => sub {
my $lock1 = $app->get_lock();
is( $lock1, 1, 'Could lock' );
my $lock2 = $app->get_lock();
is( $lock2, 0, 'Already locked' );
$app->set_filename( $filename2 );
my $lock3 = $app->get_lock();
is( $lock3, 1, 'Could lock after file change' );
my $lock4 = $app->get_lock();
is( $lock4, 0, 'Already locked' );
$app->set_filename( $filename2 );
my $lock5 = $app->get_lock();
is( $lock5, 0, 'Still locked after false name change' );
$app->drop_lock();
};
subtest 'Invalid Filename' => sub {
my $invalid_filename = $filename . '/invalid';
$app->set_filename( $invalid_filename );
dies_ok( sub{ $app->save_data(); }, 'Dies on invalid filename save' );
$app->set_filename( $filename );
};
subtest 'Pod Coverage' => sub {
pod_coverage_ok( 'App::OATH' );
pod_coverage_ok( 'App::OATH::Crypt' );
pod_coverage_ok( 'App::OATH::Crypt::Rijndael' );
pod_coverage_ok( 'App::OATH::Crypt::CBC' );
};
#subtest 'Coverage' => sub {
# ok_test_coverage( 'App::OATH' );
# ok_test_coverage( 'App::OATH::Crypt' );
# ok_test_coverage( 'App::OATH::Crypt::CBC' );
# ok_test_coverage( 'App::OATH::Crypt::Rijndael' );
#};
done_testing();
( run in 0.560 second using v1.01-cache-2.11-cpan-98e64b0badf )