test-imap-url.c revision 289ce1246b1c7511f8ceec02344316064ffbe546
02c335c23bf5fa225a467c19f2c063fb0dc7b8c3Timo Sirainen/* Copyright (c) 2013-2014 Dovecot authors, see the included COPYING file */
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen const char *url;
2bc963ea051ddacefe0fa5e26280e8ef853fd6c6Timo Sirainen/* Valid IMAP URL tests */
2bc963ea051ddacefe0fa5e26280e8ef853fd6c6Timo Sirainenstatic const struct valid_imap_url_test valid_url_tests[] = {
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://%68endri%6B;AUTH=GSS%41PI@%65%78%61%6d%70%6c%65.com",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://beelzebub@666.4example.com:999",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Trash/..",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Trash/../",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Trash/../..",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX%3BTrash",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX;UIDVALIDITY=1341",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/;UIDVALIDITY=23423",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Drafts;UIDVALIDITY=6567",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .mailbox = "INBOX/Drafts", .uidvalidity = 6567 }
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Drafts;UIDVALIDITY=788/;UID=16",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .mailbox = "INBOX/Drafts", .uidvalidity = 788,
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Drafts;UIDVALIDITY=788/;UID=16/..",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .mailbox = "INBOX/Drafts", .uidvalidity = 788,
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Drafts;UIDVALIDITY=788/;UID=16/../..",
f818f91a2e6ee003aaa83323acd74008aa1276d9Timo Sirainen .url = "imap://user@example.com/INBOX/Junk;UIDVALIDITY=27667/"
f818f91a2e6ee003aaa83323acd74008aa1276d9Timo Sirainen ";UID=434/;SECTION=HEADER",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .mailbox = "INBOX/Junk", .uidvalidity = 27667,
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Important/"
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen ";UID=437/;SECTION=1.2.MIME",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Important/;UID=56/;SECTION=AA/BB",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Important/;UID=56/;SECTION=AA/BB/..",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Important/;UID=56/"
83228b3f9f6ee8c62a61902e0203af9760f7b9b7Timo Sirainen ";SECTION=AA/BB/../..",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Important/;UID=234/"
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen ";SECTION=HEADER.FIELDS%20(%22To%22%20%22From%22)",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .uid = 234, .section = "HEADER.FIELDS (\"To\" \"From\")" }
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://user@example.com/INBOX/Important/;UID=234/"
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen ";PARTIAL=10.250",
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .uid = 234, .section = NULL, .partial_offset = 10, .partial_size = 250 }
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen .url = "imap://hendrik@example.com/INBOX/Important/;UID=34534/"
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen ";SECTION=1.3.TEXT/;PARTIAL=0.34254",
f818f91a2e6ee003aaa83323acd74008aa1276d9Timo Sirainen .url = "imap://hendrik@example.com/INBOX/Sent"
f818f91a2e6ee003aaa83323acd74008aa1276d9Timo Sirainen ";UIDVALIDITY=534?SUBJECT%20%22Frop?%22",
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.uidvalidity = 0 }
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.uidvalidity = 0,
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_base = {
.url_parsed = {
.url_parsed = {
.url_parsed = {
.url_parsed = {
static void test_imap_url_valid(void)
size_t i;
equal);
if (equal) {
equal);
test_end();
} T_END;
struct invalid_imap_url_test {
const char *url;
.url_base = {
#ifdef HAVE_IPV6
static void test_imap_url_invalid(void)
test_end();
} T_END;
static const char *parse_create_url_tests[] = {
"imap://host.example.com/",
#ifdef HAVE_IPV6
"imap://host.%23example.com/",
"imap://user%40example.com;AUTH=STR%23ANGE@host.example.com/",
static void test_imap_url_parse_create(void)
if (imap_url_parse
test_end();
} T_END;
int main(void)
static void (*test_functions[])(void) = {