annotate src/lib-http/test-http-date.c @ 22633:9284bdc3c5c5

director: Don't recreate timeout on every user lookup Recreate it only when the timeout should change.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sat, 04 Nov 2017 01:34:02 +0200
parents 2e2563132d5f
children cb108f786fb4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21390
2e2563132d5f Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 19552
diff changeset
1 /* Copyright (c) 2013-2017 Dovecot authors, see the included COPYING file */
15196
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
2
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
3 #include "test-lib.h"
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
4 #include "test-common.h"
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
5 #include "http-date.h"
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
6
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
7 #include <time.h>
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
8
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
9 struct http_date_test {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
10 const char *date_in;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
11 const char *date_out;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
12
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
13 struct tm tm;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
14 };
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
15
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
16 /* Valid date tests */
17399
d410e5ab6dd8 lib-http: trivial sparse cleanups - statics and explicit NULLs
Phil Carmody <phil@dovecot.fi>
parents: 17130
diff changeset
17 static const struct http_date_test valid_date_tests[] = {
15196
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
18 /* Preferred format: */
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
19 {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
20 .date_in = "Sun, 11 Nov 2007 09:42:43 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
21 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
22 .tm_year = 107, .tm_mon = 10, .tm_mday = 11,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
23 .tm_hour = 9, .tm_min = 42, .tm_sec = 43 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
24 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
25 .date_in = "Mon, 17 Aug 1992 13:06:27 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
26 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
27 .tm_year = 92, .tm_mon = 7, .tm_mday = 17,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
28 .tm_hour = 13, .tm_min = 06, .tm_sec = 27 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
29 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
30 .date_in = "Tue, 03 Sep 1974 04:38:08 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
31 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
32 .tm_year = 74, .tm_mon = 8, .tm_mday = 3,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
33 .tm_hour = 4, .tm_min = 38, .tm_sec = 8 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
34 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
35 .date_in = "Wed, 07 May 1980 06:20:42 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
36 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
37 .tm_year = 80, .tm_mon = 4, .tm_mday = 7,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
38 .tm_hour = 6, .tm_min = 20, .tm_sec = 42 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
39 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
40 .date_in = "Thu, 15 Oct 1987 18:30:14 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
41 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
42 .tm_year = 87, .tm_mon = 9, .tm_mday = 15,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
43 .tm_hour = 18, .tm_min = 30, .tm_sec = 14 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
44 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
45 .date_in = "Fri, 20 Dec 1996 00:20:07 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
46 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
47 .tm_year = 96, .tm_mon = 11, .tm_mday = 20,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
48 .tm_hour = 0, .tm_min = 20, .tm_sec = 7 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
49 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
50 .date_in = "Sat, 19 Jan 2036 19:52:18 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
51 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
52 .tm_year = 136, .tm_mon = 0, .tm_mday = 19,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
53 .tm_hour = 19, .tm_min = 52, .tm_sec = 18 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
54 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
55 .date_in = "Mon, 17 Apr 2006 14:41:45 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
56 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
57 .tm_year = 106, .tm_mon = 3, .tm_mday = 17,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
58 .tm_hour = 14, .tm_min = 41, .tm_sec = 45 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
59 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
60 .date_in = "Sun, 06 Mar 2011 16:18:41 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
61 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
62 .tm_year = 111, .tm_mon = 2, .tm_mday = 6,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
63 .tm_hour = 16, .tm_min = 18, .tm_sec = 41 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
64 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
65 .date_in = "Sat, 14 Jun 1975 16:09:30 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
66 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
67 .tm_year = 75, .tm_mon = 5, .tm_mday = 14,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
68 .tm_hour = 16, .tm_min = 9, .tm_sec = 30 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
69 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
70 .date_in = "Fri, 05 Feb 2027 06:53:58 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
71 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
72 .tm_year = 127, .tm_mon = 1, .tm_mday = 5,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
73 .tm_hour = 6, .tm_min = 53, .tm_sec = 58 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
74 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
75 .date_in = "Mon, 09 Jul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
76 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
77 .tm_year = 118, .tm_mon = 6, .tm_mday = 9,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
78 .tm_hour = 2, .tm_min = 24, .tm_sec = 29 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
79
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
80 /* Obsolete formats: */
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
81 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
82 .date_in = "Wednesday, 02-Jun-82 16:06:23 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
83 .date_out = "Wed, 02 Jun 1982 16:06:23 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
84 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
85 .tm_year = 82, .tm_mon = 5, .tm_mday = 2,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
86 .tm_hour = 16, .tm_min = 6, .tm_sec = 23 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
87 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
88 .date_in = "Thursday, 23-May-02 12:16:24 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
89 .date_out = "Thu, 23 May 2002 12:16:24 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
90 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
91 .tm_year = 102, .tm_mon = 4, .tm_mday = 23,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
92 .tm_hour = 12, .tm_min = 16, .tm_sec = 24 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
93 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
94 .date_in = "Sun Nov 6 08:49:37 1994",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
95 .date_out = "Sun, 06 Nov 1994 08:49:37 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
96 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
97 .tm_year = 94, .tm_mon = 10, .tm_mday = 6,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
98 .tm_hour = 8, .tm_min = 49, .tm_sec = 37 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
99 },{
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
100 .date_in = "Mon Apr 30 02:45:01 2012",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
101 .date_out = "Mon, 30 Apr 2012 02:45:01 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
102 .tm = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
103 .tm_year = 112, .tm_mon = 3, .tm_mday = 30,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
104 .tm_hour = 2, .tm_min = 45, .tm_sec = 01 },
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
105 }
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
106 };
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
107
17399
d410e5ab6dd8 lib-http: trivial sparse cleanups - statics and explicit NULLs
Phil Carmody <phil@dovecot.fi>
parents: 17130
diff changeset
108 static const unsigned int valid_date_test_count = N_ELEMENTS(valid_date_tests);
15196
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
109
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
110 static void test_http_date_valid(void)
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
111 {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
112 unsigned int i;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
113
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
114 for (i = 0; i < valid_date_test_count; i++) T_BEGIN {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
115 const char *date_in, *date_out, *pdate_out;
17399
d410e5ab6dd8 lib-http: trivial sparse cleanups - statics and explicit NULLs
Phil Carmody <phil@dovecot.fi>
parents: 17130
diff changeset
116 const struct tm *tm = &valid_date_tests[i].tm;
d410e5ab6dd8 lib-http: trivial sparse cleanups - statics and explicit NULLs
Phil Carmody <phil@dovecot.fi>
parents: 17130
diff changeset
117 struct tm ptm;
15196
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
118 bool result;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
119
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
120 date_in = valid_date_tests[i].date_in;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
121 date_out = valid_date_tests[i].date_out == NULL ?
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
122 date_in : valid_date_tests[i].date_out;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
123
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
124 test_begin(t_strdup_printf("http date valid [%d]", i));
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
125
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
126 result = http_date_parse_tm
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
127 ((const unsigned char *)date_in, strlen(date_in), &ptm);
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
128 test_out(t_strdup_printf("parse %s", date_in), result);
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
129 if (result) {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
130 bool equal = tm->tm_year == ptm.tm_year && tm->tm_mon == ptm.tm_mon &&
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
131 tm->tm_mday == ptm.tm_mday && tm->tm_hour == ptm.tm_hour &&
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
132 tm->tm_min == ptm.tm_min && tm->tm_sec == ptm.tm_sec;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
133
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
134 test_out("valid timestamp", equal);
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
135
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
136 pdate_out = http_date_create_tm(&ptm);
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
137 test_out_reason("valid create", strcmp(date_out, pdate_out) == 0,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
138 pdate_out);
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
139 }
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
140
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
141 test_end();
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
142 } T_END;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
143 }
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
144
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
145 /* Invalid date tests */
17399
d410e5ab6dd8 lib-http: trivial sparse cleanups - statics and explicit NULLs
Phil Carmody <phil@dovecot.fi>
parents: 17130
diff changeset
146 static const char *invalid_date_tests[] = {
15196
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
147 "Mom, 09 Jul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
148 "Mon; 09 Jul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
149 "Mon, 09 Jul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
150 "Mon, 90 Jul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
151 "Mon, 090 Jul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
152 "Mon, 09 Jul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
153 "Mon, 09 Lul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
154 "Mon, 09 July 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
155 "Mon, 09 Jul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
156 "Mon, 09 Jul 22018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
157 "Mon, 09 Jul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
158 "Mon, 09 Jul 2018 032:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
159 "Mon, 09 Jul 2018 02:224:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
160 "Mon, 09 Jul 2018 02:24:239 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
161 "Mon, 09 Jul 2018 02;24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
162 "Mon, 09 Jul 2018 02:24;29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
163 "Mon, 09 Jul 2018 45:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
164 "Mon, 09 Jul 2018 02:90:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
165 "Mon, 09 Jul 2018 02:24:84 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
166 "Mon, 09 Jul 2018 02:24:29 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
167 "Mon, 09 Jul 2018 02:24:29 UTC",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
168 "Mon, 09 Jul 2018 02:24:29 GM",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
169 "Mon, 09 Jul 2018 02:24:29 GMTREE",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
170 "Thu, 23-May-02 12:16:24 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
171 "Thursday; 23-May-02 12:16:24 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
172 "Thursday, 223-May-02 12:16:24 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
173 "Thursday, 23-Mays-02 12:16:24 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
174 "Thursday, 23-May-2002 12:16:24 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
175 "Thursday, 23-May-02 122:16:24 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
176 "Thursday, 23-May-02 12:164:24 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
177 "Thursday, 23-May-02 12:16:244 GMT",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
178 "Thursday, 23-May-02 12:16:24 EET",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
179 "Sunday Nov 6 08:49:37 1994",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
180 "Sun Nov 6 08:49:37 1994",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
181 "Sun November 6 08:49:37 1994",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
182 "Sun Nov 6 08:49:37 1994",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
183 "Sun Nov 16 08:49:37 1994",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
184 "Sun Nov 16 08:49:37 1994",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
185 "Sun Nov 6 082:49:37 1994",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
186 "Sun Nov 6 08:492:37 1994",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
187 "Sun Nov 6 08:49:137 1994",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
188 "Sun Nov 6 08:49:37 19914",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
189 "Sun Nov 6 08:49:37 0000",
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
190 };
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
191
17399
d410e5ab6dd8 lib-http: trivial sparse cleanups - statics and explicit NULLs
Phil Carmody <phil@dovecot.fi>
parents: 17130
diff changeset
192 static const unsigned int invalid_date_test_count = N_ELEMENTS(invalid_date_tests);
15196
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
193
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
194 static void test_http_date_invalid(void)
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
195 {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
196 unsigned int i;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
197
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
198 for (i = 0; i < invalid_date_test_count; i++) T_BEGIN {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
199 const char *date_in;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
200 struct tm tm;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
201 bool result;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
202
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
203 date_in = invalid_date_tests[i];
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
204
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
205 test_begin(t_strdup_printf("http date invalid [%d]", i));
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
206
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
207 result = http_date_parse_tm
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
208 ((const unsigned char *)date_in, strlen(date_in), &tm);
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
209 test_out(t_strdup_printf("parse %s", date_in), !result);
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
210
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
211 test_end();
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
212 } T_END;
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
213 }
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
214
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
215 int main(void)
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
216 {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
217 static void (*test_functions[])(void) = {
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
218 test_http_date_valid,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
219 test_http_date_invalid,
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
220 NULL
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
221 };
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
222 return test_run(test_functions);
d927aaaf9252 Add HTTP date parsing support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
223 }