test-imap-url.c revision e9c433c5b8ef9a1b4246ebe10beb90fa01e05caf
02c335c23bf5fa225a467c19f2c063fb0dc7b8c3Timo Sirainen/* Copyright (c) 2013-2014 Dovecot authors, see the included COPYING file */
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen#include "lib.h"
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen#include "net.h"
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen#include "imap-url.h"
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen#include "test-common.h"
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainenstruct valid_imap_url_test {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen const char *url;
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen enum imap_url_parse_flags flags;
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen struct imap_url url_base;
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen struct imap_url url_parsed;
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen};
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen/* Valid IMAP URL tests */
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainenstatic const struct valid_imap_url_test valid_url_tests[] = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://localhost",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "localhost" }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@localhost",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "localhost",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "user" }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user;AUTH=PLAIN@localhost",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "localhost",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "user",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .auth_type = "PLAIN" }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://;AUTH=PLAIN@localhost",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "localhost",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .auth_type = "PLAIN" }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://%68endri%6B;AUTH=GSS%41PI@%65%78%61%6d%70%6c%65.com",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "example.com",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "hendrik",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .auth_type = "GSSAPI" }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@localhost:993",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "localhost",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "user",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .port = 993, .have_port = TRUE }
23bdbb7b1831785c6ba6df190f6369da882d2b9dTimo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@127.0.0.1",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "127.0.0.1",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "user",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .have_host_ip = TRUE }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen#ifdef HAVE_IPV6
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@[::1]",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "[::1]",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "user",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .have_host_ip = TRUE }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen#endif
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@4example.com:423",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "4example.com",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "user",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .port = 423, .have_port = TRUE }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url = "imap://beelzebub@666.4example.com:999",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url_parsed = {
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .host_name = "666.4example.com",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .userid = "beelzebub",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .port = 999, .have_port = TRUE }
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen },{
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url = "imap://user@example.com/",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url_parsed = {
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .host_name = "example.com",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .userid = "user",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .mailbox = NULL }
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen },{
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url = "imap://user@example.com/./",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url_parsed = {
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .host_name = "example.com",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .userid = "user",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .mailbox = NULL }
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen },{
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url = "imap://user@example.com/INBOX",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url_parsed = {
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .host_name = "example.com",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .userid = "user",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .mailbox = "INBOX" }
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen },{
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url = "imap://user@example.com/INBOX/",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url_parsed = {
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .host_name = "example.com",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "user",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .mailbox = "INBOX/" }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@example.com//",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .host_name = "example.com",
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen .userid = "user",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .mailbox = "/" }
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@example.com/INBOX/Trash",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .host_name = "example.com",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "user",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .mailbox = "INBOX/Trash" }
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@example.com/INBOX/Trash/..",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .url_parsed = {
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen .host_name = "example.com",
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen .userid = "user",
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen .mailbox = "INBOX/" }
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen },{
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen .url = "imap://user@example.com/INBOX/Trash/../",
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen .url_parsed = {
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen .host_name = "example.com",
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen .userid = "user",
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen .mailbox = "INBOX/" }
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen },{
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .url = "imap://user@example.com/INBOX/Trash/../..",
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi .url_parsed = {
498eecf19b1b408d5321cb048697744d7cee90b2Timo Sirainen .host_name = "example.com",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "user",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .mailbox = NULL }
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@example.com/INBOX.Trash",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "example.com",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .userid = "user",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .mailbox = "INBOX.Trash" }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@example.com/INBOX%3BTrash",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "example.com",
5f237cf1915127fe143ac4c1d3cb4d1139f3b97dTimo Sirainen .userid = "user",
5f237cf1915127fe143ac4c1d3cb4d1139f3b97dTimo Sirainen .mailbox = "INBOX;Trash" }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen },{
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi .url = "imap://user@example.com/INBOX;UIDVALIDITY=1341",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .url_parsed = {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .host_name = "example.com",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .userid = "user",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .mailbox = "INBOX", .uidvalidity = 1341 }
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@example.com/INBOX/;UIDVALIDITY=23423",
5f237cf1915127fe143ac4c1d3cb4d1139f3b97dTimo Sirainen .url_parsed = {
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .host_name = "example.com",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .userid = "user",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .mailbox = "INBOX/", .uidvalidity = 23423 }
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen },{
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .url = "imap://user@example.com/INBOX/Drafts;UIDVALIDITY=6567",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .url_parsed = {
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .host_name = "example.com",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .userid = "user",
5f237cf1915127fe143ac4c1d3cb4d1139f3b97dTimo Sirainen .mailbox = "INBOX/Drafts", .uidvalidity = 6567 }
5f237cf1915127fe143ac4c1d3cb4d1139f3b97dTimo Sirainen },{
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .url = "imap://user@example.com/INBOX/Drafts;UIDVALIDITY=788/;UID=16",
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi .url_parsed = {
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .host_name = "example.com",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .userid = "user",
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen .mailbox = "INBOX/Drafts", .uidvalidity = 788,
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .uid = 16 }
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen },{
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url = "imap://user@example.com/INBOX/Drafts;UIDVALIDITY=788/;UID=16/..",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen .url_parsed = {
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .host_name = "example.com",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .userid = "user",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .mailbox = "INBOX/Drafts", .uidvalidity = 788,
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .uid = 0 }
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen },{
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url = "imap://user@example.com/INBOX/Drafts;UIDVALIDITY=788/;UID=16/../..",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url_parsed = {
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .host_name = "example.com",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .userid = "user",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .mailbox = "INBOX/", .uidvalidity = 0,
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .uid = 0 }
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen },{
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url = "imap://user@example.com/INBOX/Junk;UIDVALIDITY=27667/"
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen ";UID=434/;SECTION=HEADER",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url_parsed = {
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .host_name = "example.com",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .userid = "user",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .mailbox = "INBOX/Junk", .uidvalidity = 27667,
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .uid = 434, .section = "HEADER" }
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen },{
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url = "imap://user@example.com/INBOX/Important/"
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen ";UID=437/;SECTION=1.2.MIME",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url_parsed = {
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .host_name = "example.com",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .userid = "user",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .mailbox = "INBOX/Important",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .uid = 437, .section = "1.2.MIME" }
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi },{
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url = "imap://user@example.com/INBOX/Important/;UID=56/;SECTION=AA/BB",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url_parsed = {
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .host_name = "example.com",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .userid = "user",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .mailbox = "INBOX/Important",
f148466c7b648669b99bf20c651ae7fc81d28659Timo Sirainen .uid = 56, .section = "AA/BB" }
f148466c7b648669b99bf20c651ae7fc81d28659Timo Sirainen },{
f148466c7b648669b99bf20c651ae7fc81d28659Timo Sirainen .url = "imap://user@example.com/INBOX/Important/;UID=56/;SECTION=AA/BB/..",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url_parsed = {
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .host_name = "example.com",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .userid = "user",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .mailbox = "INBOX/Important",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .uid = 56, .section = "AA/" }
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen },{
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url = "imap://user@example.com/INBOX/Important/;UID=56/"
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen ";SECTION=AA/BB/../..",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url_parsed = {
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .host_name = "example.com",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .userid = "user",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .mailbox = "INBOX/Important",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .uid = 56, .section = NULL }
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen },{
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url = "imap://user@example.com/INBOX/Important/;UID=234/"
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen ";SECTION=HEADER.FIELDS%20(%22To%22%20%22From%22)",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url_parsed = {
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .host_name = "example.com",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .userid = "user",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .mailbox = "INBOX/Important",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .uid = 234, .section = "HEADER.FIELDS (\"To\" \"From\")" }
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen },{
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .url = "imap://user@example.com/INBOX/Important/;UID=234/"
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen ";PARTIAL=10.250",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .url_parsed = {
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .host_name = "example.com",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .userid = "user",
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen .mailbox = "INBOX/Important",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .uid = 234, .section = NULL, .partial_offset = 10, .partial_size = 250 }
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen },{
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url = "imap://hendrik@example.com/INBOX/Important/;UID=34534/"
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen ";SECTION=1.3.TEXT/;PARTIAL=0.34254",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_parsed = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "hendrik",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Important",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .uid = 34534, .section = "1.3.TEXT",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .partial_offset = 0, .partial_size = 34254 }
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen },{
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url = "imap://hendrik@example.com/INBOX/Sent"
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen ";UIDVALIDITY=534?SUBJECT%20%22Frop?%22",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_parsed = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "hendrik",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Sent", .uidvalidity = 534,
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .search_program = "SUBJECT \"Frop?\"" }
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen },{
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url = "//hendrik@example.org/INBOX/Trash",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_base = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user" },
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_parsed = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.org",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "hendrik",
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi .mailbox = "INBOX/Trash" }
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen },{
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url = "/INBOX/Trash",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_base = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user" },
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_parsed = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Trash" }
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen },{
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url = "user@example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_base = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Accounts" },
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_parsed = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Accounts/user@example.com" }
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen },{
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url = "Drafts",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_base = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/" },
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_parsed = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .mailbox = "INBOX/Drafts" }
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen },{
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url = "../Drafts",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_base = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Trash" },
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_parsed = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Drafts" }
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen },{
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url = "../Junk",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_base = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Trash",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .uidvalidity = 23452 },
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_parsed = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Junk",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .uidvalidity = 0 }
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen },{
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi .url = "../Junk;UIDVALIDITY=23",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_base = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Trash",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .uidvalidity = 23452 },
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_parsed = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Junk",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .uidvalidity = 23 }
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen },{
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url = "../../%23shared;UIDVALIDITY=23452",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .url_base = {
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .host_name = "example.com",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .userid = "user",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen .mailbox = "INBOX/Trash",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 764 },
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_parsed = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "#shared",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 23452 }
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen },{
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url = "../../%23news;UIDVALIDITY=546/;UID=456",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_base = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Trash",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 23452,
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .uid = 65 },
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_parsed = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "#news",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 546,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uid = 456 }
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi },{
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url = ";UID=4767",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_base = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Trash",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 23452,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uid = 65 },
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_parsed = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Trash",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .uidvalidity = 23452,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uid = 4767 }
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen },{
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url = ";UID=4767",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_base = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX/Trash",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uidvalidity = 23452},
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_parsed = {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX/Trash",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uidvalidity = 23452,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 4767 }
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen },{
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url = "../;UID=4767",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_base = {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX/Trash",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uidvalidity = 23452,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 65 },
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_parsed = {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uidvalidity = 0,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 4767 }
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen },{
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url = "../;UID=4767/;SECTION=TEXT",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_base = {
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX/Trash",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uidvalidity = 23452,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 65,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .section = "1.2.3.MIME" },
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_parsed = {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX/Trash",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uidvalidity = 23452,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 4767,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .section = "TEXT" }
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen },{
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url = ";SECTION=TEXT",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_base = {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX/Drafts",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uidvalidity = 769,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 43,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .section = "1.2.3.MIME" },
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_parsed = {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX/Drafts",
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .uidvalidity = 769,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 43,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .section = "TEXT" }
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen },{
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url = "..",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_base = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Drafts",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 769,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uid = 43,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .section = "AA/BB" },
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_parsed = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Drafts",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 769,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uid = 43 }
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen },{
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url = "../;SECTION=CC",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_base = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Drafts",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 769,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uid = 43,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .section = "AA/BB" },
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_parsed = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Drafts",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 769,
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi .uid = 43,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .section = "CC" }
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen },{
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url = "CC",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_base = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Drafts",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 769,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uid = 43,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .section = "AA/BB" },
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_parsed = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Drafts",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 769,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uid = 43,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .section = "AA/CC" }
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen },{
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url = ";PARTIAL=1024.1024",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_base = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Drafts",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 769,
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uid = 43,
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .have_partial = TRUE, .partial_offset = 0, .partial_size = 1024 },
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .url_parsed = {
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .host_name = "example.com",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .userid = "user",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .mailbox = "INBOX/Drafts",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen .uidvalidity = 769,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 43,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .have_partial = TRUE, .partial_offset = 1024, .partial_size = 1024 }
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen },{
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url = "../CC/;PARTIAL=0.512",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_base = {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX/Drafts",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uidvalidity = 769,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 43,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .section = "AA/BB",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .have_partial = TRUE, .partial_offset = 1024, .partial_size = 1024 },
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_parsed = {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX/Drafts",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uidvalidity = 769,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 43,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .section = "AA/CC",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .have_partial = TRUE, .partial_offset = 0, .partial_size = 512 }
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen },{
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url = "imap://user@example.com/INBOX/;UID=377;URLAUTH=anonymous",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .flags = IMAP_URL_PARSE_ALLOW_URLAUTH,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_parsed = {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi .mailbox = "INBOX",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 377,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uauth_rumpurl = "imap://user@example.com/INBOX/;UID=377"
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen ";URLAUTH=anonymous",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uauth_access_application = "anonymous"}
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen },{
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url = "imap://user@example.com/INBOX/;UID=377"
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen ";URLAUTH=anonymous:internal:4142434445464748494A4B4C4D4E4F5051525354",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .flags = IMAP_URL_PARSE_ALLOW_URLAUTH,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_parsed = {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 377,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uauth_rumpurl = "imap://user@example.com/INBOX/;UID=377"
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen ";URLAUTH=anonymous",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uauth_access_application = "anonymous",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uauth_mechanism = "internal",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uauth_token = (const unsigned char *)"ABCDEFGHIJKLMNOPQRST",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uauth_token_size = 20}
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen },{
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url = "imap://user@example.com/INBOX/;UID=377"
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen ";EXPIRE=2011-02-12T12:45:14+01:00"
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen ";URLAUTH=user+frop:internal:4142434445464748494A4B4C4D4E4F5051525354",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .flags = IMAP_URL_PARSE_ALLOW_URLAUTH,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .url_parsed = {
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen .host_name = "example.com",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .userid = "user",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .mailbox = "INBOX",
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uid = 377,
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen .uauth_rumpurl = "imap://user@example.com/INBOX/;UID=377"
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen ";EXPIRE=2011-02-12T12:45:14+01:00;URLAUTH=user+frop",
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen .uauth_access_application = "user",
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen .uauth_access_user = "frop",
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen .uauth_mechanism = "internal",
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen .uauth_token = (const unsigned char *)"ABCDEFGHIJKLMNOPQRST",
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen .uauth_token_size = 20}
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen }
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen};
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainenstatic const unsigned int valid_url_test_count = N_ELEMENTS(valid_url_tests);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainenstatic void test_imap_url_valid(void)
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen{
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen unsigned int i;
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen for (i = 0; i < valid_url_test_count; i++) T_BEGIN {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen const char *url = valid_url_tests[i].url;
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen enum imap_url_parse_flags flags = valid_url_tests[i].flags;
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen const struct imap_url *urlt = &valid_url_tests[i].url_parsed;
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen const struct imap_url *urlb = &valid_url_tests[i].url_base;
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen struct imap_url *urlp;
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen const char *error = NULL;
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_begin(t_strdup_printf("imap url valid [%d]", i));
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen if (urlb->host_name == NULL) urlb = NULL;
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen if (imap_url_parse(url, urlb, flags, &urlp, &error) < 0)
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlp = NULL;
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out_reason(t_strdup_printf("imap_url_parse(%s)",
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen valid_url_tests[i].url), urlp != NULL, error);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen if (urlp != NULL) {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen if (urlp->host_name == NULL || urlt->host_name == NULL) {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out(t_strdup_printf("url->host_name = %s", urlp->host_name),
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlp->host_name == urlt->host_name);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen } else {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out(t_strdup_printf("url->host_name = %s", urlp->host_name),
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen strcmp(urlp->host_name, urlt->host_name) == 0);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen }
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen if (urlp->userid == NULL || urlt->userid == NULL) {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out(t_strdup_printf("url->userid = %s", urlp->userid),
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlp->userid == urlt->userid);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen } else {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out(t_strdup_printf("url->userid = %s", urlp->userid),
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen strcmp(urlp->userid, urlt->userid) == 0);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen }
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen if (urlp->auth_type == NULL || urlt->auth_type == NULL) {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out(t_strdup_printf("url->auth_type = %s", urlp->auth_type),
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlp->auth_type == urlt->auth_type);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen } else {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out(t_strdup_printf("url->auth_type = %s", urlp->auth_type),
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen strcmp(urlp->auth_type, urlt->auth_type) == 0);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen }
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen if (urlp->have_port) {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out("url->port = (unspecified)",
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlp->have_port == urlt->have_port);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen } else {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out(t_strdup_printf("url->port = %u", urlp->port),
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlp->have_port == urlt->have_port && urlp->port == urlt->port);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen }
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen if (!urlp->have_host_ip) {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out("url->host_ip = (unspecified)",
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlp->have_host_ip == urlt->have_host_ip);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen } else {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out("url->host_ip = (valid)",
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlp->have_host_ip == urlt->have_host_ip);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen }
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen if (urlp->mailbox == NULL || urlt->mailbox == NULL) {
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out(t_strdup_printf("url->mailbox = %s", urlp->mailbox),
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlp->mailbox == urlt->mailbox);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen } else {
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen test_out(t_strdup_printf("url->mailbox = %s", urlp->mailbox),
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen strcmp(urlp->mailbox, urlt->mailbox) == 0);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen }
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out(t_strdup_printf("url->uidvalidity = %u", urlp->uidvalidity),
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlp->uidvalidity == urlt->uidvalidity);
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen test_out(t_strdup_printf("url->uid = %u", urlp->uid),
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen urlp->uid == urlt->uid);
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen if (urlp->section == NULL || urlt->section == NULL) {
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen test_out(t_strdup_printf("url->section = %s", urlp->section),
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen urlp->section == urlt->section);
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen } else {
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen test_out(t_strdup_printf("url->section = %s", urlp->section),
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen strcmp(urlp->section, urlt->section) == 0);
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen }
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen test_out(t_strdup_printf("url->partial = %"PRIuUOFF_T".%"PRIuUOFF_T,
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen urlp->partial_offset, urlp->partial_size),
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen urlp->partial_offset == urlt->partial_offset &&
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen urlp->partial_size == urlt->partial_size);
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen if (urlp->search_program == NULL || urlt->search_program == NULL) {
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen test_out(t_strdup_printf(
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen "url->search_program = %s", urlp->search_program),
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen urlp->search_program == urlt->search_program);
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen } else {
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen test_out(t_strdup_printf(
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen "url->search_program = %s", urlp->search_program),
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen strcmp(urlp->search_program, urlt->search_program) == 0);
12e5ac049bd74f8b98d9dc62adcb0bf3217beef6Martti Rannanjärvi }
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen if (urlt->uauth_rumpurl != NULL) {
aeaf818613081b9a9ff8c9fd4306e8dbfab4fd86Timo Sirainen if (urlp->uauth_rumpurl == NULL) {
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen test_out(t_strdup_printf(
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen "url->uauth_rumpurl = %s", urlp->uauth_rumpurl), FALSE);
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen } else {
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen test_out(t_strdup_printf(
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen "url->uauth_rumpurl = %s", urlp->uauth_rumpurl),
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen strcmp(urlp->uauth_rumpurl, urlt->uauth_rumpurl) == 0);
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen if (urlp->uauth_access_application == NULL ||
11d72d764c104b4f1a8c44ec8a5fee420517645bTimo Sirainen urlt->uauth_access_application == NULL) {
7d800c558b4a40f11748d4ebfc2bf89eb743f03cTimo Sirainen test_out(t_strdup_printf("url->uauth_access_application = %s",
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen urlp->uauth_access_application),
6df4a174b4cbdc439ed435a0cdc71d4a0126d54aTimo Sirainen urlp->uauth_access_application == urlt->uauth_access_application);
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen } else {
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen test_out(t_strdup_printf("url->uauth_access_application = %s",
7195d775e5e943af90d24a615847c733a104e3d4Timo Sirainen urlp->uauth_access_application),
7a12331c6360968b141a0888e0bf04dd24145f23Timo Sirainen strcmp(urlp->uauth_access_application,
12fd7a30563f3256642070ef9528dda0d089cb41Timo Sirainen urlt->uauth_access_application) == 0);
a4392e9d312e3b5973fe5dbaee7028197a700ff0Timo Sirainen }
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen if (urlp->uauth_access_user == NULL ||
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen urlt->uauth_access_user == NULL) {
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen test_out(t_strdup_printf("url->uauth_access_user = %s",
39025a2dabfcfaeee3790988b9ea00d19887a3d3Timo Sirainen urlp->uauth_access_user),
urlp->uauth_access_user == urlt->uauth_access_user);
} else {
test_out(t_strdup_printf("url->uauth_access_user = %s",
urlp->uauth_access_user),
strcmp(urlp->uauth_access_user,
urlt->uauth_access_user) == 0);
}
if (urlp->uauth_mechanism == NULL || urlt->uauth_mechanism == NULL) {
test_out(t_strdup_printf(
"url->uauth_mechanism = %s", urlp->uauth_mechanism),
urlp->uauth_mechanism == urlt->uauth_mechanism);
} else {
test_out(t_strdup_printf(
"url->uauth_mechanism = %s", urlp->uauth_mechanism),
strcmp(urlp->uauth_mechanism, urlt->uauth_mechanism) == 0);
}
if (urlp->uauth_token == NULL || urlt->uauth_token == NULL) {
test_out(t_strdup_printf(
"url->uauth_token = %s", urlp->uauth_token),
urlp->uauth_token == urlt->uauth_token);
} else {
bool equal = urlp->uauth_token_size == urlt->uauth_token_size;
size_t i;
test_out(t_strdup_printf(
"url->uauth_token_size = %"PRIuSIZE_T, urlp->uauth_token_size),
equal);
if (equal) {
for (i = 0; i < urlp->uauth_token_size; i++) {
if (urlp->uauth_token[i] != urlt->uauth_token[i]) {
equal = FALSE;
break;
}
}
test_out(t_strdup_printf("url->uauth_token [index=%d]", (int)i),
equal);
}
}
}
}
test_end();
} T_END;
}
struct invalid_imap_url_test {
const char *url;
enum imap_url_parse_flags flags;
struct imap_url url_base;
};
static const struct invalid_imap_url_test invalid_url_tests[] = {
{
.url = "http://www.dovecot.org"
},{
.url = "imap:/INBOX"
},{
.url = "imap://user@example.com/INBOX",
.flags = IMAP_URL_PARSE_REQUIRE_RELATIVE,
.url_base = {
.host_name = "example.com",
.userid = "user" }
},{
.url = ""
},{
.url = "/INBOX/;UID=377"
},{
.url = "imap://user@example.com/INBOX/;UID=377/;SECTION=TEXT?ALL"
},{
.url = "imap://user@example.com/INBOX/?"
},{
.url = "imap://user@example.com/INBOX/#Fragment"
},{
.url = "imap://user@example.com/INBOX/\""
},{
.url = "imap:///INBOX"
},{
.url = "imap://[]/INBOX"
},{
.url = "imap://[v08.234:232:234:234:2221]/INBOX"
#ifdef HAVE_IPV6
},{
.url = "imap://[1::34a:34:234::6]/INBOX"
#endif
},{
.url = "imap://example%a.com/INBOX"
},{
.url = "imap://example.com%/INBOX"
},{
.url = "imap://example%00.com/INBOX"
},{
.url = "imap://example.com:65539/INBOX"
},{
.url = "imap://user;ATH=frop@example.com"
},{
.url = "imap://user;AUTH=frop;friep@example.com"
},{
.url = "imap://user;AUTH=@example.com"
},{
.url = "imap://user:password@example.com"
},{
.url = "imap://user;AUTH=A:B@example.com"
},{
.url = "imap://user%@example.com"
},{
.url = "imap://user%00@example.com"
},{
.url = "imap://user%ar;AUTH=*@example.com"
},{
.url = "imap://;AUTH=FR%etD@example.com"
},{
.url = "imap://user;AUTH=%@example.com"
},{
.url = "imap://user;AUTH=%00@example.com"
},{
.url = "imap://example.com/INBOX/%00/"
},{
.url = "imap://example.com/INBOX/%0r/"
},{
.url = "imap://example.com/INBOX/Trash/%/"
},{
.url = "imap://example.com/INBOX;UIDVALIDITY=23423;FROP=friep/"
},{
.url = "imap://example.com/INBOX;UIDVALIDITY=0/;UID=377"
},{
.url = "imap://example.com/INBOX;UIDVALIDITY=/"
},{
.url = "imap://example.com/INBOX;UIDVALIDITY=33a/"
},{
.url = "imap://example.com/INBOX;FROP=friep/"
},{
.url = "imap://example.com/INBOX/;UID=377;FROP=friep/"
},{
.url = "imap://example.com/INBOX/;UID=0/"
},{
.url = "imap://example.com/INBOX/;UID=/"
},{
.url = "imap://example.com/INBOX/;UID=5e6/"
},{
.url = "imap://example.com/INBOX/;UID=35/;SECTION=ALL;FROP=43/"
},{
.url = "imap://example.com/INBOX/;UID=35/;SECTION=/"
},{
.url = "imap://example.com/INBOX/;UID=34/;PARTIAL="
},{
.url = "imap://example.com/INBOX/;UID=34/;PARTIAL=0."
},{
.url = "imap://example.com/INBOX/;UID=34/;PARTIAL=0.e10"
},{
.url = "imap://example.com/INBOX/;UID=34/;PARTIAL=.3"
},{
.url = "imap://example.com/INBOX/;UID=34/;PARTIAL=5t4.3"
},{
.url = "imap://example.com/INBOX/;UID=34/;PARTIAL=0.0"
},{
.url = "imap://example.com/INBOX/;UID=34/;PARTIAL=0.23409823409820938409823"
},{
.url = "imap://example.com/INBOX/;UID=377/;FROP=34"
},{
.url = "imap://example.com/INBOX/;UID=377;FROP=34"
},{
.url = "imap://example.com/INBOX/;UID=377;EXPIRE=2010-02-02T12:00:12Z"
},{
.url = "imap://example.com/INBOX/;UID=377"
";URLAUTH=anonymous:internal:0ad89fafd79f54afe4523f45aadf2afe"
},{
.url = "imap://example.com/INBOX/;UID=377;EXPIRE=2011-15-02T00:00:00Z"
";URLAUTH=anonymous:internal:0ad89fafd79f54afe4523f45aadf2afe",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "imap://example.com/INBOX/;UID=377;EXPIRE=2011-10-02T00:00:00Z",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "/INBOX/;UID=377;EXPIRE=2011-10-02T00:00:00Z"
";URLAUTH=anonymous:internal:0ad89fafd79f54afe4523f45aadf2afe",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "imap://example.com/INBOX/;UID=377;URLAUTH=",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "imap://example.com/INBOX/;UID=377"
";URLAUTH=:internal:0ad89fafd79f54afe4523f45aadf2afe",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "imap://example.com/INBOX/;UID=377"
";URLAUTH=user+:internal:0ad89fafd79f54afe4523f45aadf2afe",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "imap://example.com/INBOX/;UID=377"
";URLAUTH=+frop:internal:0ad89fafd79f54afe4523f45aadf2afe",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "imap://example.com/INBOX/;UID=377;URLAUTH=anonymous:",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "imap://example.com/INBOX/;UID=377"
";URLAUTH=anonymous::0ad89fafd79f54afe4523f45aadf2afe",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "imap://example.com/INBOX/;UID=377;URLAUTH=anonymous:internal:",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "imap://example.com/INBOX/;UID=377"
";URLAUTH=anonymous:internal:fd79f54afe4523",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},{
.url = "imap://example.com/INBOX/;UID=377;EXPIRE=2011-10-02T00:00:00Z"
";URLAUTH=anonymous:internal:0ad89fafd79f54afe4523q45aadf2afe",
.flags = IMAP_URL_PARSE_ALLOW_URLAUTH
},
};
static const unsigned int invalid_url_test_count = N_ELEMENTS(invalid_url_tests);
static void test_imap_url_invalid(void)
{
unsigned int i;
for (i = 0; i < invalid_url_test_count; i++) T_BEGIN {
const char *url = invalid_url_tests[i].url;
enum imap_url_parse_flags flags = invalid_url_tests[i].flags;
const struct imap_url *urlb = &invalid_url_tests[i].url_base;
struct imap_url *urlp;
const char *error = NULL;
if (urlb->host_name == NULL)
urlb = NULL;
test_begin(t_strdup_printf("imap url invalid [%d]", i));
if (imap_url_parse(url, urlb, flags, &urlp, &error) < 0)
urlp = NULL;
test_out_reason(t_strdup_printf("parse %s", url), urlp == NULL, error);
test_end();
} T_END;
}
static const char *parse_create_url_tests[] = {
"imap://host.example.com/",
"imap://10.0.0.1/",
#ifdef HAVE_IPV6
"imap://[::1]/",
#endif
"imap://user@host.example.com/",
"imap://user@host.example.com:993/",
"imap://su%3auser@host.example.com/",
"imap://user;AUTH=PLAIN@host.example.com/",
"imap://user;AUTH=PLAIN@host.example.com/INBOX",
"imap://user;AUTH=PLAIN@host.example.com/INBOX/;UID=5",
"imap://user;AUTH=PLAIN@host.example.com/INBOX;UIDVALIDITY=15/;UID=5",
"imap://user;AUTH=PLAIN@host.example.com/INBOX;UIDVALIDITY=15/;UID=5"
"/;SECTION=TEXT",
"imap://user;AUTH=PLAIN@host.example.com/INBOX;UIDVALIDITY=15/;UID=5"
"/;SECTION=TEXT/;PARTIAL=1",
"imap://user;AUTH=PLAIN@host.example.com/INBOX;UIDVALIDITY=15/;UID=5"
"/;SECTION=TEXT/;PARTIAL=1.14",
"imap://user;AUTH=PLAIN@host.example.com/INBOX;UIDVALIDITY=15/;UID=5"
"/;SECTION=TEXT/;PARTIAL=1.14;URLAUTH=anonymous",
"imap://user;AUTH=PLAIN@host.example.com/INBOX;UIDVALIDITY=15/;UID=5"
"/;SECTION=TEXT/;PARTIAL=1.14;URLAUTH=user+username",
"imap://user;AUTH=PLAIN@host.example.com/INBOX/?SUBJECT%20%22Frop?%22",
"imap://host.%23example.com/",
"imap://user%3ba@host.example.com/",
"imap://user%40example.com@host.example.com/",
"imap://user%40example.com;AUTH=STR%23ANGE@host.example.com/",
"imap://user;AUTH=PLAIN@host.example.com/INBOX/Important%3bWork",
"imap://user@host.example.com/%23shared/news",
"imap://user@host.example.com/INBOX;UIDVALIDITY=15/;UID=5"
"/;SECTION=HEADER.FIELDS%20(DATE%20FROM)",
"imap://user@host.example.com/INBOX;UIDVALIDITY=15/;UID=5"
"/;SECTION=TEXT/;PARTIAL=1.14;URLAUTH=user+user%3bname",
};
static const unsigned int parse_create_url_test_count = N_ELEMENTS(parse_create_url_tests);
static void test_imap_url_parse_create(void)
{
unsigned int i;
for (i = 0; i < parse_create_url_test_count; i++) T_BEGIN {
const char *url = parse_create_url_tests[i];
struct imap_url *urlp;
const char *error = NULL;
test_begin(t_strdup_printf("imap url parse/create [%d]", i));
if (imap_url_parse
(url, NULL, IMAP_URL_PARSE_ALLOW_URLAUTH, &urlp, &error) < 0)
urlp = NULL;
test_out_reason(t_strdup_printf("parse %s", url), urlp != NULL, error);
if (urlp != NULL) {
const char *urlnew = imap_url_create(urlp);
test_out(t_strdup_printf
("create %s", urlnew), strcmp(url, urlnew) == 0);
}
test_end();
} T_END;
}
int main(void)
{
static void (*test_functions[])(void) = {
test_imap_url_valid,
test_imap_url_invalid,
test_imap_url_parse_create,
NULL
};
return test_run(test_functions);
}