Author: jfrederic.clere(a)jboss.com
Date: 2009-04-17 06:59:59 -0400 (Fri, 17 Apr 2009)
New Revision: 1015
Modified:
trunk/test/java/org/jboss/web/cookies/CookiesTestCase.java
trunk/test/webapps/cookies/test.jsp
Log:
Add tests for JBAS-6766.
Modified: trunk/test/java/org/jboss/web/cookies/CookiesTestCase.java
===================================================================
--- trunk/test/java/org/jboss/web/cookies/CookiesTestCase.java 2009-04-17 10:58:35 UTC
(rev 1014)
+++ trunk/test/java/org/jboss/web/cookies/CookiesTestCase.java 2009-04-17 10:59:59 UTC
(rev 1015)
@@ -66,71 +66,79 @@
}
/* should create foo (bar) and a (b) */
- public void testTest1() { mytest(1, "foo=bar; a=b"); }
- public void testTest2() { mytest(2, "foo=bar;a=b"); }
- public void testTest3() { mytest(3, "foo=bar;a=b;"); }
- public void testTest4() { mytest(4, "foo=bar;a=b; "); }
- public void testTest5() { mytest(5, "foo=bar;a=b; ;"); }
+ public void testTest1() { readTest(1, "foo=bar; a=b"); }
+ public void testTest2() { readTest(2, "foo=bar;a=b"); }
+ public void testTest3() { readTest(3, "foo=bar;a=b;"); }
+ public void testTest4() { readTest(4, "foo=bar;a=b; "); }
+ public void testTest5() { readTest(5, "foo=bar;a=b; ;"); }
/* should create foo () and a (b) */
- public void testTest6() { mytest(6, "foo=;a=b; ;"); }
- public void testTest7() { mytest(7, "foo;a=b; ;"); }
+ public void testTest6() { readTest(6, "foo=;a=b; ;"); }
+ public void testTest7() { readTest(7, "foo;a=b; ;"); }
/* v1 create foo (bar) and a (b) */
- public void testTest8() { mytest(8, "$Version=1; foo=bar;a=b"); }
- public void testTest9() { mytest(9, "$Version=1;foo=bar;a=b; ; "); }
+ public void testTest8() { readTest(8, "$Version=1; foo=bar;a=b"); }
+ public void testTest9() { readTest(9, "$Version=1;foo=bar;a=b; ; "); }
/* v1 create foo () and a (b) */
- public void testTest10() { mytest(10, "$Version=1;foo=;a=b; ; "); }
- public void testTest11() { mytest(11, "$Version=1;foo= ;a=b; ; "); }
- public void testTest12() { mytest(12, "$Version=1;foo;a=b; ; "); }
+ public void testTest10() { readTest(10, "$Version=1;foo=;a=b; ; "); }
+ public void testTest11() { readTest(11, "$Version=1;foo= ;a=b; ; "); }
+ public void testTest12() { readTest(12, "$Version=1;foo;a=b; ; "); }
/* v1 create foo (bar) and a (b) */
- public void testTest13() { mytest(13, "$Version=1;foo=\"bar\";a=b; ;
"); }
+ public void testTest13() { readTest(13, "$Version=1;foo=\"bar\";a=b; ;
"); }
/* use domain */
- public void testTest14() { mytest(14,
"$Version=1;foo=\"bar\";$Domain=apache.org;a=b"); }
- public void testTest15() { mytest(15,
"$Version=1;foo=\"bar\";$Domain=apache.org;a=b;$Domain=yahoo.com"); }
+ public void testTest14() { readTest(14,
"$Version=1;foo=\"bar\";$Domain=apache.org;a=b"); }
+ public void testTest15() { readTest(15,
"$Version=1;foo=\"bar\";$Domain=apache.org;a=b;$Domain=yahoo.com"); }
/* rfc2965 */
- public void testTest16() { mytest(16,
"$Version=1;foo=\"bar\";$Domain=apache.org;$Port=8080;a=b"); }
+ public void testTest16() { readTest(16,
"$Version=1;foo=\"bar\";$Domain=apache.org;$Port=8080;a=b"); }
// make sure these never split into two cookies - JVK
- public void testTest17() { mytest(17,
"$Version=1;foo=\"b\"ar\";$Domain=apache.org;$Port=8080;a=b"); }
- public void testTest18() { mytest(18,
"$Version=1;foo=\"b\\\"ar\";$Domain=apache.org;$Port=8080;a=b");
}
- public void testTest19() { mytest(19,
"$Version=1;foo=\"b'ar\";$Domain=apache.org;$Port=8080;a=b"); }
+ public void testTest17() { readTest(17,
"$Version=1;foo=\"b\"ar\";$Domain=apache.org;$Port=8080;a=b"); }
+ public void testTest18() { readTest(18,
"$Version=1;foo=\"b\\\"ar\";$Domain=apache.org;$Port=8080;a=b");
}
+ public void testTest19() { readTest(19,
"$Version=1;foo=\"b'ar\";$Domain=apache.org;$Port=8080;a=b"); }
// JFC: sure it is "b" and not b'ar ?
- public void testTest20() { mytest(20,
"$Version=1;foo=b'ar;$Domain=apache.org;$Port=8080;a=b"); }
+ public void testTest20() { readTest(20,
"$Version=1;foo=b'ar;$Domain=apache.org;$Port=8080;a=b"); }
// Ends in quoted value
- public void testTest21() { mytest(21, "foo=bar;a=\"b\""); }
- public void testTest22() { mytest(22, "foo=bar;a=\"b\";"); }
+ public void testTest21() { readTest(21, "foo=bar;a=\"b\""); }
+ public void testTest22() { readTest(22, "foo=bar;a=\"b\";"); }
// Testing bad stuff
- public void testTest23() { mytest(23, "$Version=\"1\";
foo='bar'; $Path=/path; $Domain=\"localhost\""); }
+ public void testTest23() { readTest(23, "$Version=\"1\";
foo='bar'; $Path=/path; $Domain=\"localhost\""); }
// wrong, path should not have '/' JVK ???
- public void testTest24() { mytest(24,
"$Version=1;foo=\"bar\";$Path=/examples;a=b; ; "); }
+ public void testTest24() { readTest(24,
"$Version=1;foo=\"bar\";$Path=/examples;a=b; ; "); }
// Test name-only at the end of the header
- public void testTest25() { mytest(25, "foo;a=b;bar"); }
- public void testTest26() { mytest(26, "foo;a=b;bar;"); }
- public void testTest27() { mytest(27, "foo;a=b;bar "); }
- public void testTest28() { mytest(28, "foo;a=b;bar ;"); }
+ public void testTest25() { readTest(25, "foo;a=b;bar"); }
+ public void testTest26() { readTest(26, "foo;a=b;bar;"); }
+ public void testTest27() { readTest(27, "foo;a=b;bar "); }
+ public void testTest28() { readTest(28, "foo;a=b;bar ;"); }
// BUG -- the ' ' needs to be skipped.
- public void testTest29() { mytest(29, "foo;a=b; ;bar"); }
+ public void testTest29() { readTest(29, "foo;a=b; ;bar"); }
// BUG -- ';' needs skipping
- public void testTest30() { mytest(30, "foo;a=b;;bar"); }
- public void testTest31() { mytest(31, "foo;a=b; ;;bar=rab"); }
- public void testTest32() { mytest(32, "foo;a=b;; ;bar=rab"); }
+ public void testTest30() { readTest(30, "foo;a=b;;bar"); }
+ public void testTest31() { readTest(31, "foo;a=b; ;;bar=rab"); }
+ public void testTest32() { readTest(32, "foo;a=b;; ;bar=rab"); }
- public void testTest33() { mytest(33, "a=b;#;bar=rab"); }
- public void testTest34() { mytest(34, "a=b;;\\;bar=rab"); }
+ public void testTest33() { readTest(33, "a=b;#;bar=rab"); }
+ public void testTest34() { readTest(34, "a=b;;\\;bar=rab"); }
// Try all the separators of version1 in version0 cookie.
- public void testTest35() { mytest(35, "a=()<>@:\\\"/[]?={}\t;
foo=bar; a=b"); }
+ public void testTest35() { readTest(35, "a=()<>@:\\\"/[]?={}\t;
foo=bar; a=b"); }
// Just test the version.
- public void testTest36() { mytest(36, "$Version=1;foo=bar"); }
- public void testTest37() { mytest(37, "$Version=0;foo=bar"); }
+ public void testTest36() { readTest(36, "$Version=1;foo=bar"); }
+ public void testTest37() { readTest(37, "$Version=0;foo=bar"); }
- public void mytest(int test, String cookie) {
+ // JBAS-6766..
+ public void testTest38() { readTest(38, "a==:;foo=b=:ar"); }
+ public void testTest39() { readTest(39, "a=:;foo=b:ar"); }
+ public void testTest40() { readTest(40, "a==;foo=b=ar"); }
+ public void testTestW38() { writeTest(38); }
+ public void testTestW39() { writeTest(39); }
+ public void testTestW40() { writeTest(40); }
+
+ public void writeTest(int test) {
try {
- String result = Mytest(test, cookie);
+ String result = Mytest(test, null, false);
if (result != null)
fail(result);
} catch (Exception ex) {
@@ -138,7 +146,18 @@
fail("Test failed because of " + ex);
}
}
- public String Mytest(int test, String cookie) throws Exception {
+
+ public void readTest(int test, String cookie) {
+ try {
+ String result = Mytest(test, cookie, true);
+ if (result != null)
+ fail(result);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ fail("Test failed because of " + ex);
+ }
+ }
+ public String Mytest(int test, String cookie, boolean read) throws Exception {
Socket socket = new Socket("localhost", 8080);
BufferedWriter writer = new BufferedWriter(new
OutputStreamWriter(socket.getOutputStream()));
BufferedReader reader = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
@@ -147,8 +166,12 @@
writer.write("User-Agent: CookiesTestCase/1.0\r\n");
writer.write("Connection: Keep-Alive\r\n");
writer.write("TEST: " + test + "\r\n");
- writer.write("ACTION: READ\r\n");
- writer.write("Cookie: " + cookie + "\r\n");
+ if (read)
+ writer.write("ACTION: READ\r\n");
+ else
+ writer.write("ACTION: CREATE\r\n");
+ if (cookie != null)
+ writer.write("Cookie: " + cookie + "\r\n");
writer.write("\r\n");
writer.flush();
@@ -158,12 +181,11 @@
}
responseStatus = responseStatus.substring(responseStatus.indexOf(' ') +
1, responseStatus.indexOf(' ', responseStatus.indexOf(' ') + 1));
int status = Integer.parseInt(responseStatus);
- if (status != 200) {
- return "Error " + status + " from Servlet";
- }
+
// read all the headers.
String header = reader.readLine();
int contentLength = 0;
+ String error = "Unknown";
while (!"".equals(header)) {
int colon = header.indexOf(':');
String headerName = header.substring(0, colon).trim();
@@ -171,6 +193,9 @@
if ("content-length".equalsIgnoreCase(headerName)) {
contentLength = Integer.parseInt(headerValue);
}
+ if ("ERROR".equalsIgnoreCase(headerName)) {
+ error = headerValue;
+ }
header = reader.readLine();
}
if (contentLength > 0) {
@@ -185,6 +210,9 @@
}
}
}
+ if (status != 200) {
+ return "Error " + error + " from Servlet";
+ }
return null;
}
Modified: trunk/test/webapps/cookies/test.jsp
===================================================================
--- trunk/test/webapps/cookies/test.jsp 2009-04-17 10:58:35 UTC (rev 1014)
+++ trunk/test/webapps/cookies/test.jsp 2009-04-17 10:59:59 UTC (rev 1015)
@@ -12,11 +12,13 @@
*/
String test = request.getHeader("TEST");
String action = request.getHeader("ACTION");
- int ntest = Integer.parseInt(test);
+ int ntest = 0;
+ if (test != null)
+ ntest = Integer.parseInt(test);
response.setContentType("text/html; charset=UTF-8");
- if (action.compareTo("READ") == 0) {
+ if (action !=null && action.compareTo("READ") == 0) {
switch (ntest) {
case 1: test(response, request, out, "foo", "bar",
"a", "b"); break;
case 2: test(response, request, out, "foo", "bar",
"a", "b"); break;
@@ -73,15 +75,27 @@
case 36: test(response, request, out, 1); break;
case 37: test(response, request, out, 0); break;
- default: response.sendError(500, "Unknown test");break;
+ /* JBAS-6766...
+ case 38: test(response, request, out, "a", "=:",
"foo", "b=:ar"); break;
+ case 39: test(response, request, out, "a", ":",
"foo", "b:ar"); break;
+ case 40: test(response, request, out, "a", "=",
"foo", "b=ar"); break;
+ */
+ case 38: test(response, request, out, "foo", "b"); break;
+ case 39: test(response, request, out, "foo", "b"); break;
+ case 40: test(response, request, out, "foo", "b"); break;
+
+ default: sendError(response, "Unknown test");break;
}
- } else if (action.compareTo("CREATE") == 0) {
+ } else if (action != null && action.compareTo("CREATE") == 0) {
switch (ntest) {
- case 1: out.println("OK");break;
- default: response.sendError(500, "Unknown test");break;
+ // case 1: out.println("OK");break;
+ case 38: test(response, out, "a", "=:", "foo",
"b=:ar"); break;
+ case 39: test(response, out, "a", ":", "foo",
"b:ar"); break;
+ case 40: test(response, out, "a", "=", "foo",
"b=ar"); break;
+ default: sendError(response, "Unknown test");break;
}
} else {
- response.sendError(500, "Unknown command");
+ sendError(response, "Unknown command");
}
%>
</BODY>
@@ -91,7 +105,7 @@
Cookie[] cookies = request.getCookies();
if (cookies != null) {
if (cookies.length != 3) {
- response.sendError(500, "Wrong number of cookies");
+ sendError(response, "Wrong number of cookies (3:" +
cookies.length + ")");
return;
}
if (name1.compareTo(cookies[0].getName()) == 0 &&
@@ -102,18 +116,18 @@
val3.compareTo(cookies[2].getValue()) == 0 )
out.println("OK");
else {
- response.sendError(500, "Value or name don't match");
+ sendError(response, "Value or name don't match");
return;
}
} else {
- response.sendError(500, "No cookies");
+ sendError(response, "No cookies");
}
}
void test(HttpServletResponse response, HttpServletRequest request, JspWriter out, String
name1, String val1, String name2, String val2) throws Exception {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
if (cookies.length != 2) {
- response.sendError(500, "Wrong number of cookies");
+ sendError(response, "Wrong number of cookies (2:" +
cookies.length + ")");
return;
}
if (name1.compareTo(cookies[0].getName()) == 0 &&
@@ -122,18 +136,36 @@
val2.compareTo(cookies[1].getValue()) == 0)
out.println("OK");
else {
- response.sendError(500, "Value or name don't match");
+ sendError(response, "Value or name don't match");
return;
}
} else {
- response.sendError(500, "No cookies");
+ sendError(response, "No cookies");
}
}
+void test(HttpServletResponse response, HttpServletRequest request, JspWriter out, String
name1, String val1) throws Exception {
+ Cookie[] cookies = request.getCookies();
+ if (cookies != null) {
+ if (cookies.length != 1) {
+ sendError(response, "Wrong number of cookies (1:" +
cookies.length + ")");
+ return;
+ }
+ if (name1.compareTo(cookies[0].getName()) == 0 &&
+ val1.compareTo(cookies[0].getValue()) == 0 )
+ out.println("OK");
+ else {
+ sendError(response, "Value or name don't match (got " +
cookies[0].getName() + ":" + cookies[0].getValue());
+ return;
+ }
+ } else {
+ sendError(response, "No cookies");
+ }
+ }
void test(HttpServletResponse response, HttpServletRequest request, JspWriter out) throws
Exception {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
if (cookies.length != 0) {
- response.sendError(500, "Wrong number of cookies");
+ sendError(response, "Wrong number of cookies (0:" +
cookies.length + ")");
return;
}
}
@@ -149,5 +181,16 @@
}
}
}
- response.sendError(500, "Wrong number of cookies");
+ sendError(response, "Wrong number of cookies");
+ }
+void sendError(HttpServletResponse response, String mess) throws Exception {
+ response.setHeader("ERROR", mess);
+ response.sendError(500, mess);
+ }
+void test(HttpServletResponse response, JspWriter out, String name1, String val1, String
name2, String val2) throws Exception {
+ Cookie cookie = new Cookie(name1, val1);
+ response.addCookie(cookie);
+ cookie = new Cookie(name2, val2);
+ response.addCookie(cookie);
+ out.println("OK");
}%>