[BACK]Return to keyring.t CVS log [TXT][DIR] Up to [local] / palm / Palm-Keyring / t

File: [local] / palm / Palm-Keyring / t / keyring.t (download)

Revision 1.7, Sun Feb 18 16:19:12 2007 UTC (17 years, 4 months ago) by andrew
Branch: MAIN
Changes since 1.6: +59 -185 lines

going to also test v4 compatibility mode.

#!/usr/bin/perl
# $RedRiver: keyring4.t,v 1.2 2007/02/18 05:39:32 andrew Exp $
use strict;
use warnings;

use Test::More tests => 22;

BEGIN { use_ok( 'Palm::PDB' ); }
BEGIN { use_ok( 'Palm::Keyring' ); }

my $file = 'Keys-test-v4.pdb';
my $password = '12345';
my $new_password = '54321';
my $acct = {
    name        => 'test3',
	account     => 'atestaccount',
	password    => $password,
	notes       => 'now that really roxorZ!',
    lastchange  => {
        day   =>  2,
        month =>  2,
        year  => 99,
    },
};

my $pdb;
my $record;
my $decrypted;

ok( $pdb = new Palm::Keyring($password), 'New Palm::Keyring');

ok( $record = $pdb->append_Record(), 'Append Record' );

ok( $pdb->Encrypt($record, $acct, $password), 'Encrypt account into record' );

ok( $pdb->Write($file), 'Write file' );

$pdb = undef;

ok( $pdb = new Palm::PDB(), 'New Palm::PDB' );

ok( $pdb->Load($file), 'Load File' );

ok( $pdb->Password($password), 'Verify Password' );

ok( $decrypted = $pdb->Decrypt($pdb->{'records'}->[1]), 'Decrypt record' );

is( $decrypted->{password}, $password, 'Got password' );

is_deeply( $decrypted, $acct, 'Account Matches' );

my $old_date = $decrypted->{'lastchange'};

ok( $pdb->Password($password, $new_password), 'Change PDB Password' );

ok( $decrypted = $pdb->Decrypt($pdb->{'records'}->[1]), 'Decrypt with new password' );

my $new_date = $decrypted->{'lastchange'};

is_deeply( $old_date, $new_date, 'Date didn\'t change' );

$acct->{'password'} = $new_password;

ok(  $pdb->Encrypt($pdb->{'records'}->[1], $acct), 'Change record' );

ok( $decrypted = $pdb->Decrypt($pdb->{'records'}->[1]), 'Decrypt new record' );

$new_date = $decrypted->{'lastchange'};

my $od = join '/', map { $old_date->{$_} } sort keys %{ $old_date };
my $nd = join '/', map { $new_date->{$_} } sort keys %{ $new_date };

isnt( $od, $nd, 'Date changed');

is( $decrypted->{password}, $new_password, 'Got new password' ); 

$decrypted = {};
ok( $pdb->Password(), 'Forget password' );

eval{ $decrypted = $pdb->Decrypt($pdb->{'records'}->[1]) };
ok( $@, 'Don\'t decrypt' );

isnt( $decrypted->{password}, $new_password, 'Didn\'t get new password' );

unlink($file);

1;