App-Eduard.t 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use warnings;
  4. use constant KEYID => '34B22806';
  5. use constant EMAIL => 'Eduard (Key for testing Eduard) <eduard@ceata.org>';
  6. use File::Copy qw/cp/;
  7. use File::Temp qw/tempdir/;
  8. use Test::More tests => 25;
  9. BEGIN { use_ok('App::Eduard', qw/import_pubkeys process_message/) };
  10. umask 0077; # GPG doesn't like group-/world-readable homedirs
  11. $ENV{EDUARD_DEBUG} = $ENV{TEST_VERBOSE};
  12. $ENV{EDUARD_KEYDIR} = tempdir 'App-Eduard-test.XXXX', TMPDIR => 1, CLEANUP => 1;
  13. cp "t/keydir/$_", $ENV{EDUARD_KEYDIR} for qw/pubring.gpg secring.gpg/;
  14. my $contains_pubkey = App::Eduard::mp->parse_open('t/data/contains-pubkey');
  15. my @keys = import_pubkeys ($contains_pubkey, App::Eduard::mg);
  16. is $keys[0], 'DE12658069C2F09BF996CC855AAF79E969137654', 'import_pubkeys';
  17. my ($tmpl, %params);
  18. sub process {
  19. my ($name, $expected) = @_;
  20. ($tmpl, %params) = process_message("t/data/$name");
  21. is $tmpl, $expected, "Result for $name is $expected" or diag "GnuPG said: $params{message}"
  22. }
  23. process 'mime-signed', 'sign';
  24. is $params{keyid}, KEYID, 'mime-signed keyid';
  25. is $params{email}, EMAIL, 'mime-signed email';
  26. process 'mime-encrypted', 'encrypt';
  27. like $params{plaintext}, qr/MIME encrypted/, 'mime-encrypted plaintext';
  28. process 'mime-signed-encrypted', 'signencrypt';
  29. is $params{keyid}, KEYID, 'mime-signed-encrypted keyid';
  30. is $params{email}, EMAIL, 'mime-signed-encrypted email';
  31. like $params{plaintext}, qr/MIME signed & encrypted/, 'mime-signed-encrypted plaintext';
  32. process 'inline-signed', 'sign';
  33. is $params{keyid}, KEYID, 'inline-signed keyid';
  34. is $params{email}, EMAIL, 'inline-signed email';
  35. process 'inline-encrypted', 'encrypt';
  36. like $params{plaintext}, qr/Inline encrypted/, 'inline-encrypted plaintext';
  37. process 'inline-signed-encrypted', 'signencrypt';
  38. is $params{keyid}, KEYID, 'inline-signed-encrypted keyid';
  39. is $params{email}, EMAIL, 'inline-signed-encrypted email';
  40. like $params{plaintext}, qr/Inline signed & encrypted/, 'inline-signed-encrypted plaintext';
  41. process 'inline-signed-attachment', 'sign';
  42. is $params{keyid}, KEYID, 'inline-signed-attachment keyid';
  43. is $params{email}, EMAIL, 'inline-signed-attachment email';
  44. process 'inline-encrypted-attachment', 'encrypt';
  45. like $params{plaintext}, qr/Inline encrypted/, 'inline-encrypted plaintext';