NAME

Mail::SPF::Test - SPF test-suite class

VERSION

1.001

SYNOPSIS

use Mail::SPF::Test;

my $test_suite = Mail::SPF::Test->new_from_yaml_file('rfc4408-tests.yml');

foreach my $scenario ($test_suite->scenarios) {
    printf("Scenario '%s'\n", $scenario->description);
    
    foreach my $test_case ($scenario->test_cases) {
        my $name        = $test_case->name;
        my $description = $test_case->description;
        my $comment     = $test_case->comment;
        my @spec_refs   = $test_case->spec_refs(undef || '*.*/*');
        
        my $scope       = $test_case->scope;
        my $identity    = $test_case->identity;
        
        my $ip_address  = $test_case->ip_address;
        my $helo_identity
                        = $test_case->helo_identity;
        
        my @expected_results
                        = $test_case->expected_results;
        my $expected_explanation
                        = $test_case->expected_explanation;
        
        my $ok =
            $test_case->is_expected_result($result_code) and
            $expected_explanation eq $authority_explanation;
    }
}

DESCRIPTION

Mail::SPF::Test is a class for reading and manipulating SPF test-suite data.

Constructors

The following constructors are provided:

new(%options): returns Mail::SPF::Test

Creates a new SPF test-suite object from scratch.

new_from_yaml($yaml_text, %options): returns Mail::SPF::Test

Creates a new SPF test-suite object from the given YAML string.

new_from_yaml_file($file_name, %options): returns Mail::SPF::Test

Creates a new SPF test-suite object by reading from the YAML file of the given name.

Instance methods

The following instance methods are provided:

as_yaml: returns string

Returns the test-suite object's list of scenarios formatted as a stream of YAML documents.

scenarios: returns list of Mail::SPF::Test::Scenario

Returns a list of the test-suite object's scenario objects.

SEE ALSO

For availability, support, and license information, see the README file included with Mail::SPF::Test.

AUTHORS

Julian Mehnle <julian@mehnle.net>