| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- //
- // CookieTest.cs - NUnit Test Cases for System.Net.Cookie
- //
- // Authors:
- // Lawrence Pit ([email protected])
- // Martin Willemoes Hansen ([email protected])
- // Daniel Nauck (dna(at)mono-project(dot)de)
- //
- // (C) 2003 Martin Willemoes Hansen
- //
- using NUnit.Framework;
- using System;
- using System.Net;
- namespace MonoTests.System.Net
- {
- [TestFixture]
- public class CookieTest
- {
- [Test]
- public void PublicFields ()
- {
- Cookie c = new Cookie ();
- Assert.AreEqual (string.Empty, c.Name, "#A1");
- Assert.AreEqual (string.Empty, c.Value, "#A2");
- Assert.AreEqual (string.Empty, c.Domain, "#A3");
- Assert.AreEqual (string.Empty, c.Port, "#A4");
- Assert.AreEqual (string.Empty, c.Comment, "#A5");
- Assert.AreEqual (null, c.CommentUri, "#A6");
- Assert.IsFalse (c.Discard, "#A7");
- Assert.IsFalse (c.Expired, "#A8");
- Assert.AreEqual (DateTime.MinValue, c.Expires, "#A9");
- Assert.IsFalse (c.HttpOnly, "#A10");
- Assert.AreEqual (string.Empty, c.Path, "#A11");
- Assert.IsFalse (c.Secure, "#A12");
- Assert.AreEqual (0, c.Version, "#A13");
- Assert.AreEqual (string.Empty, c.ToString (), "#A14");
- c.Expires = DateTime.Now;
- Assert.IsTrue (c.Expired, "#A15");
- c.Port = null;
- Assert.AreEqual (string.Empty, c.Port, "#A16");
- c.Value = null;
- Assert.AreEqual (string.Empty, c.Value, "#A17");
- }
- [Test]
- public void Constructors ()
- {
- Cookie c = new Cookie ("somename", null, null, null);
- try
- {
- c = new Cookie (null, null, null, null);
- Assert.Fail ("#1: Name cannot be null");
- }
- catch (CookieException)
- {
- }
- }
- [Test]
- public void Name ()
- {
- Cookie c = new Cookie ("SomeName", "SomeValue");
- Assert.AreEqual (c.Name, "SomeName", "#1");
- try
- {
- c.Name = null;
- Assert.Fail ("#2a");
- }
- catch (CookieException)
- {
- Assert.AreEqual ("SomeName", c.Name, "#2b");
- }
- try
- {
- c.Name = "";
- Assert.Fail ("#2c");
- }
- catch (CookieException)
- {
- Assert.AreEqual ("SomeName", c.Name, "#2d");
- }
- try
- {
- c.Name = " ";
- Assert.Fail ("#2e");
- }
- catch (CookieException)
- {
- // bah! this fails, yet the name is changed..
- // inconsistent with previous test
- Assert.AreEqual (String.Empty, c.Name, "#2f");
- }
- try
- {
- c.Name = "xxx\r\n";
- Assert.Fail ("#2g");
- }
- catch (CookieException)
- {
- Assert.AreEqual (String.Empty, c.Name, "#2h");
- }
- try
- {
- c.Name = "xxx" + (char)0x80;
- }
- catch (CookieException)
- {
- Assert.Fail ("#2i");
- }
- try
- {
- c.Name = "$omeName";
- Assert.Fail ("#3a: Name cannot start with '$' character");
- }
- catch (CookieException)
- {
- Assert.AreEqual (String.Empty, c.Name, "#3b");
- }
- c.Name = "SomeName$";
- Assert.AreEqual (c.Name, "SomeName$", "#4");
- try
- {
- c.Name = "Some=Name";
- Assert.Fail ("#5a: Name cannot contain '=' character");
- }
- catch (CookieException)
- {
- Assert.AreEqual (String.Empty, c.Name, "#5b");
- }
- c.Name = "domain";
- Assert.AreEqual (c.Name, "domain", "#6");
- }
- [Test]
- public void Path ()
- {
- Cookie c = new Cookie ();
- c.Path = "/Whatever";
- Assert.AreEqual ("/Whatever", c.Path, "#1");
- c.Path = null;
- Assert.AreEqual (string.Empty, c.Path, "#2");
- c.Path = "ok";
- Assert.AreEqual ("ok", c.Path, "#3");
- c.Path = string.Empty;
- Assert.AreEqual (string.Empty, c.Path, "#4");
- }
- [Test]
- public void Value ()
- {
- // LAMESPEC: According to .Net specs the Value property should not accept
- // the semicolon and comma characters, yet it does
- /*
- Cookie c = new Cookie("SomeName", "SomeValue");
- try {
- c.Value = "Some;Value";
- Assert.Fail ("#1: semicolon should not be accepted");
- } catch (CookieException) {
- }
- try {
- c.Value = "Some,Value";
- Assert.Fail ("#2: comma should not be accepted");
- } catch (CookieException) {
- }
- c.Value = "Some\tValue";
- Assert.AreEqual (c.Value, "Some\tValue", "#3");
- */
- }
- [Test]
- public void Port ()
- {
- Cookie c = new Cookie ("SomeName", "SomeValue");
- try
- {
- c.Port = "123";
- Assert.Fail ("#1: port must start and end with double quotes");
- }
- catch (CookieException)
- {
- }
- try
- {
- Assert.AreEqual (0, c.Version, "#6.1");
- c.Port = "\"123\"";
- Assert.AreEqual (1, c.Version, "#6.2");
- }
- catch (CookieException)
- {
- Assert.Fail ("#2");
- }
- try
- {
- c.Port = "\"123;124\"";
- Assert.Fail ("#3");
- }
- catch (CookieException)
- {
- }
- try
- {
- c.Port = "\"123,123,124\"";
- }
- catch (CookieException)
- {
- Assert.Fail ("#4");
- }
- try
- {
- c.Port = "\"123,124\"";
- }
- catch (CookieException)
- {
- Assert.Fail ("#5");
- }
- }
- [Test]
- public void Equals ()
- {
- Cookie c1 = new Cookie ("NAME", "VALUE", "PATH", "DOMAIN");
- Cookie c2 = new Cookie ("name", "value", "path", "domain");
- Assert.IsTrue (!c1.Equals (c2), "#1");
- c2.Value = "VALUE";
- c2.Path = "PATH";
- Assert.IsTrue (c1.Equals (c2), "#2");
- c2.Version = 1;
- Assert.IsTrue (!c1.Equals (c2), "#3");
- }
- [Test]
- public void ToStringTest ()
- {
- Cookie c1 = new Cookie ("NAME", "VALUE", "/", "example.com");
- Assert.AreEqual ("NAME=VALUE", c1.ToString (), "#A1");
- Cookie c2 = new Cookie ();
- Assert.AreEqual (string.Empty, c2.ToString (), "#A2");
- Cookie c3 = new Cookie("NAME", "VALUE");
- Assert.AreEqual ("NAME=VALUE", c3.ToString (), "#A3");
- Cookie c4 = new Cookie ("NAME", "VALUE", "/", "example.com");
- c4.Version = 1;
- Assert.AreEqual ("$Version=1; NAME=VALUE; $Path=/; $Domain=example.com", c4.ToString (), "#A4");
- Cookie c5 = new Cookie ("NAME", "VALUE", "/", "example.com");
- c5.Port = "\"8080\"";
- Assert.AreEqual ("$Version=1; NAME=VALUE; $Path=/; $Domain=example.com; $Port=\"8080\"", c5.ToString (), "#A5");
- Cookie c6 = new Cookie ("NAME", "VALUE");
- c6.Version = 1;
- Assert.AreEqual ("$Version=1; NAME=VALUE", c6.ToString (), "#A6");
- }
- }
- }
|