def test_param_transform(self): # noqa: C901 input_params = { "AvailabilityZones": "$[taskcat_genaz_3]", "ByteValue": "1", "GlobalOverrideTest": "override", "LocalOverrideTest": "override", "PasswordA": "$[taskcat_genpass_8A]", "PasswordAConfirm": "$[taskcat_getval_PasswordA]", "PasswordB": "$[taskcat_genpass_32S]", "RandomNumber": "$[taskcat_random-numbers]", "RandomString": "$[taskcat_random-string]", "SingleAZ": "$[taskcat_getsingleaz_2]", "StackName": "TestStack", "UUID": "$[taskcat_genuuid]", "BucketRegion": "$[taskcat_current_region]", } bclient = MockClient bclient.logger = logger class_kwargs = self.class_kwargs class_kwargs["param_dict"] = input_params class_kwargs["boto_client"] = bclient pg = ParamGen(**class_kwargs) pg.transform_parameter() ignore_patterns = ["RE_COUNT"] missed_regex_patterns = [] regex_pattern_text = set() _found = False for rp in self.regex_patterns: regex_pattern_text.add(rp.test_pattern_attribute) for _param_key, param_value in pg.results.items(): if rp.test_pattern_attribute in ignore_patterns: continue with self.subTest( "Transformed Value: {} must not match Regex: {}". format(param_value, rp.test_pattern_attribute)): self.assertNotRegex(param_value, getattr(pg, rp.test_pattern_attribute)) regex_pattern_text = list(regex_pattern_text) for rp in self.regex_patterns: regex_test = re.compile(getattr(pg, rp.test_pattern_attribute)) for _param_key, param_value in input_params.items(): if regex_test.search(param_value): _found = True if not _found: missed_regex_patterns.append(rp.test_pattern_attribute) self.assertEqual(missed_regex_patterns, []) subtests = [ ("SingleAZ transformed value must be us-east-1b", "SingleAZ", "us-east-1b"), ( "CurrentRegion transformed must be us-east-1", "CurrentRegion", "us-east-1", ), ] for testdata in subtests: with self.subTest(testdata[0]): for _param_key, param_value in pg.results.items(): if _param_key == testdata[1]: self.assertEqual(param_value, testdata[2])
def test__get_test_name(self): input_params = {"Test_Name": "$[taskcat_test_name]"} bclient = MockClient bclient.logger = logger class_kwargs = self.class_kwargs class_kwargs["param_dict"] = input_params class_kwargs["boto_client"] = bclient pg = ParamGen(**class_kwargs) pg.transform_parameter() expected_result = {"Test_Name": "testy_mc_testerson"} self.assertEqual(pg.results, expected_result)
def test_list_as_param_value(self): input_params = { "ExampleList": [ "$[taskcat_getsingleaz_1]", "$[taskcat_getsingleaz_2]", "foobar", ], "ExampleString": "$[taskcat_getsingleaz_1]", } bclient = MockClient bclient.logger = logger class_kwargs = self.class_kwargs class_kwargs["param_dict"] = input_params class_kwargs["boto_client"] = bclient pg = ParamGen(**class_kwargs) pg.transform_parameter() expected_result = { "ExampleList": ["us-east-1a", "us-east-1b", "foobar"], "ExampleString": "us-east-1a", } self.assertEqual(pg.results, expected_result)