From a0108f3e8e9e2d3bf1bac7dabdd6226b34c718d1 Mon Sep 17 00:00:00 2001 From: stleary Date: Sat, 8 Aug 2015 09:32:15 -0500 Subject: [PATCH] Verify exception messages. Move method comments so JavaDoc will pick them up. --- CookieListTest.java | 80 +++++++++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 28 deletions(-) diff --git a/CookieListTest.java b/CookieListTest.java index 0eaef71..1d7ad8a 100644 --- a/CookieListTest.java +++ b/CookieListTest.java @@ -6,60 +6,70 @@ import org.json.*; import org.junit.Test; /** - * HTTP cookie specification: RFC6265 - * + * HTTP cookie specification RFC6265: http://tools.ietf.org/html/rfc6265 + *

* A cookie list is a JSONObject whose members are presumed to be cookie * name/value pairs. Entries are unescaped while being added, and escaped in * the toString() output. * Unescaping means to convert %hh hex strings to the ascii equivalent * and converting '+' to ' '. * Escaping converts '+', '%', '=', ';' and ascii control chars to %hh hex strings. - * - * CookieList should not be considered as just a list of Cookie objects: + *

+ * CookieList should not be considered as just a list of Cookie objects:
* - CookieList stores a cookie name/value pair as a single entry; Cookie stores - * it as 2 entries (key="name" and key="value"). + * it as 2 entries (key="name" and key="value").
* - CookieList requires multiple name/value pairs as input; Cookie allows the - * 'secure' name with no associated value - * - CookieList has no special handling for attribute name/value pairs. + * 'secure' name with no associated value
+ * - CookieList has no special handling for attribute name/value pairs.
*/ public class CookieListTest { + /** + * Attempts to create a CookieList from a null string. + * Expects a NullPointerException. + */ @Test(expected=NullPointerException.class) public void nullCookieListException() { - /** - * Attempts to create a CookieList from a null string - */ String cookieStr = null; CookieList.toJSONObject(cookieStr); } - @Test(expected=JSONException.class) + /** + * Attempts to create a CookieList from a malformed string. + * Expects a JSONException. + */ + @Test public void malFormedCookieListException() { - /** - * Attempts to create a CookieList from a malformed string - */ String cookieStr = "thisCookieHasNoEqualsChar"; - CookieList.toJSONObject(cookieStr); + try { + CookieList.toJSONObject(cookieStr); + assertTrue("should throw an exception", false); + } catch (JSONException e) { + /** + * Not sure of the missing char, but full string compare fails + */ + assertTrue("Expecting an exception message", + e.getMessage().startsWith("Expected '=' and instead saw '") && + e.getMessage().endsWith("' at 27 [character 28 line 1]")); + } } - @Test(expected=JSONException.class) + /** + * Creates a CookieList from an empty string. + */ + @Test public void emptyStringCookieList() { - /** - * Creates a CookieList from an empty string. - * Cookie throws an exception, but CookieList does not - */ String cookieStr = ""; String expectedCookieStr = ""; JSONObject jsonObject = CookieList.toJSONObject(cookieStr); - JSONObject expectedJsonObject = new JSONObject(expectedCookieStr); - Util.compareActualVsExpectedJsonObjects(jsonObject,expectedJsonObject); + assertTrue(jsonObject.length() == 0); } + /** + * CookieList with the simplest cookie - a name/value pair with no delimiter. + */ @Test public void simpleCookieList() { - /** - * The simplest cookie is a name/value pair with no delimiter - */ String cookieStr = "SID=31d4d96e407aad42"; String expectedCookieStr = "{\"SID\":\"31d4d96e407aad42\"}"; JSONObject jsonObject = CookieList.toJSONObject(cookieStr); @@ -67,11 +77,11 @@ public class CookieListTest { Util.compareActualVsExpectedJsonObjects(jsonObject,expectedJsonObject); } + /** + * CookieList with a single a cookie which has a name/value pair and delimiter. + */ @Test public void simpleCookieListWithDelimiter() { - /** - * The simplest cookie is a name/value pair with a delimiter - */ String cookieStr = "SID=31d4d96e407aad42;"; String expectedCookieStr = "{\"SID\":\"31d4d96e407aad42\"}"; JSONObject jsonObject = CookieList.toJSONObject(cookieStr); @@ -79,6 +89,10 @@ public class CookieListTest { Util.compareActualVsExpectedJsonObjects(jsonObject,expectedJsonObject); } + /** + * CookieList with multiple cookies consisting of name/value pairs + * with delimiters. + */ @Test public void multiPartCookieList() { String cookieStr = @@ -102,6 +116,9 @@ public class CookieListTest { Util.compareActualVsExpectedJsonObjects(jsonObject,expectedJsonObject); } + /** + * CookieList from a JSONObject with valid key and null value + */ @Test public void convertCookieListWithNullValueToString() { JSONObject jsonObject = new JSONObject(); @@ -110,6 +127,9 @@ public class CookieListTest { assertTrue("toString() should be empty", "".equals(cookieToStr)); } + /** + * CookieList with multiple entries converted to a JSON document. + */ @Test public void convertCookieListToString() { String cookieStr = @@ -136,6 +156,10 @@ public class CookieListTest { Util.compareActualVsExpectedJsonObjects(finalJsonObject,expectedJsonObject); } + /** + * CookieList with multiple entries and some '+' chars and URL-encoded + * values converted to a JSON document. + */ @Test public void convertEncodedCookieListToString() { String cookieStr =