def test_fuzz_data_dict_with_list(self): """Test _fuzz_data with a dict containing a list.""" strings = ["test"] expected = [ { "a": ["test", "val2", "val3"], "b": "c" }, { "a": ["val", "test", "val3"], "b": "c" }, { "a": ["val", "val2", "test"], "b": "c" }, { "a": ["val", "val2", "val3"], "b": "test" } ] i = 0 for i, result in enumerate( fuzz_datagen._fuzz_data(strings, test_dict_w_list, action_field, "unittest"), 1): name, model, string, param_path = result self.assertIn(model, expected) self.assertEqual("unitteststr1_model{0}".format(i), name) self.assertEqual(4, i)
def test_fuzz_data_xml(self): """Test _fuzz_data_ with an XML element.""" data = ElementTree.Element("a") sub_ele = ElementTree.Element("b") sub_ele.text = "c" sub_ele.attrib = {"name": "val"} sub_ele2 = ElementTree.Element("ACTION_FIELD:d") sub_ele2.text = "e" data.append(sub_ele) data.append(sub_ele2) strings = ["test"] contents = [] expected_contents = [ '<a><b name="val">test</b><ACTION_FIELD:d>e</ACTION_FIELD:d></a>', '<a><b name="test">c</b><ACTION_FIELD:d>e</ACTION_FIELD:d></a>' ] for i, d in enumerate( fuzz_datagen._fuzz_data(strings, data, "ACTION_FIELD:", "unittest"), 1): name, model, stri, param_path = d self.assertEqual("unitteststr1_model{0}".format(i), name) self.assertEqual("test", stri) if six.PY2: contents.append(ElementTree.tostring(model)) else: contents.append(ElementTree.tostring(model).decode("utf-8")) self.assertEqual(expected_contents, contents)
def test_invalid_type(self): """Test _fuzz_data with a list (invalid type).""" data = set(["list", "of", "strings"]) strings = ["test"] self.assertRaises( TypeError, fuzz_datagen._fuzz_data(strings, data, action_field, "unittest"))
def test_fuzz_data_dict(self): """Test _fuzz_data with a dict.""" strings = ["test"] for i, d in enumerate( fuzz_datagen._fuzz_data(strings, test_dict, action_field, "unittest"), 1): name, model, stri, param_path = d self.assertEqual("unitteststr1_model{0}".format(i), name) self.assertEqual("e", model.get("a").get("ACTION_FIELD:d")) self.assertEqual("test", model.get("a").get("b")) self.assertEqual("test", stri) self.assertEqual("a/b", param_path)
def test_fuzz_data_string(self): """Test _fuzz_data with a string like a URL.""" data = "TEST_STRING/{ST}" strings = ["test"] for i, d in enumerate( fuzz_datagen._fuzz_data(strings, data, action_field, "unittest"), 1): name, model, stri, param_path = d self.assertEqual("unitteststr1_model{0}".format(i), name) self.assertEqual("TEST_STRING/test", model) self.assertEqual("test", stri) self.assertEqual("ST", param_path)
def test_fuzz_data_with_one_named_one_unnamed(self): """Test _fuzz_data with 1 named, 1 unnamed URL variables.""" strings = ["test", "test2"] data = "/api/v1/{key:val}/path/{otherkey}" expected_results = [ ("unitteststr1_model1", "/api/v1/test/path/{otherkey}", "test", "key"), ("unitteststr1_model2", "/api/v1/{key:val}/path/test", "test", "otherkey"), ("unitteststr2_model1", "/api/v1/test2/path/{otherkey}", "test2", "key"), ("unitteststr2_model2", "/api/v1/{key:val}/path/test2", "test2", "otherkey") ] results = [ d for d in fuzz_datagen._fuzz_data(strings, data, action_field, "unittest") ] self.assertEqual(expected_results, results)