1#!/usr/bin/env python3
2from sys import exit
3from test.http_test import HTTPTest
4from misc.wget_file import WgetFile
5
6"""
7    This test ensures that Wget handles Cookie expiry dates correctly.
8    Simultaneuously, we also check if multiple cookies to the same domain
9    are handled correctly
10"""
11############# File Definitions ###############################################
12File1 = "Hello World!"
13File2 = "'Ello! This is Amazing!"
14File3 = "So what are we looking at?"
15File4 = "This was downloaded"
16
17File1_rules = {
18    "SendHeader"        : {
19        "Set-Cookie"    : "sess-id=0213; path=/"
20    }
21}
22File2_rules = {
23    "ExpectHeader"      : {
24        "Cookie"        : "sess-id=0213"
25    },
26    "SendHeader"        : {
27        "Set-Cookie"    : "new-sess=N"
28    }
29}
30File3_rules = {
31    "SendHeader"        : {
32        # use upper case 'I' to provoke Wget failure with turkish locale
33        "Set-Cookie"    : "sess-id=0213; path=/; ExPIRes=Sun, 06 Nov 2001 12:32:43 GMT"
34    },
35    "ExpectHeader"      : {
36        "Cookie"        : "new-sess=N; sess-id=0213"
37    }
38}
39File4_rules = {
40    "RejectHeader"      : {
41        "Cookie"        : "sess-id=0213"
42    },
43    "ExpectHeader"      : {
44        "Cookie"        : "new-sess=N"
45    }
46}
47A_File = WgetFile ("File1", File1, rules=File1_rules)
48B_File = WgetFile ("File2", File2, rules=File2_rules)
49C_File = WgetFile ("File3", File3, rules=File3_rules)
50D_File = WgetFile ("File4", File4, rules=File4_rules)
51
52WGET_OPTIONS = ""
53WGET_URLS = [["File1", "File2", "File3", "File4"]]
54
55Files = [[A_File, B_File, C_File, D_File]]
56
57ExpectedReturnCode = 0
58ExpectedDownloadedFiles = [A_File, B_File, C_File, D_File]
59
60################ Pre and Post Test Hooks #####################################
61pre_test = {
62    "ServerFiles"       : Files
63}
64test_options = {
65    "WgetCommands"      : WGET_OPTIONS,
66    "Urls"              : WGET_URLS
67}
68post_test = {
69    "ExpectedFiles"     : ExpectedDownloadedFiles,
70    "ExpectedRetcode"   : ExpectedReturnCode
71}
72
73err = HTTPTest (
74                pre_hook=pre_test,
75                test_params=test_options,
76                post_hook=post_test
77).begin ()
78
79exit (err)
80