mirror of
https://github.com/mirror/wget.git
synced 2025-03-14 03:40:15 +08:00
Add tests for Cookie support
This commit is contained in:
parent
4c9e6b4f71
commit
b6f9efe7b5
@ -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>
|
2013-09-06 Darshit Shah <darnir@gmail.com>
|
||||||
|
|
||||||
* README: New section on pending work. Will keep updating this to keep
|
* README: New section on pending work. Will keep updating this to keep
|
||||||
|
@ -58,6 +58,8 @@ class WgetHTTPRequestHandler (BaseHTTPRequestHandler):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def test_cookies (self):
|
def test_cookies (self):
|
||||||
|
pass
|
||||||
|
"""
|
||||||
cookie_recd = self.headers.get ('Cookie')
|
cookie_recd = self.headers.get ('Cookie')
|
||||||
cookies = self.get_rule_list ('Cookie')
|
cookies = self.get_rule_list ('Cookie')
|
||||||
cookie_exp = cookies.cookie_value if cookies else None
|
cookie_exp = cookies.cookie_value if cookies else None
|
||||||
@ -67,6 +69,7 @@ class WgetHTTPRequestHandler (BaseHTTPRequestHandler):
|
|||||||
self.send_response (400, "Cookie Mismatch")
|
self.send_response (400, "Cookie Mismatch")
|
||||||
self.finish_headers ()
|
self.finish_headers ()
|
||||||
return False
|
return False
|
||||||
|
"""
|
||||||
|
|
||||||
def get_rule_list (self, name):
|
def get_rule_list (self, name):
|
||||||
r_list = self.rules.get (name) if name in self.rules else None
|
r_list = self.rules.get (name) if name in self.rules else None
|
||||||
|
@ -39,6 +39,10 @@ TESTS = Test-auth-basic-fail.py \
|
|||||||
Test-c-full.py \
|
Test-c-full.py \
|
||||||
Test-Content-disposition-2.py \
|
Test-Content-disposition-2.py \
|
||||||
Test-Content-disposition.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-Head.py \
|
||||||
Test-O.py
|
Test-O.py
|
||||||
|
|
||||||
|
58
testenv/Test-cookie-401.py
Executable file
58
testenv/Test-cookie-401.py
Executable 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)
|
56
testenv/Test-cookie-domain-mismatch.py
Executable file
56
testenv/Test-cookie-domain-mismatch.py
Executable 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
79
testenv/Test-cookie-expires.py
Executable 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
56
testenv/Test-cookie.py
Executable 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)
|
Loading…
Reference in New Issue
Block a user