From 94a55827e73a893fb0831ff1bc88213a96fa6543 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 28 Aug 2017 18:52:55 +0800 Subject: [PATCH] convert keys in request headers to lowercase --- ate/context.py | 10 +++++++++- tests/test_context.py | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/ate/context.py b/ate/context.py index 6d396716..bf80a8ce 100644 --- a/ate/context.py +++ b/ate/context.py @@ -6,8 +6,9 @@ import sys import types from collections import OrderedDict -from ate.testcase import TestcaseParser from ate import utils +from ate.exception import ParamsError +from ate.testcase import TestcaseParser def is_function(tup): @@ -114,6 +115,13 @@ class Context(object): self.testcase_parser.bind_functions(self.testcase_functions_config) def register_request(self, request_dict, level="testcase"): + if "headers" in request_dict: + # convert keys in request headers to lowercase + headers = request_dict.pop("headers") + if not isinstance(headers, dict): + raise ParamsError("HTTP Request Headers invalid!") + request_dict["headers"] = {key.lower(): headers[key] for key in headers} + self.__update_context_request_config(level, request_dict) def __update_context_request_config(self, level, config_mapping): diff --git a/tests/test_context.py b/tests/test_context.py index 0205de02..1a3f24dc 100644 --- a/tests/test_context.py +++ b/tests/test_context.py @@ -3,6 +3,7 @@ import unittest from ate import utils, runner from ate.context import Context +from ate.exception import ParamsError class VariableBindsUnittest(unittest.TestCase): @@ -159,6 +160,28 @@ class VariableBindsUnittest(unittest.TestCase): authorization = context_variables["authorization"] self.assertEqual(utils.gen_md5(TOKEN, data, random), authorization) + def test_register_request(self): + request_dict = { + "url": "http://debugtalk.com", + "method": "GET", + "headers": { + "Content-Type": "application/json", + "USER-AGENT": "ios/10.3" + } + } + self.context.register_request(request_dict) + + parsed_request = self.context.get_parsed_request() + self.assertIn("content-type", parsed_request["headers"]) + self.assertIn("user-agent", parsed_request["headers"]) + + request_dict = { + "headers": "invalid headers" + } + with self.assertRaises(ParamsError): + self.context.register_request(request_dict) + + def test_get_parsed_request(self): test_runner = runner.Runner() testcase = {