require "vnd.dovecot.testsuite";
require "subaddress";
require "envelope";

test_set "message" text:
From: stephan+sieve@example.org
To: test-failed@example.com
Subject: subaddress test

Test!
.
;

test_set "envelope.to" "friep+-frop@dovecot.example.net";
test_set "envelope.from" "list_request@lists.dovecot.example.net";

test "Delimiter default" {
	if not address :is :user "from" "stephan" {
		test_fail "wrong user part extracted";
	}

	if not address :is :detail "from" "sieve" {
		test_fail "wrong detail part extracted";
	}
}

test "Delimiter \"-\"" {
	test_config_set "recipient_delimiter" "-";
	test_config_reload :extension "subaddress";

	if not address :is :user "to" "test" {
		test_fail "wrong user part extracted";
	}

	if not address :is :detail "to" "failed" {
		test_fail "wrong detail part extracted";
	}
}

test "Delimiter \"+-\"" {
	test_config_set "recipient_delimiter" "+-";
	test_config_reload :extension "subaddress";

	if not envelope :is :user "to" "friep" {
		test_fail "wrong user part extracted";
	}

	if not envelope :is :detail "to" "-frop" {
		test_fail "wrong detail part extracted";
	}
}

test "Delimiter \"-+\"" {
	test_config_set "recipient_delimiter" "-+";
	test_config_reload :extension "subaddress";

	if not envelope :is :user "to" "friep" {
		test_fail "wrong user part extracted";
	}

	if not envelope :is :detail "to" "-frop" {
		test_fail "wrong detail part extracted";
	}
}

test "Delimiter \"+-_\"" {
	test_config_set "recipient_delimiter" "+-_";
	test_config_reload :extension "subaddress";

	if not envelope :is :user "to" "friep" {
		test_fail "wrong user part extracted";
	}

	if not envelope :is :detail "to" "-frop" {
		test_fail "wrong detail part extracted";
	}

	if not envelope :is :user "from" "list" {
		test_fail "wrong user part extracted";
	}

	if not envelope :is :detail "from" "request" {
		test_fail "wrong detail part extracted";
	}
}
