mirror of
https://codeberg.org/scip/Crypt--PWSafe3.git
synced 2025-12-16 20:21:01 +01:00
- is slightly faster (no subprocess)
- makes it possible to use Crypt::PWSafe3 under perl -T (taint mode)
{ older version generated errors Insecure $ENV{PATH} while running with -T switch }
- should resolve problems with running and testing on Windows
(http://www.cpantesters.org/cpan/report/5be028b2-d2ec-11e1-853f-cec147eb5e0d
http://www.cpantesters.org/cpan/report/ea8cb70f-6e9c-1014-b601-c7411ede6b02
http://www.cpantesters.org/cpan/report/2dd017ec-6c05-1014-a000-7353ce65dec9 )
110 lines
2.6 KiB
Perl
110 lines
2.6 KiB
Perl
#!perl -T
|
|
#
|
|
# testscript for Crypt::PWSafe3 Classes by Thomas Linden
|
|
#
|
|
# needs to be invoked using the command "make test" from
|
|
# the Crypt::PWSafe3 source directory.
|
|
#
|
|
# Under normal circumstances every test should succeed.
|
|
|
|
|
|
use Data::Dumper;
|
|
#use Test::More tests => 57;
|
|
use Test::More qw(no_plan);
|
|
|
|
|
|
### 1
|
|
# load module
|
|
BEGIN { use_ok "Crypt::PWSafe3"};
|
|
require_ok( 'Crypt::PWSafe3' );
|
|
|
|
### 2
|
|
# open vault and read in all records
|
|
eval {
|
|
my $vault = new Crypt::PWSafe3(file => 't/tom.psafe3', password => 'tom');
|
|
my @r = $vault->getrecords;
|
|
my $got = 0;
|
|
foreach my $rec (@r) {
|
|
if ($rec->uuid) {
|
|
$got++;
|
|
}
|
|
}
|
|
if (! $got) {
|
|
die "No records found in test database";
|
|
}
|
|
};
|
|
ok(!$@, "open a pwsafe3 database");
|
|
|
|
### 3
|
|
# modify an existing record
|
|
my $uuid3;
|
|
my %rdata3;
|
|
my $rec3;
|
|
my %data3 = (
|
|
user => 'u3',
|
|
passwd => 'p3',
|
|
group => 'g3',
|
|
title => 't3',
|
|
notes => 'n3'
|
|
);
|
|
eval {
|
|
my $vault3 = new Crypt::PWSafe3(file => 't/tom.psafe3', password => 'tom');
|
|
foreach my $uuid ($vault3->looprecord) {
|
|
$uuid3 = $uuid;
|
|
$vault3->modifyrecord($uuid3, %data3);
|
|
last;
|
|
}
|
|
$vault3->save(file=>'t/3.out');
|
|
|
|
my $rvault3 = new Crypt::PWSafe3(file => 't/3.out', password => 'tom');
|
|
$rec3 = $rvault3->getrecord($uuid3);
|
|
|
|
foreach my $name (keys %data3) {
|
|
$rdata3{$name} = $rec3->$name();
|
|
}
|
|
};
|
|
ok(!$@, "read a pwsafe3 database and change a record ($@)");
|
|
is_deeply(\%data3, \%rdata3, "Change a record an check if changes persist after saving");
|
|
|
|
|
|
### 4
|
|
# re-use $rec3 and change it the oop way
|
|
my $rec4;
|
|
eval {
|
|
my $vault4 = new Crypt::PWSafe3(file => 't/3.out', password => 'tom');
|
|
$rec4 = $vault4->getrecord($uuid3);
|
|
|
|
$rec4->user("u4");
|
|
$rec4->passwd("p4");
|
|
|
|
$vault4->addrecord($rec4);
|
|
$vault4->markmodified();
|
|
$vault4->save(file=>'t/4.out');
|
|
|
|
my $rvault4 = new Crypt::PWSafe3(file => 't/4.out', password => 'tom');
|
|
$rec4 = $rvault4->getrecord($uuid3);
|
|
if ($rec4->user ne 'u4') {
|
|
die "oop way record change failed";
|
|
}
|
|
};
|
|
ok(!$@, "re-use record and change it the oop way\n" . $@ . "\n");
|
|
|
|
|
|
### 5 modify some header fields
|
|
eval {
|
|
my $vault5 = new Crypt::PWSafe3(file => 't/tom.psafe3', password => 'tom');
|
|
|
|
my $h3 = new Crypt::PWSafe3::HeaderField(name => 'savedonhost', value => 'localhost');
|
|
|
|
$vault5->addheader($h3);
|
|
$vault5->markmodified();
|
|
$vault5->save(file=>'t/5.out');
|
|
|
|
my $rvault5 = new Crypt::PWSafe3(file => 't/5.out', password => 'tom');
|
|
|
|
if ($rvault5->getheader('savedonhost')->value() ne 'localhost') {
|
|
die "header savedonhost not correct";
|
|
}
|
|
};
|
|
ok(!$@, "modify some header fields ($@)");
|