Add tests for Cookie support

This commit is contained in:
Darshit Shah 2013-09-06 01:27:33 +05:30
parent 4c9e6b4f71
commit b6f9efe7b5
7 changed files with 269 additions and 0 deletions

View File

@ -1,3 +1,16 @@
2013-09-06 Darshit Shah <darnir@gmail.com>
* HTTPServer.py (WgetHTTPRequestHandler.test_cookies): Comment out the
old test_cookies code. This is no longer used and was causing problems
with expected cookies. The code will soon be removed anyways
* Test-cookie.py: Add new test for basic cookie functionality
* Test-cookie-401.py: Ensure cookies are saved during a 401 response
* Test-cookie-expires.py: Ensure that the Expires field is correctly
handled
* Test-cookies-domain-mismatch.py: Ensure that mismatched domains are
handled by Wget
* Makefile.am: Add the new tests
2013-09-06 Darshit Shah <darnir@gmail.com>
* README: New section on pending work. Will keep updating this to keep

View File

@ -58,6 +58,8 @@ class WgetHTTPRequestHandler (BaseHTTPRequestHandler):
]
def test_cookies (self):
pass
"""
cookie_recd = self.headers.get ('Cookie')
cookies = self.get_rule_list ('Cookie')
cookie_exp = cookies.cookie_value if cookies else None
@ -67,6 +69,7 @@ class WgetHTTPRequestHandler (BaseHTTPRequestHandler):
self.send_response (400, "Cookie Mismatch")
self.finish_headers ()
return False
"""
def get_rule_list (self, name):
r_list = self.rules.get (name) if name in self.rules else None

View File

@ -39,6 +39,10 @@ TESTS = Test-auth-basic-fail.py \
Test-c-full.py \
Test-Content-disposition-2.py \
Test-Content-disposition.py \
Test-cookie-401.py \
Test-cookie-domain-mismatch.py \
Test-cookie-expires.py \
Test-cookie.py \
Test-Head.py \
Test-O.py

58
testenv/Test-cookie-401.py Executable file
View File

@ -0,0 +1,58 @@
#!/usr/bin/env python3
from sys import exit
from WgetTest import HTTPTest, WgetFile
"""
This test ensures that Wget stores the cookie even in the event of a
401 Unauthorized Response
"""
TEST_NAME = "Basic Cookie 401 Response"
############# File Definitions ###############################################
File1 = """All happy families are alike;
Each unhappy family is unhappy in its own way"""
File2 = "Anyone for chocochip cookies?"
File1_rules = {
"SendHeader" : {
"Set-Cookie" : "sess-id=0213; path=/"
},
"Response" : 401
}
File2_rules = {
"ExpectHeader" : {
"Cookie" : "sess-id=0213"
},
}
A_File = WgetFile ("File1", File1, rules=File1_rules)
B_File = WgetFile ("File2", File2, rules=File2_rules)
WGET_OPTIONS = "-d"
WGET_URLS = ["File1", "File2"]
Files = [A_File, B_File]
ExpectedReturnCode = 6
ExpectedDownloadedFiles = [B_File]
################ Pre and Post Test Hooks #####################################
pre_test = {
"ServerFiles" : Files
}
test_options = {
"WgetCommands" : WGET_OPTIONS,
"Urls" : WGET_URLS
}
post_test = {
"ExpectedFiles" : ExpectedDownloadedFiles,
"ExpectedRetcode" : ExpectedReturnCode
}
err = HTTPTest (
name=TEST_NAME,
pre_hook=pre_test,
test_params=test_options,
post_hook=post_test
).begin ()
exit (err)

View File

@ -0,0 +1,56 @@
#!/usr/bin/env python3
from sys import exit
from WgetTest import HTTPTest, WgetFile
"""
This test ensures that Wget identifies bad servers trying to set cookies
for a different domain and rejects them.
"""
TEST_NAME = "Cookie Domain Mismatch"
############# File Definitions ###############################################
File1 = "Would you care for a cup of coffee?"
File2 = "Anyone for chocochip cookies?"
File1_rules = {
"SendHeader" : {
"Set-Cookie" : "sess-id=0213; path=/; domain=.example.com"
}
}
File2_rules = {
"RejectHeader" : {
"Cookie" : "sess-id=0213"
}
}
A_File = WgetFile ("File1", File1, rules=File1_rules)
B_File = WgetFile ("File2", File2, rules=File2_rules)
WGET_OPTIONS = "-d"
WGET_URLS = ["File1", "File2"]
Files = [A_File, B_File]
ExpectedReturnCode = 0
ExpectedDownloadedFiles = [A_File, B_File]
################ Pre and Post Test Hooks #####################################
pre_test = {
"ServerFiles" : Files
}
test_options = {
"WgetCommands" : WGET_OPTIONS,
"Urls" : WGET_URLS
}
post_test = {
"ExpectedFiles" : ExpectedDownloadedFiles,
"ExpectedRetcode" : ExpectedReturnCode
}
err = HTTPTest (
name=TEST_NAME,
pre_hook=pre_test,
test_params=test_options,
post_hook=post_test
).begin ()
exit (err)

79
testenv/Test-cookie-expires.py Executable file
View File

@ -0,0 +1,79 @@
#!/usr/bin/env python3
from sys import exit
from WgetTest import HTTPTest, WgetFile
"""
This test ensures that Wget handles Cookie expiry dates correctly.
Simultaneuously, we also check if multiple cookies to the same domain
are handled correctly
"""
TEST_NAME = "Cookie Expires"
############# File Definitions ###############################################
File1 = "Hello World!"
File2 = "'Ello! This is Amazing!"
File3 = "So what are we looking at?"
File4 = "This was downloaded"
File1_rules = {
"SendHeader" : {
"Set-Cookie" : "sess-id=0213; path=/"
}
}
File2_rules = {
"ExpectHeader" : {
"Cookie" : "sess-id=0213"
},
"SendHeader" : {
"Set-Cookie" : "new-sess=N"
}
}
File3_rules = {
"SendHeader" : {
"Set-Cookie" : "sess-id=0213; path=/; Expires=Sun, 06 Nov 2001 12:32:43 GMT"
},
"ExpectHeader" : {
"Cookie" : "new-sess=N; sess-id=0213"
}
}
File4_rules = {
"RejectHeader" : {
"Cookie" : "sess-id=0213"
},
"ExpectHeader" : {
"Cookie" : "new-sess=N"
}
}
A_File = WgetFile ("File1", File1, rules=File1_rules)
B_File = WgetFile ("File2", File2, rules=File2_rules)
C_File = WgetFile ("File3", File3, rules=File3_rules)
D_File = WgetFile ("File4", File4, rules=File4_rules)
WGET_OPTIONS = "-d"
WGET_URLS = ["File1", "File2", "File3", "File4"]
Files = [A_File, B_File, C_File, D_File]
ExpectedReturnCode = 0
ExpectedDownloadedFiles = [A_File, B_File, C_File, D_File]
################ Pre and Post Test Hooks #####################################
pre_test = {
"ServerFiles" : Files
}
test_options = {
"WgetCommands" : WGET_OPTIONS,
"Urls" : WGET_URLS
}
post_test = {
"ExpectedFiles" : ExpectedDownloadedFiles,
"ExpectedRetcode" : ExpectedReturnCode
}
err = HTTPTest (
name=TEST_NAME,
pre_hook=pre_test,
test_params=test_options,
post_hook=post_test
).begin ()
exit (err)

56
testenv/Test-cookie.py Executable file
View File

@ -0,0 +1,56 @@
#!/usr/bin/env python3
from sys import exit
from WgetTest import HTTPTest, WgetFile
"""
This test ensures that Wget's cookie jar support works correctly.
"""
TEST_NAME = "Basic Cookie Functionality"
############# File Definitions ###############################################
File1 = """All happy families are alike;
Each unhappy family is unhappy in its own way"""
File2 = "Anyone for chocochip cookies?"
File1_rules = {
"SendHeader" : {
"Set-Cookie" : "sess-id=0213; path=/"
}
}
File2_rules = {
"ExpectHeader" : {
"Cookie" : "sess-id=0213"
}
}
A_File = WgetFile ("File1", File1, rules=File1_rules)
B_File = WgetFile ("File2", File2, rules=File2_rules)
WGET_OPTIONS = "-d"
WGET_URLS = ["File1", "File2"]
Files = [A_File, B_File]
ExpectedReturnCode = 0
ExpectedDownloadedFiles = [A_File, B_File]
################ Pre and Post Test Hooks #####################################
pre_test = {
"ServerFiles" : Files
}
test_options = {
"WgetCommands" : WGET_OPTIONS,
"Urls" : WGET_URLS
}
post_test = {
"ExpectedFiles" : ExpectedDownloadedFiles,
"ExpectedRetcode" : ExpectedReturnCode
}
err = HTTPTest (
name=TEST_NAME,
pre_hook=pre_test,
test_params=test_options,
post_hook=post_test
).begin ()
exit (err)