Mercurial > dovecot > core-2.2
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 |
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 } |