Better test coverage
authorMarius Gavrilescu <marius@ieval.ro>
Sat, 14 Apr 2018 15:27:10 +0000 (18:27 +0300)
committerMarius Gavrilescu <marius@ieval.ro>
Sat, 14 Apr 2018 15:27:10 +0000 (18:27 +0300)
Makefile.PL
t/Authen-Passphrase-Scrypt.t

index 2a1fa63..6d653e0 100644 (file)
@@ -34,6 +34,9 @@ WriteMakefile(
                   Object::Tiny              0
                   Data::Entropy::Algorithms 0/,
        },
+       TEST_REQUIRES     => {
+               qw/Test::Exception           0/,
+       },
        INC               => '-I. -Iscrypt-1.2.1',
        LIBS              => ['-lcrypto'],
        MYEXTLIB          => 'scrypt-1.2.1/libscrypt_sse2.a',
index dce2a7a..aceef26 100644 (file)
@@ -2,7 +2,9 @@
 use strict;
 use warnings;
 
-use Test::More tests => 9;
+use Test::More tests => 16;
+use Test::Exception;
+
 BEGIN { use_ok('Authen::Passphrase::Scrypt') };
 
 # Vectors in the scrypt paper
@@ -33,11 +35,29 @@ $x = Authen::Passphrase::Scrypt->from_rfc2307($test_rfc2307);
 ok !$x->match('password1'), 'from_rfc2307 + match';
 ok $x->match('password2'), 'from_rfc2307 + match';
 
-my $y = Authen::Passphrase::Scrypt->new({
+my $y = Authen::Passphrase::Scrypt->new(
        passphrase => 'password2',
        salt => $x->salt,
        logN => $x->logN,
        r => 8,
-});
+);
 
 is $y->as_rfc2307, $test_rfc2307, 'as_rfc2307';
+
+my $bad_rfc2307_1 = '{SCRYPT}notavalidscryptstringaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
+my $bad_rfc2307_2 = '{SCRYPT}c2NyeXB0AAwAAAAIAAAAAZ/+bp8gWcTZgEC7YQZeLLyxFeKRRdDkwbaGeFC0NkdUraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
+
+throws_ok { Authen::Passphrase::Scrypt->new }
+  qr/passphrase not set/, 'new without passphrase';
+throws_ok { Authen::Passphrase::Scrypt->from_rfc2307('bad') }
+  qr/Invalid Scrypt RFC2307/, 'from_rfc2307 with bad string';
+throws_ok { Authen::Passphrase::Scrypt->from_rfc2307($bad_rfc2307_1) }
+  qr/Invalid Scrypt RFC2307: should start/, 'from_rfc2307 with another bad string';
+throws_ok { Authen::Passphrase::Scrypt->from_rfc2307($bad_rfc2307_2) }
+  qr/Invalid Scrypt RFC2307: bad checksum/, 'from_rfc2307 with yet another rfc2307';
+throws_ok { Authen::Passphrase::Scrypt->from_crypt('') }
+  qr/does not support crypt strings/, 'from_crypt';
+throws_ok { $y->as_crypt }
+  qr/does not support crypt strings/, 'as_crypt';
+throws_ok { Authen::Passphrase::Scrypt->new(passphrase => 'xkcd', r => (1 << 30), p => (1 << 30)) }
+  qr/Error in crypto_scrypt/, 'new with huge r and p';
This page took 0.077107 seconds and 4 git commands to generate.