Exemplo n.º 1
0
    def _make_request_data(self, testcase_dict, entry_json):
        """ parse HAR entry request data, and make testcase request data
        @param (dict) entry_json
            {
                "request": {
                    "method": "POST",
                    "postData": {
                        "mimeType": "application/x-www-form-urlencoded; charset=utf-8",
                        "params": [
                            {"name": "a", "value": 1},
                            {"name": "b", "value": "2"}
                        }
                    },
                },
                "response": {...}
            }
        @output testcase_dict:
            {
                "request": {
                    "method": "POST",
                    "data": {"v": "1", "w": "2"}
                }
            }
        """
        method = entry_json["request"].get("method")
        if not method:
            logging.exception("method missed in request.")
            sys.exit(1)

        testcase_dict["request"]["method"] = method
        if method == "POST":
            mimeType = entry_json["request"].get("postData",
                                                 {}).get("mimeType")

            # Note that text and params fields are mutually exclusive.
            params = entry_json["request"].get("postData",
                                               {}).get("params", [])
            text = entry_json["request"].get("postData", {}).get("text")
            if text:
                post_data = text
            else:
                post_data = utils.convert_list_to_dict(params)

            request_data_key = "data"
            if not mimeType:
                pass
            elif mimeType.startswith("application/json"):
                post_data = json.loads(post_data)
                request_data_key = "json"
            elif mimeType.startswith("application/x-www-form-urlencoded"):
                post_data = utils.x_www_form_urlencoded(post_data)
            else:
                #TODO: make compatible with more mimeType
                pass

            testcase_dict["request"][request_data_key] = post_data
Exemplo n.º 2
0
 def test_x_www_form_urlencoded(self):
     origin_dict = {"a": 1, "b": "2"}
     self.assertIn("a=1", utils.x_www_form_urlencoded(origin_dict))
     self.assertIn("b=2", utils.x_www_form_urlencoded(origin_dict))