require "vnd.stalwart.testsuite"; test_set "message" text: From: stephan@example.org Cc: frop@example.com To: test@dovecot.example.net X-Bullshit: f fr fro frop frob frobn frobnitzn Subject: Test Message Comment: Test! . ; # Match tests test "Match empty" { if not header :contains "x-bullshit" "" { test_fail "contains tests fails to match \"\" against non-empty string"; } if not header :contains "comment" "" { test_fail "contains tests fails to match \"\" against empty string"; } } test "Match full" { if not address :contains "from" "stephan@example.org" { test_fail "should have matched"; } } test "Match begin" { if not address :contains "from" "stephan" { test_fail "should have matched"; } } test "Match end" { if not address :contains "from" "example.org" { test_fail "should have matched"; } } test "Match middle" { if not address :contains "from" "@" { test_fail "should have matched"; } } test "Match similar beginnings" { if not header :contains "x-bullshit" "frobnitzn" { test_fail "should have matched"; } } test "Match case-insensitive" { if not address :contains :comparator "i;ascii-casemap" "from" "EXAMPLE" { test_fail "match fails to apply correct comparator"; } if not address :contains "from" "EXAMPLE" { test_fail "default comparator is wrong"; } } # Non-match tests test "No match full (typo)" { if address :contains "to" "frob@example.com" { test_fail "should not have matched"; } } test "No match end (typo)" { if header :contains "x-bullshit" "frobnitzm" { test_fail "should not have matched"; } }