]> Dogcows Code - chaz/p5-File-KDBX/blobdiff - t/database.t
Prereq Test::More 1.001004_001 to fix broken tests
[chaz/p5-File-KDBX] / t / database.t
index d4edfb2662dc81e5624b72d6f44102075f0c3714..997d04c1a7d70d0bdd895fcb19e3940197369db0 100644 (file)
@@ -9,8 +9,9 @@ use lib "$Bin/lib";
 use TestCommon;
 
 use File::KDBX;
+use File::Temp qw(tempfile);
 use Test::Deep;
-use Test::More;
+use Test::More 1.001004_001;
 use Time::Piece;
 
 subtest 'Create a new database' => sub {
@@ -48,7 +49,7 @@ subtest 'Clone' => sub {
     my @objects = $copy->objects->each;
     subtest 'Cloned objects refer to the cloned database' => sub {
         plan tests => scalar @_;
-        for my $object (@objects) {
+        for my $object (@_) {
             my $object_kdbx = eval { $object->kdbx };
             is $object_kdbx, $copy, 'Object: ' . $object->label;
         }
@@ -132,7 +133,7 @@ subtest 'Recycle bin' => sub {
 
     is $kdbx->entries->size, 1, 'Database is not empty';
     is $kdbx->entries(searching => 1)->size, 0, 'Database has no entries if searching';
-    cmp_ok $bin->entries_deeply->size, '==', 1, 'Recycle bin has an entry';
+    cmp_ok $bin->all_entries->size, '==', 1, 'Recycle bin has an entry';
 
     $entry->recycle_or_remove;
     is $kdbx->entries->size, 0, 'Remove entry if it is already in the recycle bin';
@@ -170,4 +171,24 @@ subtest 'Maintenance' => sub {
     is $entry->custom_icon_uuid, $icon_uuid, 'Uses of removed icon change';
 };
 
+subtest 'Dumping to filesystem' => sub {
+    my $kdbx = File::KDBX->new;
+    $kdbx->add_entry(title => 'Foo', password => 'whatever');
+
+    my ($fh, $filepath) = tempfile('kdbx-XXXXXX', TMPDIR => 1, UNLINK => 1);
+    close($fh);
+
+    $kdbx->dump($filepath, 'a');
+
+    my $kdbx2 = File::KDBX->load($filepath, 'a');
+    my $entry = $kdbx2->entries->map(sub { $_->title.'/'.$_->expand_password })->next;
+    is $entry, 'Foo/whatever', 'Dump and load an entry';
+
+    $kdbx->dump($filepath, key => 'a', atomic => 0);
+
+    $kdbx2 = File::KDBX->load($filepath, 'a');
+    $entry = $kdbx2->entries->map(sub { $_->title.'/'.$_->expand_password })->next;
+    is $entry, 'Foo/whatever', 'Dump and load an entry (non-atomic)';
+};
+
 done_testing;
This page took 0.023139 seconds and 4 git commands to generate.