The rules need not be a defaultdict.

This commit is contained in:
Darshit Shah 2013-08-31 20:57:45 +05:30
parent dccc154a0e
commit 50b4f0c72b
3 changed files with 26 additions and 13 deletions

View File

@ -1,3 +1,17 @@
2013-08-31 Darshit Shah <darnir@gmail.com>
* WgetTest.py: Remove import module defaultdict.
(CommonMethods.get_server_rules): server_rules should be a dict, not a
defaultdict (list).
* HTTPServer.py (WgetHTTPRequestHandler.get_rule_list): If rule does
not exist, return None. Not an emppty list.
(WgetHTTPRequestHandler.test_cookies): Rule variable is not a list
(__Handler.send_cust_headers): Same
(__Handler.custom_response): Same
(__Handler.is_authorized): Same
(__Handler.expect_headers): Same
(__Handler.reject_headers): Same
2013-08-31 Darshit Shah <darnir@gmail.com> 2013-08-31 Darshit Shah <darnir@gmail.com>
* README: (newfile) Simple help / instructions about using the Test * README: (newfile) Simple help / instructions about using the Test

View File

@ -56,7 +56,7 @@ class WgetHTTPRequestHandler (BaseHTTPRequestHandler):
def test_cookies (self): def test_cookies (self):
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[0].cookie_value if cookies else None cookie_exp = cookies.cookie_value if cookies else None
if cookie_exp == cookie_recd: if cookie_exp == cookie_recd:
return True return True
else: else:
@ -65,7 +65,7 @@ class WgetHTTPRequestHandler (BaseHTTPRequestHandler):
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 list () r_list = self.rules.get (name) if name in self.rules else None
return r_list return r_list
def do_QUIT (self): def do_QUIT (self):
@ -161,7 +161,7 @@ class __Handler (WgetHTTPRequestHandler):
def send_cust_headers (self): def send_cust_headers (self):
header_obj_list = self.get_rule_list ('SendHeader') header_obj_list = self.get_rule_list ('SendHeader')
if header_obj_list: if header_obj_list:
header_obj = header_obj_list[0] header_obj = header_obj_list
for header in header_obj.headers: for header in header_obj.headers:
self.send_header (header, header_obj.headers[header]) self.send_header (header, header_obj.headers[header])
@ -172,7 +172,7 @@ class __Handler (WgetHTTPRequestHandler):
def custom_response (self): def custom_response (self):
codes = self.get_rule_list ('Response') codes = self.get_rule_list ('Response')
if codes: if codes:
self.send_response (codes[0].response_code) self.send_response (codes.response_code)
self.finish_headers () self.finish_headers ()
return False return False
else: else:
@ -272,13 +272,13 @@ class __Handler (WgetHTTPRequestHandler):
auth_rule = self.get_rule_list ('Authentication') auth_rule = self.get_rule_list ('Authentication')
if auth_rule: if auth_rule:
auth_header = self.headers.get ("Authorization") auth_header = self.headers.get ("Authorization")
req_auth = auth_rule[0].auth_type req_auth = auth_rule.auth_type
if req_auth == "Both" or req_auth == "Both_inline": if req_auth == "Both" or req_auth == "Both_inline":
auth_type = auth_header.split(' ')[0] if auth_header else req_auth auth_type = auth_header.split(' ')[0] if auth_header else req_auth
else: else:
auth_type = req_auth auth_type = req_auth
assert hasattr (self, "authorize_" + auth_type) assert hasattr (self, "authorize_" + auth_type)
is_auth = getattr (self, "authorize_" + auth_type) (auth_header, auth_rule[0]) is_auth = getattr (self, "authorize_" + auth_type) (auth_header, auth_rule)
if is_auth is False: if is_auth is False:
self.send_response (401) self.send_response (401)
self.send_challenge (auth_type) self.send_challenge (auth_type)
@ -289,7 +289,7 @@ class __Handler (WgetHTTPRequestHandler):
""" This is modified code to handle a few changes. Should be removed ASAP """ """ This is modified code to handle a few changes. Should be removed ASAP """
exp_headers_obj = self.get_rule_list ('ExpectHeader') exp_headers_obj = self.get_rule_list ('ExpectHeader')
if exp_headers_obj: if exp_headers_obj:
exp_headers = exp_headers_obj[0].headers exp_headers = exp_headers_obj.headers
for header_line in exp_headers: for header_line in exp_headers:
header_re = self.headers.get (header_line) header_re = self.headers.get (header_line)
if header_re is None or header_re != exp_headers[header_line]: if header_re is None or header_re != exp_headers[header_line]:
@ -299,9 +299,9 @@ class __Handler (WgetHTTPRequestHandler):
return True return True
def reject_headers (self): def reject_headers (self):
rej_headers_list = self.get_rule_list ("RejectHeader") rej_headers = self.get_rule_list ("RejectHeader")
if rej_headers_list: if rej_headers:
rej_headers = rej_headers_list[0].headers rej_headers = rej_headers.headers
for header_line in rej_headers: for header_line in rej_headers:
header_re = self.headers.get (header_line) header_re = self.headers.get (header_line)
if header_re is not None and header_re == rej_headers[header_line]: if header_re is not None and header_re == rej_headers[header_line]:

View File

@ -7,7 +7,6 @@ import HTTPServer
import http.client import http.client
import re import re
from subprocess import call from subprocess import call
from collections import defaultdict
from ColourTerm import printer from ColourTerm import printer
""" A Custom Exception raised by the Test Environment. """ """ A Custom Exception raised by the Test Environment. """
@ -134,10 +133,10 @@ class CommonMethods:
options are parsed in a true and better fashion. For an example, options are parsed in a true and better fashion. For an example,
see the commented portion in Test-basic-auth.py. see the commented portion in Test-basic-auth.py.
""" """
server_rules = defaultdict (list) server_rules = dict ()
for rule in file_obj.rules: for rule in file_obj.rules:
r_obj = getattr (self, rule) (file_obj.rules[rule]) r_obj = getattr (self, rule) (file_obj.rules[rule])
server_rules[rule].append (r_obj) server_rules[rule] = r_obj
return server_rules return server_rules
""" Pre-Test Hook Function Calls """ """ Pre-Test Hook Function Calls """