2 // System.Net.CookieContainerTest - CookieContainer tests
5 // Gonzalo Paniagua Javier (gonzalo@novell.com)
6 // Daniel Nauck (dna(at)mono-project(dot)de)
8 // (c) Copyright 2004 Novell, Inc. (http://www.novell.com)
13 using System.Reflection;
15 using NUnit.Framework;
17 namespace MonoTests.System.Net
20 public class CookieContainerTest
23 public void TestCtor1 ()
25 CookieContainer c = new CookieContainer (234);
26 Assert.AreEqual (234, c.Capacity, "#1");
29 new CookieContainer (0);
31 } catch (ArgumentException) {
35 new CookieContainer (-10);
37 } catch (ArgumentException) {
42 public void TestCtor3 ()
44 CookieContainer c = new CookieContainer (100, 50, 1000);
45 Assert.AreEqual (100, c.Capacity, "#1");
46 Assert.AreEqual (50, c.PerDomainCapacity, "#2");
47 Assert.AreEqual (1000, c.MaxCookieSize, "#3");
50 new CookieContainer (100, 0, 1000);
52 } catch (ArgumentException) {
56 new CookieContainer (100, -1, 1000);
58 } catch (ArgumentException) {
61 c = new CookieContainer (100, int.MaxValue, 1000);
62 Assert.AreEqual (int.MaxValue, c.PerDomainCapacity, "#6");
65 new CookieContainer (100, 50, 0);
67 } catch (ArgumentException) {
71 new CookieContainer (100, 500, -4);
73 } catch (ArgumentException) {
78 public void TestDefaultLimits ()
80 Assert.AreEqual (4096, CookieContainer.DefaultCookieLengthLimit, "#1");
81 Assert.AreEqual (300, CookieContainer.DefaultCookieLimit, "#2");
82 Assert.AreEqual (20, CookieContainer.DefaultPerDomainCookieLimit, "#3");
86 public void TestCapacity ()
88 CookieContainer c = new CookieContainer ();
89 Assert.AreEqual (300, c.Capacity, "#1");
91 Assert.AreEqual (200, c.Capacity, "#2");
96 } catch (ArgumentOutOfRangeException) {
100 c.Capacity = 5; // must be >= PerDomainCapacity if PerDomainCapacity != Int32.MaxValue
102 } catch (ArgumentOutOfRangeException) {
107 public void TestMaxCookieSize ()
109 CookieContainer c = new CookieContainer ();
110 Assert.AreEqual (4096, c.MaxCookieSize, "#1");
113 c.MaxCookieSize = -5;
115 } catch (ArgumentOutOfRangeException) {
119 c.MaxCookieSize = -1;
121 } catch (ArgumentOutOfRangeException) {
124 c.MaxCookieSize = 80000;
125 Assert.AreEqual (80000, c.MaxCookieSize, "#4");
126 c.MaxCookieSize = int.MaxValue;
127 Assert.AreEqual (int.MaxValue, c.MaxCookieSize, "#5");
131 public void TestAdd_Args ()
133 CookieContainer cc = new CookieContainer ();
136 cc.Add ((Cookie) null);
138 } catch (ArgumentNullException) {
142 cc.Add ((CookieCollection) null);
144 } catch (ArgumentNullException) {
148 cc.Add (null, (Cookie) null);
150 } catch (ArgumentNullException) {
154 cc.Add (null, (CookieCollection) null);
156 } catch (ArgumentNullException) {
160 cc.Add (new Uri ("http://www.contoso.com"), (Cookie) null);
162 } catch (ArgumentNullException) {
166 cc.Add (new Uri ("http://www.contoso.com"), (CookieCollection) null);
168 } catch (ArgumentNullException) {
173 public void TestAdd_Cookie ()
175 CookieContainer cc = new CookieContainer ();
176 Uri uri = new Uri ("http://www.contoso.com");
177 cc.Add (uri, new CookieCollection ());
178 DateTime timestamp = DateTime.Now;
179 cc.Add (uri, new Cookie ("hola", "Adios"));
180 CookieCollection coll = cc.GetCookies (uri);
181 Cookie cookie = coll [0];
182 Assert.AreEqual ("", cookie.Comment, "#1");
183 Assert.IsNull (cookie.CommentUri, "#2");
184 Assert.AreEqual ("www.contoso.com", cookie.Domain, "#3");
185 Assert.IsFalse (cookie.Expired, "#4");
186 Assert.AreEqual (DateTime.MinValue, cookie.Expires, "#5");
187 Assert.AreEqual ("hola", cookie.Name, "#6");
188 Assert.AreEqual ("/", cookie.Path, "#7");
189 Assert.AreEqual ("", cookie.Port, "#8");
190 Assert.IsFalse (cookie.Secure, "#9");
192 TimeSpan ts = cookie.TimeStamp - timestamp;
193 if (ts.TotalMilliseconds > 500)
196 Assert.AreEqual ("Adios", cookie.Value, "#11");
197 Assert.AreEqual (0, cookie.Version, "#12");
201 [Category ("NotWorking")]
202 public void TestAddExpired_Cookie ()
204 CookieContainer cc = new CookieContainer ();
205 Uri uri = new Uri ("http://www.contoso.com");
206 DateTime expires = DateTime.Now.Subtract (new TimeSpan (1, 30, 0));
209 Cookie c1 = new Cookie ("TEST", "MyValue", "/", uri.Host);
210 c1.Expires = expires;
212 Assert.AreEqual (1, cc.Count, "#A1");
213 CookieCollection coll = cc.GetCookies (uri);
214 Assert.AreEqual (1, coll.Count, "#A1.1");
215 Cookie cookie = coll [0];
216 Assert.AreEqual ("", cookie.Comment, "#A2");
217 Assert.IsNull (cookie.CommentUri, "#A3");
218 Assert.AreEqual ("www.contoso.com", cookie.Domain, "#A4");
219 Assert.IsFalse (cookie.Expired, "#A5");
220 Assert.AreEqual (DateTime.MinValue, cookie.Expires, "#A6");
221 Assert.AreEqual ("TEST", cookie.Name, "#A7");
222 Assert.AreEqual ("MyValue", cookie.Value, "#A8");
223 Assert.AreEqual ("/", cookie.Path, "#A9");
224 Assert.AreEqual ("", cookie.Port, "#A10");
225 Assert.IsFalse (cookie.Secure, "#A11");
228 Cookie c2 = new Cookie ("TEST2", "MyValue2");
229 c2.Expires = expires;
231 Assert.AreEqual (1, cc.Count, "#B1");
232 coll = cc.GetCookies (uri);
233 Assert.AreEqual (1, coll.Count, "#B1.1");
235 Assert.AreEqual ("", cookie.Comment, "#B2");
236 Assert.IsNull (cookie.CommentUri, "#B3");
237 Assert.AreEqual ("www.contoso.com", cookie.Domain, "#B4");
238 Assert.IsFalse (cookie.Expired, "#B5");
239 Assert.AreEqual (DateTime.MinValue, cookie.Expires, "#B6");
240 Assert.AreEqual ("TEST", cookie.Name, "#B7");
241 Assert.AreEqual ("MyValue", cookie.Value, "#B8");
242 Assert.AreEqual ("/", cookie.Path, "#B9");
243 Assert.AreEqual ("", cookie.Port, "#B10");
244 Assert.IsFalse (cookie.Secure, "#B11");
247 Cookie c3 = new Cookie ("TEST3", "MyValue3");
249 Assert.AreEqual (2, cc.Count, "#C1");
250 coll = cc.GetCookies (uri);
251 Assert.AreEqual (2, coll.Count, "#C1.1");
253 Assert.AreEqual ("", cookie.Comment, "#C2");
254 Assert.IsNull (cookie.CommentUri, "#C3");
255 Assert.AreEqual ("www.contoso.com", cookie.Domain, "#C4");
256 Assert.IsFalse (cookie.Expired, "#C5");
257 Assert.AreEqual (DateTime.MinValue, cookie.Expires, "#C6");
258 Assert.AreEqual ("TEST3", cookie.Name, "#C7");
259 Assert.AreEqual ("MyValue3", cookie.Value, "#C8");
260 Assert.AreEqual ("/", cookie.Path, "#C9");
261 Assert.AreEqual ("", cookie.Port, "#C10");
262 Assert.IsFalse (cookie.Secure, "#C11");
264 Assert.AreEqual (2, cc.Count, "#D1");
265 coll = cc.GetCookies (new Uri("http://contoso.com"));
266 Assert.AreEqual (0, coll.Count, "#D1.1");
269 Cookie c4 = new Cookie ("TEST4", "MyValue4", "/", ".contoso.com");
271 Assert.AreEqual (3, cc.Count, "#E1");
272 coll = cc.GetCookies (uri);
273 Assert.AreEqual (3, coll.Count, "#E1.1");
276 Cookie c5 = new Cookie ("TEST5", "MyValue5", "/", ".contoso.com");
277 c5.Expires = expires;
279 Assert.AreEqual (4, cc.Count, "#F1");
280 coll = cc.GetCookies (uri);
281 Assert.AreEqual (4, coll.Count, "#F1.1");
282 cookie = coll ["TEST5"];
283 Assert.AreEqual (".contoso.com", cookie.Domain, "#F2");
284 Assert.IsFalse (cookie.Expired, "#F3");
285 Assert.AreEqual (DateTime.MinValue, cookie.Expires, "#F4");
286 Assert.AreEqual ("TEST5", cookie.Name, "#F5");
287 Assert.AreEqual ("MyValue5", cookie.Value, "#F6");
288 Assert.AreEqual ("/", cookie.Path, "#F7");
291 Cookie c6 = new Cookie ("TEST6", "MyValue6", "/", ".contoso.com");
292 c5.Expires = expires;
294 Assert.AreEqual (5, cc.Count, "#G1");
295 coll = cc.GetCookies (uri);
296 Assert.AreEqual (5, coll.Count, "#G1.1");
297 cookie = coll ["TEST6"];
298 Assert.AreEqual (".contoso.com", cookie.Domain, "#G2");
299 Assert.IsFalse (cookie.Expired, "#G3");
300 Assert.AreEqual (DateTime.MinValue, cookie.Expires, "#G4");
301 Assert.AreEqual ("TEST6", cookie.Name, "#G5");
302 Assert.AreEqual ("MyValue6", cookie.Value, "#G6");
303 Assert.AreEqual ("/", cookie.Path, "#G7");
307 public void TestGetCookies_Args ()
309 CookieContainer cc = new CookieContainer ();
311 cc.GetCookies (null);
313 } catch (ArgumentNullException) {
318 public void TestSetCookies_Args ()
320 CookieContainer cc = new CookieContainer ();
322 cc.SetCookies (null, "");
324 } catch (ArgumentNullException) {
328 cc.SetCookies (new Uri ("http://www.contoso.com"), null);
330 } catch (ArgumentNullException) {
334 cc.SetCookies (new Uri ("http://www.contoso.com"), "=lalala");
336 } catch (CookieException) {
339 cc.SetCookies (new Uri ("http://www.contoso.com"), "");
343 public void GetCookies ()
345 CookieContainer container = new CookieContainer ();
346 container.Add (new Cookie ("name", "value1", "/path", "localhost"));
347 container.Add (new Cookie ("name", "value2", "/path/sub", "localhost"));
349 CookieCollection cookies = container.GetCookies (
350 new Uri ("http://localhost/path/sub"));
351 Assert.IsNotNull (cookies, "#A1");
352 Assert.AreEqual (2, cookies.Count, "#A2");
354 Cookie cookie = cookies [0];
355 Assert.AreEqual ("name", cookie.Name, "#B1");
356 Assert.AreEqual ("value2", cookie.Value, "#B2");
357 Assert.AreEqual ("/path/sub", cookie.Path, "#B3");
358 Assert.AreEqual ("localhost", cookie.Domain, "#B4");
360 cookie = cookies [1];
361 Assert.AreEqual ("name", cookie.Name, "#C1");
362 Assert.AreEqual ("value1", cookie.Value, "#C2");
363 Assert.AreEqual ("/path", cookie.Path, "#C3");
364 Assert.AreEqual ("localhost", cookie.Domain, "#C4");
366 cookies = container.GetCookies (new Uri ("http://localhost/path"));
367 Assert.IsNotNull (cookies, "#D1");
368 Assert.AreEqual (1, cookies.Count, "#D2");
370 cookie = cookies [0];
371 Assert.AreEqual ("name", cookie.Name, "#E1");
372 Assert.AreEqual ("value1", cookie.Value, "#E2");
373 Assert.AreEqual ("/path", cookie.Path, "#E3");
374 Assert.AreEqual ("localhost", cookie.Domain, "#E4");
376 cookies = container.GetCookies (new Uri ("http://localhost/whatever"));
377 Assert.IsNotNull (cookies, "#F1");
378 Assert.AreEqual (0, cookies.Count, "#F2");
382 [ExpectedException (typeof (ArgumentNullException))]
383 public void GetCookies_Uri_Null ()
385 CookieContainer container = new CookieContainer ();
386 container.GetCookies ((Uri) null);