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"""
11TEST_NAME = "Cookie Expires"
12############# File Definitions ###############################################
13File1 = "Hello World!"
14File2 = "'Ello! This is Amazing!"
15File3 = "So what are we looking at?"
16File4 = "This was downloaded"
17
18File1_rules = {
19    "SendHeader"        : {
20        "Set-Cookie"    : "sess-id=0213; path=/"
21    }
22}
23File2_rules = {
24    "ExpectHeader"      : {
25        "Cookie"        : "sess-id=0213"
26    },
27    "SendHeader"        : {
28        "Set-Cookie"    : "new-sess=N"
29    }
30}
31File3_rules = {
32    "SendHeader"        : {
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                name=TEST_NAME,
75                pre_hook=pre_test,
76                test_params=test_options,
77                post_hook=post_test
78).begin ()
79
80exit (err)
81