1
/* Copyright (c) 2009-2011 Dovecot authors, see the included COPYING file */
5
#include "mail-storage-private.h"
6
#include "test-mail-storage.h"
8
extern struct mail_vfuncs test_mail_vfuncs;
11
test_mailbox_mail_alloc(struct mailbox_transaction_context *t,
12
enum mail_fetch_field wanted_fields ATTR_UNUSED,
13
struct mailbox_header_lookup_ctx *wanted_headers ATTR_UNUSED)
15
struct mail_private *mail;
18
pool = pool_alloconly_create("test mail", 1024);
19
mail = p_new(pool, struct mail_private, 1);
20
mail->mail.box = t->box;
21
mail->mail.transaction = t;
22
mail->v = test_mail_vfuncs;
24
p_array_init(&mail->module_contexts, pool, 5);
28
static void test_mail_free(struct mail *mail)
30
struct mail_private *pmail = (struct mail_private *)mail;
32
pool_unref(&pmail->pool);
35
static void test_mail_set_seq(struct mail *mail, uint32_t seq)
40
mail->expunged = TRUE;
41
mail->has_nuls = FALSE;
42
mail->has_no_nuls = FALSE;
45
static bool test_mail_set_uid(struct mail *mail, uint32_t uid)
47
test_mail_set_seq(mail, uid);
51
static void test_mail_set_uid_cache_updates(struct mail *mail ATTR_UNUSED,
56
static enum mail_flags test_mail_get_flags(struct mail *mail ATTR_UNUSED)
61
static const char *const *
62
test_mail_get_keywords(struct mail *mail ATTR_UNUSED)
64
return t_new(const char *, 1);
67
static const ARRAY_TYPE(keyword_indexes) *
68
test_mail_get_keyword_indexes(struct mail *mail ATTR_UNUSED)
70
ARRAY_TYPE(keyword_indexes) *kw_indexes;
72
kw_indexes = t_new(ARRAY_TYPE(keyword_indexes), 1);
73
t_array_init(kw_indexes, 1);
74
(void)array_append_space(kw_indexes);
78
static uint64_t test_mail_get_modseq(struct mail *mail ATTR_UNUSED)
84
test_mail_get_parts(struct mail *mail ATTR_UNUSED,
85
struct message_part **parts_r ATTR_UNUSED)
91
test_mail_get_date(struct mail *mail ATTR_UNUSED,
92
time_t *date_r ATTR_UNUSED, int *timezone_r ATTR_UNUSED)
98
test_mail_get_received_date(struct mail *mail ATTR_UNUSED,
99
time_t *date_r ATTR_UNUSED)
105
test_mail_get_save_date(struct mail *mail ATTR_UNUSED,
106
time_t *date_r ATTR_UNUSED)
112
test_mail_get_test_mail_size(struct mail *mail ATTR_UNUSED,
113
uoff_t *size_r ATTR_UNUSED)
119
test_mail_get_physical_size(struct mail *mail ATTR_UNUSED,
120
uoff_t *size_r ATTR_UNUSED)
126
test_mail_get_first_header(struct mail *mail ATTR_UNUSED,
127
const char *field ATTR_UNUSED,
128
bool decode_to_utf8 ATTR_UNUSED,
129
const char **value_r)
136
test_mail_get_headers(struct mail *mail ATTR_UNUSED,
137
const char *field ATTR_UNUSED,
138
bool decode_to_utf8 ATTR_UNUSED,
139
const char *const **value_r)
146
test_mail_get_header_stream(struct mail *mail ATTR_UNUSED,
147
struct mailbox_header_lookup_ctx *headers ATTR_UNUSED,
148
struct istream **stream_r ATTR_UNUSED)
154
test_mail_get_stream(struct mail *mail ATTR_UNUSED,
155
struct message_size *hdr_size ATTR_UNUSED,
156
struct message_size *body_size ATTR_UNUSED,
157
struct istream **stream_r ATTR_UNUSED)
163
test_mail_get_special(struct mail *mail ATTR_UNUSED,
164
enum mail_fetch_field field ATTR_UNUSED,
165
const char **value_r ATTR_UNUSED)
170
static struct mail *test_mail_get_real_mail(struct mail *mail)
176
test_mail_update_flags(struct mail *mail ATTR_UNUSED,
177
enum modify_type modify_type ATTR_UNUSED,
178
enum mail_flags flags ATTR_UNUSED)
183
test_mail_update_keywords(struct mail *mail ATTR_UNUSED,
184
enum modify_type modify_type ATTR_UNUSED,
185
struct mail_keywords *keywords ATTR_UNUSED)
189
static void test_mail_update_modseq(struct mail *mail ATTR_UNUSED,
190
uint64_t min_modseq ATTR_UNUSED)
194
static void test_mail_expunge(struct mail *mail ATTR_UNUSED)
198
static void test_mail_parse(struct mail *mail ATTR_UNUSED,
199
bool parse_body ATTR_UNUSED)
204
test_mail_set_cache_corrupted(struct mail *mail ATTR_UNUSED,
205
enum mail_fetch_field field ATTR_UNUSED)
209
struct mail_vfuncs test_mail_vfuncs = {
214
test_mail_set_uid_cache_updates,
217
test_mail_get_keywords,
218
test_mail_get_keyword_indexes,
219
test_mail_get_modseq,
222
test_mail_get_received_date,
223
test_mail_get_save_date,
224
test_mail_get_test_mail_size,
225
test_mail_get_physical_size,
226
test_mail_get_first_header,
227
test_mail_get_headers,
228
test_mail_get_header_stream,
229
test_mail_get_stream,
230
test_mail_get_special,
231
test_mail_get_real_mail,
232
test_mail_update_flags,
233
test_mail_update_keywords,
234
test_mail_update_modseq,
238
test_mail_set_cache_corrupted,