X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=t%2Fcrypt.t;h=69a52efb33dfad5a75382be33bd3e2847f8f78f9;hb=8e4a00010331fe5243c9550a7adce09e9e044a23;hp=576f7085ed2ba883ce7aec16b9f6aa25546e74a3;hpb=f63182fc62b25269b1c38588dca2b3535ed1a1a2;p=chaz%2Fp5-File-KDBX diff --git a/t/crypt.t b/t/crypt.t index 576f708..69a52ef 100644 --- a/t/crypt.t +++ b/t/crypt.t @@ -7,15 +7,15 @@ use lib 't/lib'; use TestCommon; use Crypt::Misc 0.029 qw(decode_b64 encode_b64); +use File::KDBX::Cipher; use File::KDBX::Constants qw(CIPHER_UUID_AES256); +use File::KDBX::IO::Crypt; use IO::Handle; use Test::More; -BEGIN { use_ok 'File::KDBX::Cipher' } -BEGIN { use_ok 'PerlIO::via::File::KDBX::Crypt' } - subtest 'Round-trip block stream' => sub { plan tests => 3; + my $block_cipher = File::KDBX::Cipher->new(uuid => CIPHER_UUID_AES256, key => 0x01 x 32, iv => 0x01 x 16); test_roundtrip($block_cipher, 'Smell the pretty flowers.', @@ -25,6 +25,7 @@ subtest 'Round-trip block stream' => sub { subtest 'Round-trip cipher stream' => sub { plan tests => 3; + my $cipher_stream = File::KDBX::Cipher->new(stream_id => 2, key => 0x01 x 16); test_roundtrip($cipher_stream, 'Smell the pretty flowers.', @@ -33,20 +34,21 @@ subtest 'Round-trip cipher stream' => sub { }; subtest 'Error handling' => sub { - plan tests => 3; + plan tests => 4; my $block_cipher = File::KDBX::Cipher->new(uuid => CIPHER_UUID_AES256, key => 0x01 x 32, iv => 0x01 x 16); pipe(my $read, my $write) or die "pipe failed: $!"; - PerlIO::via::File::KDBX::Crypt->push($read, $block_cipher); + $read = File::KDBX::IO::Crypt->new($read, cipher => $block_cipher); - print $write 'blah blah blah!!'; + print $write "blah blah blah!\1"; close($write) or die "close failed: $!"; - is $read->error, 0, 'Read handle starts out fine'; + is $read->error, '', 'Read handle starts out fine'; my $plaintext = do { local $/; <$read> }; - is $read->error, 1, 'Read handle can enter and error state'; + is $plaintext, '', 'Read can fail'; + is $read->error, 1, 'Read handle can enter an error state'; - like $PerlIO::via::File::KDBX::Crypt::ERROR, qr/fatal/i, + like $File::KDBX::IO::Crypt::ERROR, qr/fatal/i, 'Error object is available'; }; @@ -59,10 +61,9 @@ sub test_roundtrip { my $expected_ciphertext = shift; pipe(my $read, my $write) or die "pipe failed: $!"; - PerlIO::via::File::KDBX::Crypt->push($write, $cipher); + $write = File::KDBX::IO::Crypt->new($write, cipher => $cipher); print $write $expected_plaintext; - binmode($write, ':pop'); # finish stream close($write) or die "close failed: $!"; my $ciphertext = do { local $/; <$read> }; @@ -74,7 +75,7 @@ sub test_roundtrip { is $ciphertext, $ciphertext2, 'Same result'; open(my $fh, '<', \$ciphertext) or die "open failed: $!\n"; - PerlIO::via::File::KDBX::Crypt->push($fh, $cipher); + $fh = File::KDBX::IO::Crypt->new($fh, cipher => $cipher); my $plaintext = do { local $/; <$fh> }; close($fh);