#!perl -w

use strict;
use warnings;

use Qpsmtpd::Constants;

my $r;

sub register_tests {
    my $self = shift;

    eval 'use Mail::SPF';
    return if $@;

    $self->register_test('test_is_relayclient', 3);
    $self->register_test('test_is_special_recipient', 5);
}

sub test_is_relayclient {
    my $self = shift;

    my $transaction = $self->qp->transaction;
    ok( ! $self->is_relayclient( $transaction ),
        "sender_permitted_from, is_relayclient -");

    $self->qp->connection->relay_client(1);
    ok( $self->is_relayclient( $transaction ),
        "sender_permitted_from, is_relayclient +");

    $self->qp->connection->relay_client(0);
    $self->qp->connection->remote_ip('192.168.7.5');
    my $client_ip = $self->qp->connection->remote_ip;
    ok( $client_ip, "sender_permitted_from, relayclients ($client_ip)");
};

sub test_is_special_recipient {
    my $self = shift;

    my $transaction = $self->qp->transaction;
    my $address     = Qpsmtpd::Address->new('user@example.com');

    ok( ! $self->is_special_recipient( $address ), "is_special_recipient -");

    foreach my $user ( qw/ postmaster abuse mailer-daemon root / ) {
        $address = Qpsmtpd::Address->new("$user\@example.com");
        ok( $self->is_special_recipient( $address ), "is_special_recipient ($user)");
    };
};