ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
UtilTest.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Sabre\HTTP;
4 
6 
7  function testParseHTTPDate() {
8 
9  $times = [
10  'Wed, 13 Oct 2010 10:26:00 GMT',
11  'Wednesday, 13-Oct-10 10:26:00 GMT',
12  'Wed Oct 13 10:26:00 2010',
13  ];
14 
15  $expected = 1286965560;
16 
17  foreach ($times as $time) {
19  $this->assertEquals($expected, $result->format('U'));
20  }
21 
22  $result = Util::parseHTTPDate('Wed Oct 6 10:26:00 2010');
23  $this->assertEquals(1286360760, $result->format('U'));
24 
25  }
26 
27  function testParseHTTPDateFail() {
28 
29  $times = [
30  //random string
31  'NOW',
32  // not-GMT timezone
33  'Wednesday, 13-Oct-10 10:26:00 UTC',
34  // No space before the 6
35  'Wed Oct 6 10:26:00 2010',
36  // Invalid day
37  'Wed Oct 0 10:26:00 2010',
38  'Wed Oct 32 10:26:00 2010',
39  'Wed, 0 Oct 2010 10:26:00 GMT',
40  'Wed, 32 Oct 2010 10:26:00 GMT',
41  'Wednesday, 32-Oct-10 10:26:00 GMT',
42  // Invalid hour
43  'Wed, 13 Oct 2010 24:26:00 GMT',
44  'Wednesday, 13-Oct-10 24:26:00 GMT',
45  'Wed Oct 13 24:26:00 2010',
46  ];
47 
48  foreach ($times as $time) {
49  $this->assertFalse(Util::parseHTTPDate($time), 'We used the string: ' . $time);
50  }
51 
52  }
53 
54  function testTimezones() {
55 
56  $default = date_default_timezone_get();
57  date_default_timezone_set('Europe/Amsterdam');
58 
59  $this->testParseHTTPDate();
60 
61  date_default_timezone_set($default);
62 
63  }
64 
65  function testToHTTPDate() {
66 
67  $dt = new \DateTime('2011-12-10 12:00:00 +0200');
68 
69  $this->assertEquals(
70  'Sat, 10 Dec 2011 10:00:00 GMT',
71  Util::toHTTPDate($dt)
72  );
73 
74  }
75 
79  function testNegotiate($acceptHeader, $available, $expected) {
80 
81  $this->assertEquals(
82  $expected,
83  Util::negotiate($acceptHeader, $available)
84  );
85 
86  }
87 
88  function negotiateData() {
89 
90  return [
91  [ // simple
92  'application/xml',
93  ['application/xml'],
94  'application/xml',
95  ],
96  [ // no header
97  null,
98  ['application/xml'],
99  'application/xml',
100  ],
101  [ // 2 options
102  'application/json',
103  ['application/xml', 'application/json'],
104  'application/json',
105  ],
106  [ // 2 choices
107  'application/json, application/xml',
108  ['application/xml'],
109  'application/xml',
110  ],
111  [ // quality
112  'application/xml;q=0.2, application/json',
113  ['application/xml', 'application/json'],
114  'application/json',
115  ],
116  [ // wildcard
117  'image/jpeg, image/png, */*',
118  ['application/xml', 'application/json'],
119  'application/xml',
120  ],
121  [ // wildcard + quality
122  'image/jpeg, image/png; q=0.5, */*',
123  ['application/xml', 'application/json', 'image/png'],
124  'application/xml',
125  ],
126  [ // no match
127  'image/jpeg',
128  ['application/xml'],
129  null,
130  ],
131  [ // This is used in sabre/dav
132  'text/vcard; version=4.0',
133  [
134  // Most often used mime-type. Version 3
135  'text/x-vcard',
136  // The correct standard mime-type. Defaults to version 3 as
137  // well.
138  'text/vcard',
139  // vCard 4
140  'text/vcard; version=4.0',
141  // vCard 3
142  'text/vcard; version=3.0',
143  // jCard
144  'application/vcard+json',
145  ],
146  'text/vcard; version=4.0',
147 
148  ],
149  [ // rfc7231 example 1
150  'audio/*; q=0.2, audio/basic',
151  [
152  'audio/pcm',
153  'audio/basic',
154  ],
155  'audio/basic',
156  ],
157  [ // Lower quality after
158  'audio/pcm; q=0.2, audio/basic; q=0.1',
159  [
160  'audio/pcm',
161  'audio/basic',
162  ],
163  'audio/pcm',
164  ],
165  [ // Random parameter, should be ignored
166  'audio/pcm; hello; q=0.2, audio/basic; q=0.1',
167  [
168  'audio/pcm',
169  'audio/basic',
170  ],
171  'audio/pcm',
172  ],
173  [ // No whitepace after type, should pick the one that is the most specific.
174  'text/vcard;version=3.0, text/vcard',
175  [
176  'text/vcard',
177  'text/vcard; version=3.0'
178  ],
179  'text/vcard; version=3.0',
180  ],
181  [ // Same as last one, but order is different
182  'text/vcard, text/vcard;version=3.0',
183  [
184  'text/vcard; version=3.0',
185  'text/vcard',
186  ],
187  'text/vcard; version=3.0',
188  ],
189  [ // Charset should be ignored here.
190  'text/vcard; charset=utf-8; version=3.0, text/vcard',
191  [
192  'text/vcard',
193  'text/vcard; version=3.0'
194  ],
195  'text/vcard; version=3.0',
196  ],
197  [ // Undefined offset issue.
198  'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2',
199  ['application/xml', 'application/json', 'image/png'],
200  'application/xml',
201  ],
202 
203  ];
204 
205  }
206 }
$result
static negotiate($acceptHeaderValue, array $availableOptions)
Deprecated! Use negotiateContentType.
Definition: Util.php:38
static toHTTPDate(\DateTime $dateTime)
Transforms a DateTime object to HTTP&#39;s most common date format.
Definition: Util.php:69
testNegotiate($acceptHeader, $available, $expected)
negotiateData
Definition: UtilTest.php:79
$time
Definition: cron.php:21
static parseHTTPDate($dateHeader)
Parses a RFC2616-compatible date string.
Definition: Util.php:53
$default
Definition: build.php:20