Beispiel #1
0
    def test_parse_environ(self):
        os.environ["PROJECT_KEY"] = "ABCDEFGH"
        content = {"variables": [{"PROJECT_KEY": "${ENV(PROJECT_KEY)}"}]}
        result = parser.eval_lazy_data(content)

        content = {"variables": [{"PROJECT_KEY": "${ENV(PROJECT_KEY, abc)}"}]}
        with self.assertRaises(exceptions.ParamsError):
            parser.eval_lazy_data(content)

        content = {"variables": [{"PROJECT_KEY": "${ENV(abc=123)}"}]}
        with self.assertRaises(exceptions.ParamsError):
            parser.eval_lazy_data(content)
Beispiel #2
0
    def test_parse_data_multiple_identical_variables(self):
        variables_mapping = {"userid": 100, "data": 1498}
        content = "/users/$userid/training/$data?userId=$userid&data=$data"
        self.assertEqual(
            parser.eval_lazy_data(content,
                                  variables_mapping=variables_mapping),
            "/users/100/training/1498?userId=100&data=1498")

        variables_mapping = {"user": 100, "userid": 1000, "data": 1498}
        content = "/users/$user/$userid/$data?userId=$userid&data=$data"
        self.assertEqual(
            parser.eval_lazy_data(content,
                                  variables_mapping=variables_mapping),
            "/users/100/1000/1498?userId=1000&data=1498")
Beispiel #3
0
 def test_parse_data(self):
     content = {
         'request': {
             'url': '/api/users/$uid',
             'method': "$method",
             'headers': {
                 'token': '$token'
             },
             'data': {
                 "null": None,
                 "true": True,
                 "false": False,
                 "empty_str": "",
                 "value": "abc${add_one(3)}def"
             }
         }
     }
     variables_mapping = {"uid": 1000, "method": "POST", "token": "abc123"}
     functions_mapping = {"add_one": lambda x: x + 1}
     result = parser.eval_lazy_data(content, variables_mapping,
                                    functions_mapping)
     self.assertEqual("/api/users/1000", result["request"]["url"])
     self.assertEqual("abc123", result["request"]["headers"]["token"])
     self.assertEqual("POST", result["request"]["method"])
     self.assertIsNone(result["request"]["data"]["null"])
     self.assertTrue(result["request"]["data"]["true"])
     self.assertFalse(result["request"]["data"]["false"])
     self.assertEqual("", result["request"]["data"]["empty_str"])
     self.assertEqual("abc4def", result["request"]["data"]["value"])
Beispiel #4
0
    def test_parse_data_functions(self):
        import random, string
        functions_mapping = {
            "gen_random_string": gen_random_string
        }
        result = parser.eval_lazy_data("${gen_random_string(5)}", functions_mapping=functions_mapping)
        self.assertEqual(len(result), 5)

        add_two_nums = lambda a, b=1: a + b
        functions_mapping["add_two_nums"] = add_two_nums
        self.assertEqual(
            parser.eval_lazy_data("${add_two_nums(1)}", functions_mapping=functions_mapping),
            2
        )
        self.assertEqual(
            parser.eval_lazy_data("${add_two_nums(1, 2)}", functions_mapping=functions_mapping),
            3
        )
        self.assertEqual(
            parser.eval_lazy_data("/api/${add_two_nums(1, 2)}", functions_mapping=functions_mapping),
            "/api/3"
        )

        with self.assertRaises(exceptions.FunctionNotFound):
            parser.eval_lazy_data("/api/${gen_md5(abc)}", functions_mapping=functions_mapping)
Beispiel #5
0
 def test_parse_data_testcase(self):
     variables = {
         "uid": "1000",
         "random": "A2dEx",
         "authorization": "a83de0ff8d2e896dbd8efb81ba14e17d",
         "data": {"name": "user", "password": "******"}
     }
     functions = {
         "add_two_nums": lambda a, b=1: a + b,
         "get_timestamp": lambda: int(time.time() * 1000)
     }
     testcase_template = {
         "url": "http://127.0.0.1:5000/api/users/$uid/${add_two_nums(1,2)}",
         "method": "POST",
         "headers": {
             "Content-Type": "application/json",
             "authorization": "$authorization",
             "random": "$random",
             "sum": "${add_two_nums(1, 2)}"
         },
         "body": "$data"
     }
     parsed_testcase = parser.eval_lazy_data(
         testcase_template,
         variables_mapping=variables,
         functions_mapping=functions
     )
     self.assertEqual(
         parsed_testcase["url"],
         "http://127.0.0.1:5000/api/users/1000/3"
     )
     self.assertEqual(
         parsed_testcase["headers"]["authorization"],
         variables["authorization"]
     )
     self.assertEqual(
         parsed_testcase["headers"]["random"],
         variables["random"]
     )
     self.assertEqual(
         parsed_testcase["body"],
         variables["data"]
     )
     self.assertEqual(
         parsed_testcase["headers"]["sum"],
         3
     )
Beispiel #6
0
    def test_eval_lazy_data(self):
        variables_mapping = {
            "var_1": "abc",
            "var_2": "def",
            "var_3": 123,
            "var_4": {
                "a": 1
            },
            "var_5": True,
            "var_6": None
        }
        self.assertEqual(
            parser.eval_lazy_data("$var_1",
                                  variables_mapping=variables_mapping), "abc")
        self.assertEqual(
            parser.eval_lazy_data("var_1",
                                  variables_mapping=variables_mapping),
            "var_1")
        self.assertEqual(
            parser.eval_lazy_data("$var_1#XYZ",
                                  variables_mapping=variables_mapping),
            "abc#XYZ")
        self.assertEqual(
            parser.eval_lazy_data("/$var_1/$var_2/var3",
                                  variables_mapping=variables_mapping),
            "/abc/def/var3")
        self.assertEqual(
            parser.eval_lazy_data("/$var_1/$var_2/$var_1",
                                  variables_mapping=variables_mapping),
            "/abc/def/abc")
        self.assertEqual(
            parser.eval_lazy_data("$var_3",
                                  variables_mapping=variables_mapping), 123)
        self.assertEqual(
            parser.eval_lazy_data("$var_4",
                                  variables_mapping=variables_mapping),
            {"a": 1})
        self.assertEqual(
            parser.eval_lazy_data("$var_5",
                                  variables_mapping=variables_mapping), True)
        self.assertEqual(
            parser.eval_lazy_data("abc$var_5",
                                  variables_mapping=variables_mapping),
            "abcTrue")
        self.assertEqual(
            parser.eval_lazy_data("abc$var_4",
                                  variables_mapping=variables_mapping),
            "abc{'a': 1}")
        self.assertEqual(
            parser.eval_lazy_data("$var_6",
                                  variables_mapping=variables_mapping), None)

        with self.assertRaises(exceptions.VariableNotFound):
            parser.eval_lazy_data("/api/$SECRET_KEY",
                                  variables_mapping=variables_mapping)

        self.assertEqual(
            parser.eval_lazy_data(["$var_1", "$var_2"],
                                  variables_mapping=variables_mapping),
            ["abc", "def"])
        self.assertEqual(
            parser.eval_lazy_data({"$var_1": "$var_2"},
                                  variables_mapping=variables_mapping),
            {"abc": "def"})