# PySPF test suite
# $Id$
# vim:sw=2 sts=2
#
# This is the test suite used during development of the pyspf library.
# It is a collection of ad hoc tests based on bug reports.  It is the
# goal of the SPF test project to have an elegant and minimal test suite
# that reflects RFC 4408.  However, this should help get things started
# by serving as a example of what tests look like.  Also, any implementation
# that flunks this, should flunk the minimal elegant suite as well.
#
# 17/07/2006 from http://www.openspf.org/svn/project/test-suite/pyspf-tests.yml
---
description: Check basic exists with macros
tests:
  exists-pass:
    helo: mail.example.net
    host: 1.2.3.5
    mailfrom: lyme.eater@example.co.uk
    result: pass
  exists-fail:
    helo: mail.example.net
    host: 1.2.3.4
    mailfrom: lyme.eater@example.co.uk
    result: fail
zonedata:
  lyme.eater.example.co.uk.1.2.3.5.spf.example.net:
    - A:    127.0.0.1
  example.co.uk:
    - SPF:  v=spf1 mx/26 exists:%{l}.%{d}.%{i}.spf.example.net -all

---
description: Permerror detection
tests:
  incloop:
    description: Include loop
    helo: mail.example.com
    host: 66.150.186.79
    mailfrom: chuckvsr@examplea.com
    result: permerror
  badall:
    helo: mail.example.com
    host: 66.150.186.79
    mailfrom: chuckvsr@examplec.com
    result: permerror
  baddomain:
    helo: mail.example.com
    host: 66.150.186.79
    mailfrom: chuckvsr@exampled.com
    result: permerror
  badip:
    helo: mail.example.com
    host: 66.150.186.79
    mailfrom: chuckvsr@examplee.com
    result: permerror
zonedata:
  examplea.com:
    - SPF:  v=spf1 a mx include:b.com
  exampleb.com:
    - SPF:  v=spf1 a mx include:a.com
  examplec.com:
    - SPF:  v=spf1 -all:foobar
  exampled.com:
    - SPF:  v=spf1 a:examplea.com:8080
  examplee.com:
    - SPF:  v=spf1 ip4:1.2.3.4:8080
---
tests:
  nospace1:
    description: Test no space, test multi-line comment
    helo: mail.example1.com
    host: 1.2.3.4
    mailfrom: foo@example2.com
    result: none
  empty:
    description: Test empty
    helo: mail1.example1.com
    host: 1.2.3.4
    mailfrom: foo@example1.com
    result: neutral
  nospace2:
    helo: mail.example1.com
    host: 1.2.3.4
    mailfrom: foo@example3.com
    result: pass
zonedata:
  example3.com:
    - SPF:  v=spf1mx
    - SPF:  v=spf1 mx
    - MX:   [0, mail.example1.com]
  example1.com:
    - SPF:  v=spf1
  example2.com:
    - SPF:  v=spf1mx
  mail.example1.com:
    - A:    1.2.3.4

---
description: Check trailing dot with redirect and exp
tests:
  traildot1:
    spec: 8.1
    description: Trailing dot must be accepted for domains.
    helo: msgbas2x.cos.example.com
    host: 192.168.218.40
    mailfrom: test@example.com
    result: pass
  traildot2:
    spec: 8.1
    description: Trailing dot must not be removed from explanation.
    helo: msgbas2x.cos.example.com
    host: 192.168.218.40
    mailfrom: test@exp.example.com
    result: fail
    explanation: This is a test.
zonedata:
  example.com.d.spf.example.com:
    - SPF: v=spf1 redirect=a.spf.example.com
  a.spf.example.com:
    - SPF: >-
        v=spf1 mx:example.com include:o.spf.example.com -exists:%{s}.S.bl.spf.example.com
        exists:%{s}.S.%{i}.AI.spf.example.com ~all
  o.spf.example.com:
    - SPF:  v=spf1 ip4:192.168.144.41 ip4:192.168.218.40 ip4:192.168.218.41
  msgbas1x.cos.example.com:
    - A:    192.168.240.36
  example.com:
    - A:    192.168.90.76
    - SPF:  v=spf1 redirect=%{d}.d.spf.example.com.
    - MX:   [10, msgbas1x.cos.example.com]
  exp.example.com:
    - SPF:  v=spf1 exp=msg.example.com. -all
  msg.example.com:
    - TXT:  This is a test.
---
description: Corner cases
tests:
  emptyMX:
    description: Test empty MX
    helo: mail.example.com
    host: 1.2.3.4
    mailfrom: ""
    result: neutral
  localhost:
    helo: mail.example.com
    host: 127.0.0.1
    mailfrom: root@example.com
    result: fail
zonedata:
  mail.example.com:
    - MX:   [0, ""]
    - SPF:  v=spf1 mx
  example.com:
    - SPF:  v=spf1 -all
