FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
JSON-Java-unit-test/CookieTest.java at master · FritzMock/JSON-Java-unit-test · GitHub
FritzMock
/
JSON-Java-unit-test
Public
forked from
stleary/JSON-Java-unit-test
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
JSON-Java-unit-test
/
CookieTest.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
199 lines (183 loc) · 7.58 KB
Breadcrumbs
JSON-Java-unit-test
/
CookieTest.java
Copy path
File metadata and controls
199 lines (183 loc) · 7.58 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
package
org
.
json
.
junit
;
import
static
org
.
junit
.
Assert
.*;
import
org
.
json
.*;
import
org
.
junit
.
Test
;
/**
* HTTP cookie specification: RFC6265
*
* At its most basic, a cookie is a name=value pair. The value may be subdivided
* into other cookies, but that is not tested here. The cookie may also include
* certain named attributes, delimited by semicolons.
*
* The Cookie.toString() method emits certain attributes if present: expires,
* domain, path, secure. All but secure are name-value pairs. Other attributes
* are not included in the toString() output.
*
* A JSON-Java encoded cookie escapes '+', '%', '=', ';' with %hh values.
*/
public
class
CookieTest
{
@
Test
(
expected
=
NullPointerException
.
class
)
public
void
nullCookieException
() {
/**
* Attempts to create a JSONObject from a null string
*/
String
cookieStr
=
null
;
Cookie
.
toJSONObject
(
cookieStr
);
}
@
Test
(
expected
=
JSONException
.
class
)
public
void
malFormedNameValueException
() {
/**
* Attempts to create a JSONObject from a malformed cookie string
*/
String
cookieStr
=
"thisCookieHasNoEqualsChar"
;
Cookie
.
toJSONObject
(
cookieStr
);
}
@
Test
(
expected
=
JSONException
.
class
)
public
void
malFormedAttributeException
() {
/**
* Attempts to create a JSONObject from a malformed cookie string
*/
String
cookieStr
=
"this=Cookie;myAttribute"
;
Cookie
.
toJSONObject
(
cookieStr
);
}
@
Test
(
expected
=
JSONException
.
class
)
public
void
emptyStringCookieException
() {
/**
* Attempts to create a JSONObject from an empty cookie string
* Note: Cookie throws an exception, but CookieList does not
*/
String
cookieStr
=
""
;
Cookie
.
toJSONObject
(
cookieStr
);
}
@
Test
public
void
simpleCookie
() {
/**
* The simplest cookie is a name/value pair with no delimiter
*/
String
cookieStr
=
"SID=31d4d96e407aad42"
;
String
expectedCookieStr
=
"{
\"
name
\"
:
\"
SID
\"
,
\"
value
\"
:
\"
31d4d96e407aad42
\"
}"
;
JSONObject
jsonObject
=
Cookie
.
toJSONObject
(
cookieStr
);
JSONObject
expectedJsonObject
=
new
JSONObject
(
expectedCookieStr
);
Util
.
compareActualVsExpectedJsonObjects
(
jsonObject
,
expectedJsonObject
);
}
@
Test
public
void
multiPartCookie
() {
/**
* Store a cookie with all of the supported attributes in a
* JSONObject. The secure attribute, which has no value, is treated
* as a boolean.
*/
String
cookieStr
=
"PH=deleted; "
+
" expires=Wed, 19-Mar-2014 17:53:53 GMT;"
+
"path=/; "
+
" domain=.yahoo.com;"
+
"secure"
;
String
expectedCookieStr
=
"{"
+
"
\"
name
\"
:
\"
PH
\"
,"
+
"
\"
value
\"
:
\"
deleted
\"
,"
+
"
\"
path
\"
:
\"
/
\"
,"
+
"
\"
expires
\"
:
\"
Wed, 19-Mar-2014 17:53:53 GMT
\"
,"
+
"
\"
domain
\"
:
\"
.yahoo.com
\"
,"
+
"
\"
secure
\"
:true"
+
"}"
;
JSONObject
jsonObject
=
Cookie
.
toJSONObject
(
cookieStr
);
JSONObject
expectedJsonObject
=
new
JSONObject
(
expectedCookieStr
);
Util
.
compareActualVsExpectedJsonObjects
(
jsonObject
,
expectedJsonObject
);
}
@
Test
public
void
convertCookieToString
() {
/**
* ToString() will omit the non-standard "thiswont=beIncluded"
* attribute, but the attribute is still stored in the JSONObject.
* This test confirms both behaviors.
*/
String
cookieStr
=
"PH=deleted; "
+
" expires=Wed, 19-Mar-2014 17:53:53 GMT;"
+
"path=/; "
+
" domain=.yahoo.com;"
+
"thisWont=beIncluded;"
+
"secure"
;
String
expectedCookieStr
=
"{
\"
path
\"
:
\"
/
\"
,"
+
"
\"
expires
\"
:
\"
Wed, 19-Mar-2014 17:53:53 GMT
\"
,"
+
"
\"
domain
\"
:
\"
.yahoo.com
\"
,"
+
"
\"
name
\"
:
\"
PH
\"
,"
+
"
\"
secure
\"
:true,"
+
"
\"
value
\"
:
\"
deleted
\"
}"
;
// Add the nonstandard attribute to the expected cookie string
String
expectedDirectCompareCookieStr
=
expectedCookieStr
.
replaceAll
(
"
\\
{"
,
"
\\
{
\"
thisWont
\"
:
\"
beIncluded
\"
,"
);
// convert all strings into JSONObjects
JSONObject
jsonObject
=
Cookie
.
toJSONObject
(
cookieStr
);
JSONObject
expectedJsonObject
=
new
JSONObject
(
expectedCookieStr
);
JSONObject
expectedDirectCompareJsonObject
=
new
JSONObject
(
expectedDirectCompareCookieStr
);
// emit the string
String
cookieToStr
=
Cookie
.
toString
(
jsonObject
);
// create a final JSONObject from the string
JSONObject
finalJsonObject
=
Cookie
.
toJSONObject
(
cookieToStr
);
// JSONObject should contain the nonstandard string
Util
.
compareActualVsExpectedJsonObjects
(
jsonObject
,
expectedDirectCompareJsonObject
);
// JSONObject -> string -> JSONObject should not contain the nonstandard string
Util
.
compareActualVsExpectedJsonObjects
(
finalJsonObject
,
expectedJsonObject
);
}
@
Test
public
void
convertEncodedCookieToString
() {
/**
* A string may be URL-encoded when converting to JSONObject.
* If found, '+' is converted to ' ', and %hh hex strings are converted
* to their ascii char equivalents. This test confirms the decoding
* behavior.
*/
String
cookieStr
=
"PH=deleted; "
+
" expires=Wed,+19-Mar-2014+17:53:53+GMT;"
+
"path=/%2Bthis/is%26/a/spec%3Bsegment%3D; "
+
" domain=.yahoo.com;"
+
"secure"
;
String
expectedCookieStr
=
"{
\"
path
\"
:
\"
/+this/is&/a/spec;segment=
\"
,"
+
"
\"
expires
\"
:
\"
Wed, 19-Mar-2014 17:53:53 GMT
\"
,"
+
"
\"
domain
\"
:
\"
.yahoo.com
\"
,"
+
"
\"
name
\"
:
\"
PH
\"
,"
+
"
\"
secure
\"
:true,"
+
"
\"
value
\"
:
\"
deleted
\"
}"
;
JSONObject
jsonObject
=
Cookie
.
toJSONObject
(
cookieStr
);
JSONObject
expectedJsonObject
=
new
JSONObject
(
expectedCookieStr
);
String
cookieToStr
=
Cookie
.
toString
(
jsonObject
);
JSONObject
finalJsonObject
=
Cookie
.
toJSONObject
(
cookieToStr
);
Util
.
compareActualVsExpectedJsonObjects
(
jsonObject
,
expectedJsonObject
);
Util
.
compareActualVsExpectedJsonObjects
(
finalJsonObject
,
expectedJsonObject
);
}
@
Test
public
void
escapeString
() {
/**
* A public API method performs a URL encoding for selected chars
* in a string. Control chars, '+', '%', '=', ';' are all encoded
* as %hh hex strings. The string is also trimmed.
* This test confirms that behavior.
*/
String
str
=
" +%
\r
\n
\t
\b
%=;;; "
;
String
expectedStr
=
"%2b%25%0d%0a%09%08%25%3d%3b%3b%3b"
;
String
actualStr
=
Cookie
.
escape
(
str
);
assertTrue
(
"expect escape() to encode correctly. Actual: "
+
actualStr
+
" expected: "
+
expectedStr
,
expectedStr
.
equals
(
actualStr
));
}
@
Test
public
void
unescapeString
() {
/**
* A public API method performs URL decoding for strings.
* '+' is converted to space and %hh hex strings are converted to
* their ascii equivalent values. The string is not trimmed.
* This test confirms that behavior.
*/
String
str
=
" +%2b%25%0d%0a%09%08%25%3d%3b%3b%3b+ "
;
String
expectedStr
=
" +%
\r
\n
\t
\b
%=;;; "
;
String
actualStr
=
Cookie
.
unescape
(
str
);
assertTrue
(
"expect unescape() to decode correctly. Actual: "
+
actualStr
+
" expected: "
+
expectedStr
,
expectedStr
.
equals
(
actualStr
));
}
}
Back
|
FazBrowse Home
|
New Git URL