# Time-stamp: <2010-10-24 10:55:50 phm>

package A2E::I2P::SkribAuthTest;

=head1 NAME

A2E::SarbTest

=head1 PREREQUISITES

=cut

use base 'Test::Unit::TestCase';
use A2E::I2P::SkribAuth;

=head1 IMPLEMENTATION

=cut

binmode STDIN, ':utf8';
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
use strict;
use utf8;
use Encode qw(_utf8_on);
use warnings;
use diagnostics;
use Scalar::Util qw(blessed);
use Data::Dumper;

# sub new { my $self = shift()->SUPER::new(@_) };

our ($p);
our $fasoc = 'auth_asolvl3';
our $fproj = 'auth_proj_eupat_hlplvl1';
our $ffii_db_alirebla = 0; ## FFII Database accessible; untrue since 2010-10-24


sub set_up {
    my $m = shift;
    return unless -r '/homdisk/.gnupg/secring.gpg';
    return 1 unless $ffii_db_alirebla;
    $p = new_ready A2E::I2P::SkribAuth debug => $ENV{DEBUG};
};

sub test_konfig {
    my $m = shift;
    return 1 unless $ffii_db_alirebla;
    return unless -d '/homdisk/.gnupg';
    return unless -r '/homdisk/.gnupg/secring.gpg';
    return unless $p;	
    $m->assert_equals('A2E::I2P::SkribAuth', blessed($p));
}

sub test_asoc {
    my $m = shift;
    return 1 unless $ffii_db_alirebla;
    return unless -r '/homdisk/.gnupg/secring.gpg';
    return unless $p;
    unlink $fasoc if -e $fasoc;
    $p->skrib_asoc_auth($fasoc);
    $m->assert(-s $fasoc);
    $p->open_fayl($fasoc, 'i', 'r');
    my $n = 0;
    while ($p->getlini('i')) { $n++ if m(\A\w+\:\w+\Z) };
    $p->kloz_fayl('i');
    $m->assert($n > 100);
    unlink $fasoc;
};

sub test_proj {
    my $m = shift;
    return 1 unless $ffii_db_alirebla;
    return unless -r '/homdisk/.gnupg/secring.gpg';
    return unless $p;
    unlink $fproj if -e $fproj;
    $p->skrib_proj_auth($fproj);
    $m->assert(-s $fproj);
    $p->open_fayl($fproj, 'i', 'r');
    my $n=0;
    while ($p->getlini('i')) { $n++ if m(\A\w+\:\w+\Z) };
    $p->kloz_fayl('i');
    $m->assert($n > 1);
    unlink $fproj;
};

sub tear_down {
    return unless -r '/homdisk/.gnupg/secring.gpg';
    unlink $fasoc;
    unlink $fproj;
};

our @TESTS = qw(test_konfig) unless $ffii_db_alirebla;

# sub offline { warn "暫時缺少本地信協數據庫，只好蒙混過關" }
# our @TESTS = qw(offline);

=head1 The END

=cut

return 1;

# Local Variables:
# coding: utf-8
# srcfile:/adv/i2p/SkribAuthTest.pm
# mode: perl
# End:
