2 // CookieTest.cs - NUnit Test Cases for System.Net.Cookie
5 // Lawrence Pit (loz@cable.a2000.nl)
6 // Martin Willemoes Hansen (mwh@sysrq.dk)
7 // Daniel Nauck (dna(at)mono-project(dot)de)
9 // (C) 2003 Martin Willemoes Hansen
12 using NUnit.Framework;
16 namespace MonoTests.System.Net
20 public class CookieTest
23 public void PublicFields ()
25 Cookie c = new Cookie ();
26 Assert.AreEqual (string.Empty, c.Name, "#A1");
27 Assert.AreEqual (string.Empty, c.Value, "#A2");
28 Assert.AreEqual (string.Empty, c.Domain, "#A3");
29 Assert.AreEqual (string.Empty, c.Port, "#A4");
30 Assert.AreEqual (string.Empty, c.Comment, "#A5");
31 Assert.AreEqual (null, c.CommentUri, "#A6");
32 Assert.IsFalse (c.Discard, "#A7");
33 Assert.IsFalse (c.Expired, "#A8");
34 Assert.AreEqual (DateTime.MinValue, c.Expires, "#A9");
36 Assert.IsFalse (c.HttpOnly, "#A10");
38 Assert.AreEqual (string.Empty, c.Path, "#A11");
39 Assert.IsFalse (c.Secure, "#A12");
40 Assert.AreEqual (0, c.Version, "#A13");
41 Assert.AreEqual (string.Empty, c.ToString (), "#A14");
43 c.Expires = DateTime.Now;
44 Assert.IsTrue (c.Expired, "#A15");
47 Assert.AreEqual (string.Empty, c.Port, "#A16");
50 Assert.AreEqual (string.Empty, c.Value, "#A17");
54 public void Constructors ()
56 Cookie c = new Cookie ("somename", null, null, null);
59 c = new Cookie (null, null, null, null);
60 Assertion.Fail ("#1: Name cannot be null");
62 catch (CookieException)
70 Cookie c = new Cookie ("SomeName", "SomeValue");
71 Assertion.AssertEquals ("#1", c.Name, "SomeName");
75 Assertion.Fail ("#2a");
77 catch (CookieException)
79 Assertion.AssertEquals ("#2b", "SomeName", c.Name);
84 Assertion.Fail ("#2c");
86 catch (CookieException)
88 Assertion.AssertEquals ("#2d", "SomeName", c.Name);
93 Assertion.Fail ("#2e");
95 catch (CookieException)
97 // bah! this fails, yet the name is changed..
98 // inconsistent with previous test
99 Assertion.AssertEquals ("#2f", String.Empty, c.Name);
104 Assertion.Fail ("#2g");
106 catch (CookieException)
108 Assertion.AssertEquals ("#2h", String.Empty, c.Name);
112 c.Name = "xxx" + (char)0x80;
114 catch (CookieException)
116 Assertion.Fail ("#2i");
121 Assertion.Fail ("#3a: Name cannot start with '$' character");
123 catch (CookieException)
125 Assertion.AssertEquals ("#3b", String.Empty, c.Name);
127 c.Name = "SomeName$";
128 Assertion.AssertEquals ("#4", c.Name, "SomeName$");
131 c.Name = "Some=Name";
132 Assertion.Fail ("#5a: Name cannot contain '=' character");
134 catch (CookieException)
136 Assertion.AssertEquals ("#5b", String.Empty, c.Name);
139 Assertion.AssertEquals ("#6", c.Name, "domain");
145 // LAMESPEC: According to .Net specs the Value property should not accept
146 // the semicolon and comma characters, yet it does
148 Cookie c = new Cookie("SomeName", "SomeValue");
150 c.Value = "Some;Value";
151 Assertion.Fail ("#1: semicolon should not be accepted");
152 } catch (CookieException) {
155 c.Value = "Some,Value";
156 Assertion.Fail ("#2: comma should not be accepted");
157 } catch (CookieException) {
159 c.Value = "Some\tValue";
160 Assertion.AssertEquals ("#3", c.Value, "Some\tValue");
167 Cookie c = new Cookie ("SomeName", "SomeValue");
171 Assertion.Fail ("#1: port must start and end with double quotes");
173 catch (CookieException)
178 Assert.AreEqual (0, c.Version, "#6.1");
180 Assert.AreEqual (1, c.Version, "#6.2");
182 catch (CookieException)
184 Assertion.Fail ("#2");
188 c.Port = "\"123;124\"";
189 Assertion.Fail ("#3");
191 catch (CookieException)
196 c.Port = "\"123,123,124\"";
198 catch (CookieException)
200 Assertion.Fail ("#4");
204 c.Port = "\"123,124\"";
206 catch (CookieException)
208 Assertion.Fail ("#5");
213 public void Equals ()
215 Cookie c1 = new Cookie ("NAME", "VALUE", "PATH", "DOMAIN");
216 Cookie c2 = new Cookie ("name", "value", "path", "domain");
217 Assertion.Assert ("#1", !c1.Equals (c2));
220 Assertion.Assert ("#2", c1.Equals (c2));
222 Assertion.Assert ("#3", !c1.Equals (c2));
226 public void ToStringTest ()
228 Cookie c1 = new Cookie ("NAME", "VALUE", "/", "example.com");
229 Assert.AreEqual ("NAME=VALUE", c1.ToString (), "#A1");
231 Cookie c2 = new Cookie ();
232 Assert.AreEqual (string.Empty, c2.ToString (), "#A2");
234 Cookie c3 = new Cookie("NAME", "VALUE");
235 Assert.AreEqual ("NAME=VALUE", c3.ToString (), "#A3");
237 Cookie c4 = new Cookie ("NAME", "VALUE", "/", "example.com");
239 Assert.AreEqual ("$Version=1; NAME=VALUE; $Path=/; $Domain=example.com", c4.ToString (), "#A4");
241 Cookie c5 = new Cookie ("NAME", "VALUE", "/", "example.com");
242 c5.Port = "\"8080\"";
243 Assert.AreEqual ("$Version=1; NAME=VALUE; $Path=/; $Domain=example.com; $Port=\"8080\"", c5.ToString (), "#A5");
245 Cookie c6 = new Cookie ("NAME", "VALUE");
247 Assert.AreEqual ("$Version=1; NAME=VALUE", c6.ToString (), "#A6");