mirror of https://gitee.com/openkylin/wget.git
139 lines
4.0 KiB
Python
Executable File
139 lines
4.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from sys import exit
|
|
from test.http_test import HTTPTest
|
|
from misc.wget_file import WgetFile
|
|
|
|
"""
|
|
Simple test for HTTP Conditional-GET Requests using the -N command
|
|
"""
|
|
############# File Definitions ###############################################
|
|
# Keep same length !
|
|
Cont1 = """THIS IS 1 FILE"""
|
|
Cont2 = """THIS IS 2 FILE"""
|
|
Cont3 = """THIS IS 3 FILE"""
|
|
Cont4 = """THIS IS 4 FILE"""
|
|
|
|
# Local Wget files
|
|
|
|
# These have same timestamp as remote files
|
|
UpToDate_Local_File1 = WgetFile ("UpToDateFile1", Cont1, timestamp="1995-01-01 00:00:00")
|
|
UpToDate_Local_File2 = WgetFile ("UpToDateFile2", Cont1, timestamp="1995-01-01 00:00:00")
|
|
UpToDate_Local_File3 = WgetFile ("UpToDateFile3", Cont1, timestamp="1995-01-01 00:00:00")
|
|
|
|
# This is newer than remote (expected same behaviour as for above files)
|
|
Newer_Local_File = WgetFile ("NewerFile", Cont1, timestamp="1995-02-02 02:02:02")
|
|
|
|
# This is older than remote - should be clobbered
|
|
Outdated_Local_File = WgetFile ("UpdatedFile", Cont2, timestamp="1990-01-01 00:00:00")
|
|
|
|
UpToDate_Rules1 = {
|
|
"SendHeader" : {
|
|
# RFC1123 format
|
|
"Last-Modified" : "Sun, 01 Jan 1995 00:00:00 GMT",
|
|
},
|
|
"Response": 304,
|
|
"ExpectHeader" : {
|
|
"If-Modified-Since" : "Sun, 01 Jan 1995 00:00:00 GMT"
|
|
},
|
|
}
|
|
|
|
UpToDate_Rules2 = {
|
|
"SendHeader" : {
|
|
# RFC850 format
|
|
"Last-Modified" : "Sunday, 01-Jan-95 00:00:00 GMT",
|
|
},
|
|
"Response": 304,
|
|
"ExpectHeader" : {
|
|
"If-Modified-Since" : "Sun, 01 Jan 1995 00:00:00 GMT"
|
|
},
|
|
}
|
|
|
|
UpToDate_Rules3 = {
|
|
"SendHeader" : {
|
|
# Asctime format
|
|
"Last-Modified" : "Sun Jan 01 00:00:00 1995",
|
|
},
|
|
"Response": 304,
|
|
"ExpectHeader" : {
|
|
"If-Modified-Since" : "Sun, 01 Jan 1995 00:00:00 GMT"
|
|
},
|
|
}
|
|
|
|
Newer_Rules = {
|
|
"SendHeader" : {
|
|
# Asctime format
|
|
"Last-Modified" : "Sun Jan 01 00:00:00 1995",
|
|
},
|
|
"Response": 304,
|
|
"ExpectHeader" : {
|
|
"If-Modified-Since" : "Thu, 02 Feb 1995 02:02:02 GMT"
|
|
},
|
|
}
|
|
|
|
Outdated_Rules = {
|
|
"SendHeader" : {
|
|
# RFC850 format
|
|
"Last-Modified" : "Thursday, 01-Jan-15 00:00:00 GMT",
|
|
},
|
|
"ExpectHeader" : {
|
|
"If-Modified-Since" : "Mon, 01 Jan 1990 00:00:00 GMT",
|
|
},
|
|
}
|
|
|
|
UpToDate_Server_File1 = WgetFile ("UpToDateFile1", Cont3, rules=UpToDate_Rules1)
|
|
UpToDate_Server_File2 = WgetFile ("UpToDateFile2", Cont3, rules=UpToDate_Rules2)
|
|
UpToDate_Server_File3 = WgetFile ("UpToDateFile3", Cont3, rules=UpToDate_Rules3)
|
|
Newer_Server_File = WgetFile ("NewerFile", Cont3, rules=Newer_Rules)
|
|
Updated_Server_File = WgetFile ("UpdatedFile", Cont4, rules=Outdated_Rules)
|
|
|
|
WGET_OPTIONS = "-N"
|
|
WGET_URLS = [["UpToDateFile1", "UpToDateFile2", "UpToDateFile3", "NewerFile",
|
|
"UpdatedFile", ]]
|
|
|
|
Files = [[UpToDate_Server_File1, UpToDate_Server_File2, UpToDate_Server_File3,
|
|
Newer_Server_File, Updated_Server_File, ]]
|
|
|
|
Existing_Files = [UpToDate_Local_File1, UpToDate_Local_File2,
|
|
UpToDate_Local_File3, Newer_Local_File, Outdated_Local_File]
|
|
|
|
ExpectedReturnCode = 0
|
|
|
|
# The uptodate file should not be downloaded
|
|
ExpectedDownloadedFiles = [UpToDate_Local_File1, UpToDate_Local_File2,
|
|
UpToDate_Local_File3, Newer_Local_File,
|
|
Updated_Server_File]
|
|
|
|
# Kind of hack to ensure proper request types
|
|
Request_List = [
|
|
[
|
|
"GET /UpToDateFile1",
|
|
"GET /UpToDateFile2",
|
|
"GET /UpToDateFile3",
|
|
"GET /NewerFile",
|
|
"GET /UpdatedFile",
|
|
]
|
|
]
|
|
|
|
################ Pre and Post Test Hooks #####################################
|
|
pre_test = {
|
|
"ServerFiles" : Files,
|
|
"LocalFiles" : Existing_Files
|
|
}
|
|
test_options = {
|
|
"WgetCommands" : WGET_OPTIONS,
|
|
"Urls" : WGET_URLS
|
|
}
|
|
post_test = {
|
|
"ExpectedFiles" : ExpectedDownloadedFiles,
|
|
"ExpectedRetcode" : ExpectedReturnCode,
|
|
"FilesCrawled" : Request_List,
|
|
}
|
|
|
|
err = HTTPTest (
|
|
pre_hook=pre_test,
|
|
test_params=test_options,
|
|
post_hook=post_test
|
|
).begin ()
|
|
|
|
exit (err)
|