test-dsync-proxy-server-cmd.c revision 885a3c2287ae3e5827aa580ea06b231de38abb47
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff/* Copyright (c) 2009-2011 Dovecot authors, see the included COPYING file */
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff#define ALL_MAIL_FLAGS "\\Answered \\Flagged \\Deleted \\Seen \\Draft \\Recent"
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroffstatic struct test_dsync_worker *test_worker;
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroffstatic struct dsync_proxy_server_command *cur_cmd;
fc2e20aa610641335a34aa9b6604c3c4ec0ae7c4Matthew Petroffstatic void out_clear(void)
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroffstatic int run_more(void)
87dacccf64bee38af81afde687844a37b57b5b9aKrzysztof Kosiński unsigned int i = 0;
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff while ((str = va_arg(va, const char *)) != NULL) {
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff cur_cmd = dsync_proxy_server_command_find(cmd_name);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(run_cmd("BOX-LIST", NULL) == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff /* \noselect mailbox */
87b68db8c76e3425a99bb2f05c70d7b25c50b654Johan B. C. Engelen test_assert(strcmp(str_c(out), t_strconcat(str_tabescape(box.name),
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff /* selectable mailbox */
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff memcpy(box.mailbox_guid.guid, test_mailbox_guid1, GUID_128_SIZE);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff box.highest_modseq = 18080787909545915012ULL;
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(strcmp(str_c(out), "foo/bar\t/\t0\t0\t"
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff "4275878552\t"
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff "4023233417\t"
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff "18080787909545915012\t"
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff "353\n") == 0);
87b68db8c76e3425a99bb2f05c70d7b25c50b654Johan B. C. Engelen /* last mailbox */
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(strcmp(str_c(out), "+\n") == 0);
f270813dc37789a47460406e15ffaed615e68648Matthew Petroff test_assert(run_cmd("SUBS-LIST", NULL) == 0);
4a9d7e999ef2ac1e50578dc13ce96ad52917325eMartin Owens /* subscription */
4a9d7e999ef2ac1e50578dc13ce96ad52917325eMartin Owens test_worker->subs_iter.next_subscription = &subs;
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(strcmp(str_c(out), "+\n") == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff /* unsubscription */
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff memcpy(unsubs.name_sha1.guid, test_mailbox_guid1,
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff unsubs.ns_prefix = "\t\001\r\nprefix2\t\001\n\r";
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_worker->subs_iter.next_unsubscription = &unsubs;
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(strcmp(str_c(out), t_strconcat(TEST_MAILBOX_GUID1, "\t",
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff str_tabescape(unsubs.ns_prefix), "\t987654321\n", NULL)) == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(strcmp(str_c(out), "+\n") == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff static const char *test_keywords[] = {
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(run_cmd("MSG-LIST", TEST_MAILBOX_GUID1, TEST_MAILBOX_GUID2, NULL) == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff /* no flags */
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff array_append(&test_worker->msg_iter.msgs, &test_msg, 1);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff "\t123\t98765432101234\t\t1234567890\n", NULL)) == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff /* all flags, some keywords */
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff array_append(&test_worker->msg_iter.msgs, &test_msg, 1);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(strcmp(str_c(out), "76\tguid\t123\t1\t"
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff /* last message */
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(strcmp(str_c(out), "+\n") == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroffstatic void test_dsync_proxy_box_create(void)
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(run_cmd("BOX-CREATE", "noselect", "/",
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(test_dsync_worker_next_box_event(test_worker, &event));
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(event.type == LAST_BOX_TYPE_CREATE);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(strcmp(event.box.name, "noselect") == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(event.box.flags == DSYNC_MAILBOX_FLAG_NOSELECT);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(run_cmd("BOX-CREATE", "selectable", "?",
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff "61", "2", TEST_MAILBOX_GUID2, "1234567890", "9876",
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff "4610", "28427847284728", "853", NULL) == 1);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(test_dsync_worker_next_box_event(test_worker, &event));
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(event.type == LAST_BOX_TYPE_CREATE);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(strcmp(event.box.name, "selectable") == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(memcmp(event.box.mailbox_guid.guid, test_mailbox_guid2, GUID_128_SIZE) == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(event.box.uid_validity == 1234567890);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(event.box.message_count == 4610);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(event.box.highest_modseq == 28427847284728);
87b68db8c76e3425a99bb2f05c70d7b25c50b654Johan B. C. Engelen test_assert(event.box.first_recent_uid == 853);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroffstatic void test_dsync_proxy_box_delete(void)
ed93708e7161e1b556017476a739316746cba604Matthew Petroff test_assert(run_cmd("BOX-DELETE", TEST_MAILBOX_GUID1, "4351", NULL) == 1);
87b68db8c76e3425a99bb2f05c70d7b25c50b654Johan B. C. Engelen test_assert(test_dsync_worker_next_box_event(test_worker, &event));
87b68db8c76e3425a99bb2f05c70d7b25c50b654Johan B. C. Engelen test_assert(event.type == LAST_BOX_TYPE_DELETE);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(memcmp(event.box.mailbox_guid.guid, test_mailbox_guid1, GUID_128_SIZE) == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(run_cmd("BOX-DELETE", TEST_MAILBOX_GUID2, "653", NULL) == 1);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(test_dsync_worker_next_box_event(test_worker, &event));
ed93708e7161e1b556017476a739316746cba604Matthew Petroff test_assert(event.type == LAST_BOX_TYPE_DELETE);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroff test_assert(memcmp(event.box.mailbox_guid.guid, test_mailbox_guid2, GUID_128_SIZE) == 0);
f85aa920f6540390f429822b45fa2ba3d3146fbeMatthew Petroffstatic void test_dsync_proxy_box_rename(void)
test_end();
static void test_dsync_proxy_box_update(void)
test_end();
static void test_dsync_proxy_box_select(void)
test_end();
static void test_dsync_proxy_msg_update(void)
test_end();
static void test_dsync_proxy_msg_uid_change(void)
test_end();
static void test_dsync_proxy_msg_expunge(void)
test_end();
static void test_dsync_proxy_msg_copy(void)
test_end();
static void test_dsync_proxy_msg_save(void)
const unsigned char *data;
test_end();
static struct dsync_proxy_server *
return server;
int main(void)
static void (*test_functions[])(void) = {
test_init();
return test_deinit();