def setUp(self): from servicecatalog_puppet.manifest_utils import Manifest self.sut = Manifest()
class TestManifest(unittest.TestCase): account_a = { "account_id": "012345678910", "default_region": "eu-west-1", "name": "accounta", "expanded_from": "ou-aaaa-aaaaaaaa", "organization": "o-aaaaaaaa", "regions_enabled": [ "eu-west-2", ], "tags": ["group:A"], } account_b = { "account_id": "009876543210", "default_region": "us-west-1", "expanded_from": "ou-bbbb-bbbbbbbb", "organization": "o-bbbbbbbb", "name": "accountb", "regions_enabled": [ "us-west-2", ], "tags": ["group:B"], } account_c = { "account_id": "432100098765", "default_region": "ap-west-1", "name": "accountc", "regions_enabled": [ "ap-west-2", ], "tags": ["group:C"], } accounts = { "accounts": [ account_a, account_b, account_c, ] } launch_a = { "portfolio": "portfolio_a", "product": "product_a", "execution": "hub", "version": "version_a", "deploy_to": { "tags": [{ "regions": "default_region", "tag": "group:A" }] }, } assertion_a = { "expected": { "foo": "bar" }, "actual": { "bar": "foo" }, "assert_for": { "tags": [{ "regions": "default_region", "tag": "group:A" }] }, } spoke_local_portfolio_a = { "portfolio": "portfolio_a", "deploy_to": { "tags": [{ "regions": "default_region", "tag": "group:A" }] }, } launch_b = { "portfolio": "portfolio_b", "product": "product_b", "version": "version_b", "execution": "hub", "deploy_to": { "tags": [{ "regions": "default_region", "tag": "group:B" }] }, } launch_c = { "portfolio": "portfolio_c", "product": "product_c", "version": "version_c", "execution": "hub", "deploy_to": { "tags": [{ "regions": "enabled_regions", "tag": "group:B" }] }, } launches = dict( launches=dict(launch_a=launch_a, launch_b=launch_b, launch_c=launch_c)) assertions = dict(assertions=dict(assertion_a=assertion_a)) spoke_local_portfolios = { "spoke-local-portfolios": dict(spoke_local_portfolio_a=spoke_local_portfolio_a) } puppet_account_id = "0123456789010" def setUp(self): from servicecatalog_puppet.manifest_utils import Manifest self.sut = Manifest() def tearDown(self): self.sut = None def test_get_provisioning_tasks_for_launch_and_region_for_tags(self): # setup puppet_account_id = "pppppppppppp" section_name = "launches" item_name = "launch_a" region = "eu-west-1" self.sut.update(deepcopy(self.accounts)) self.sut.update(deepcopy(self.launches)) expected_result = [{ "account_id": "012345678910", "account_parameters": {}, "execution": "hub", "launch_name": item_name, "launch_parameters": {}, "manifest_parameters": {}, "portfolio": "portfolio_a", "product": "product_a", "puppet_account_id": puppet_account_id, "region": region, "ssm_param_outputs": [], "requested_priority": 0, "version": "version_a", }] # exercise actual_results = self.sut.get_tasks_for_launch_and_region( puppet_account_id, section_name, item_name, region) # verify self.assertListEqual(expected_result, actual_results) def test_get_provisioning_tasks_for_spoke_local_portfolios_and_region_for_tags( self, ): # setup puppet_account_id = "pppppppppppp" section_name = "spoke-local-portfolios" item_name = "spoke_local_portfolio_a" region = "eu-west-1" self.sut.update(deepcopy(self.accounts)) self.sut.update(deepcopy(self.launches)) self.sut.update(deepcopy(self.spoke_local_portfolios)) expected_result = [{ "account_id": "012345678910", "spoke_local_portfolio_name": item_name, "portfolio": "portfolio_a", "puppet_account_id": puppet_account_id, "region": region, "associations": [], "launch_constraints": [], "organization": "", "product_generation_method": "copy", "sharing_mode": "ACCOUNT", }] # exercise actual_results = self.sut.get_tasks_for_launch_and_region( puppet_account_id, section_name, item_name, region) # verify self.assertListEqual(expected_result, actual_results) def test_get_provisioning_tasks_for_launch_and_region_for_accounts(self): # setup puppet_account_id = "pppppppppppp" section_name = "launches" item_name = "launch_a" region = "eu-west-2" self.sut.update(deepcopy(self.accounts)) self.sut.update(deepcopy(self.launches)) self.sut[section_name][item_name]["deploy_to"] = dict(accounts=[ dict(account_id="012345678910", regions="enabled_regions") ]) expected_result = [{ "account_id": "012345678910", "account_parameters": {}, "execution": "hub", "launch_name": item_name, "launch_parameters": {}, "manifest_parameters": {}, "portfolio": "portfolio_a", "product": "product_a", "puppet_account_id": puppet_account_id, "region": region, "ssm_param_outputs": [], "requested_priority": 0, "version": "version_a", }] # exercise actual_results = self.sut.get_tasks_for_launch_and_region( puppet_account_id, section_name, item_name, region) # verify self.assertListEqual(expected_result, actual_results) def test_get_assertion_tasks_for_launch_and_region_for_accounts(self): # setup puppet_account_id = "pppppppppppp" section_name = "assertions" item_name = "assertion_a" region = "eu-west-1" self.sut.update(deepcopy(self.accounts)) self.sut.update(deepcopy(self.assertions)) expected_result = [{ "account_id": "012345678910", "assertion_name": item_name, "puppet_account_id": puppet_account_id, "region": region, "execution": constants.EXECUTION_MODE_DEFAULT, "requested_priority": 0, "expected": { "foo": "bar" }, "actual": { "bar": "foo" }, }] # exercise actual_results = self.sut.get_tasks_for_launch_and_region( puppet_account_id, section_name, item_name, region) # verify self.assertListEqual(expected_result, actual_results) def test_get_regions_used_for_section_item_for_tags_and_default_region( self): # setup puppet_account_id = "01234567890" section_name = "launches" item_name = "launch_a" self.sut.update(deepcopy(self.accounts)) self.sut.get("accounts").append({ "account_id": "9875983465794387", "default_region": "eu-west-3", "name": "accounta", "expanded_from": "ou-aaaa-aaaaaaaa", "organization": "o-aaaaaaaa", "regions_enabled": [ "eu-west-2", ], "tags": ["group:A"], }) self.sut.update(deepcopy(self.launches)) expected_result = ["eu-west-1", "eu-west-3"] # exercise actual_results = self.sut.get_regions_used_for_section_item( puppet_account_id, section_name, item_name) actual_results.sort() # verify self.assertListEqual(expected_result, actual_results) def test_get_regions_used_for_section_item_for_accounts_and_default_region( self): # setup puppet_account_id = "01234567890" section_name = "launches" item_name = "launch_a" self.sut.update(deepcopy(self.accounts)) self.sut.get("accounts").append({ "account_id": "9875983465794387", "default_region": "eu-west-99", "name": "accounta", "expanded_from": "ou-aaaa-aaaaaaaa", "organization": "o-aaaaaaaa", "regions_enabled": [ "eu-west-2", ], "tags": ["group:A"], }) self.sut.update(deepcopy(self.launches)) self.sut["launches"][item_name]["deploy_to"] = dict(accounts=[ dict(account_id="9875983465794387", regions="default_region") ]) expected_result = ["eu-west-99"] # exercise actual_results = self.sut.get_regions_used_for_section_item( puppet_account_id, section_name, item_name) # verify self.assertListEqual(expected_result, actual_results) def test_get_regions_used_for_section_item_for_enabled_region(self): # setup puppet_account_id = "01234567890" section_name = "launches" item_name = "launch_c" self.sut.update(deepcopy(self.accounts)) self.sut.get("accounts").append({ "account_id": "9875983465794387", "default_region": "eu-west-3", "name": "accounta", "expanded_from": "ou-aaaa-aaaaaaaa", "organization": "o-aaaaaaaa", "regions_enabled": [ "eu-west-2", ], "tags": ["group:A"], }) self.sut.update(deepcopy(self.launches)) expected_result = ["us-west-2"] # exercise actual_results = self.sut.get_regions_used_for_section_item( puppet_account_id, section_name, item_name) # verify self.assertListEqual(expected_result, actual_results) def test_get_accounts_by_region(self): # setup self.sut.update(deepcopy(self.accounts)) expected_regions = [ "eu-west-1", "eu-west-2", "us-west-1", "us-west-2", "ap-west-1", "ap-west-2", ] # exercise actual_result = self.sut.get_accounts_by_region() actual_regions = list(actual_result.keys()) # verify self.assertCountEqual(expected_regions, actual_regions) self.assertEqual(actual_result.get("eu-west-1"), [self.account_a]) self.assertIsNone(actual_result.get("eu-west-999")) @skip def test_get_shares_by_region_portfolio_account(self): # setup self.sut.update(deepcopy(self.accounts)) self.sut.update(deepcopy(self.launches)) # exercise actual_result = self.sut.get_shares_by_region_portfolio_account( self.puppet_account_id, "launches") # verify self.assertIsNotNone(actual_result.get("eu-west-1").get("portfolio_a")) self.assertEqual( actual_result.get("eu-west-1").get("portfolio_a").get( "012345678910"), self.account_a, ) self.assertIsNotNone(actual_result.get("us-west-1").get("portfolio_b")) self.assertEqual( actual_result.get("us-west-1").get("portfolio_b").get( "009876543210"), self.account_b, ) def test_get_sharing_policies_by_region(self): # setup self.sut.update(deepcopy(self.accounts)) self.sut.update(deepcopy(self.launches)) # exercise actual_result = self.sut.get_sharing_policies_by_region() # verify self.assertIsNotNone(actual_result.get("eu-west-1")) self.assertEqual( actual_result.get("eu-west-1"), dict(organizations=["o-aaaaaaaa"], accounts=[]), ) self.assertEqual( actual_result.get("us-west-1"), dict(organizations=["o-bbbbbbbb"], accounts=[]), ) self.assertEqual( actual_result.get("ap-west-1"), dict(organizations=[], accounts=["432100098765"]), )
class TestManifest(unittest.TestCase): account_a = { "account_id": "012345678910", "default_region": "eu-west-1", "name": "accounta", "expanded_from": "ou-aaaa-aaaaaaaa", "organization": "o-aaaaaaaa", "regions_enabled": ["eu-west-2",], "tags": ["group:A"], } account_b = { "account_id": "009876543210", "default_region": "us-west-1", "expanded_from": "ou-bbbb-bbbbbbbb", "organization": "o-bbbbbbbb", "name": "accountb", "regions_enabled": ["us-west-2",], "tags": ["group:B"], } account_c = { "account_id": "432100098765", "default_region": "ap-west-1", "name": "accountc", "regions_enabled": ["ap-west-2",], "tags": ["group:C"], } accounts = {"accounts": [account_a, account_b, account_c,]} launch_a = { "portfolio": "portfolio_a", "product": "product_a", "version": "version_a", "deploy_to": {"tags": [{"regions": "default_region", "tag": "group:A"}]}, } launch_b = { "portfolio": "portfolio_b", "product": "product_b", "version": "version_b", "deploy_to": {"tags": [{"regions": "default_region", "tag": "group:B"}]}, } launches = dict(launches=dict(launch_a=launch_a, launch_b=launch_b)) puppet_account_id = "0123456789010" def setUp(self): from servicecatalog_puppet.manifest_utils import Manifest self.sut = Manifest() def tearDown(self): self.sut = None def test_get_accounts_by_region(self): # setup self.sut.update(self.accounts) expected_regions = [ "eu-west-1", "eu-west-2", "us-west-1", "us-west-2", "ap-west-1", "ap-west-2", ] # exercise actual_result = self.sut.get_accounts_by_region() actual_regions = list(actual_result.keys()) # verify self.assertCountEqual(expected_regions, actual_regions) self.assertEqual(actual_result.get("eu-west-1"), [self.account_a]) self.assertIsNone(actual_result.get("eu-west-999")) def test_get_shares_by_region_portfolio_account(self): # setup self.sut.update(self.accounts) self.sut.update(self.launches) # exercise actual_result = self.sut.get_shares_by_region_portfolio_account( self.puppet_account_id ) # verify self.assertIsNotNone(actual_result.get("eu-west-1").get("portfolio_a")) self.assertEqual( actual_result.get("eu-west-1").get("portfolio_a").get("012345678910"), self.account_a, ) self.assertIsNotNone(actual_result.get("us-west-1").get("portfolio_b")) self.assertEqual( actual_result.get("us-west-1").get("portfolio_b").get("009876543210"), self.account_b, ) def test_get_sharing_policies_by_region(self): # setup self.sut.update(self.accounts) self.sut.update(self.launches) # exercise actual_result = self.sut.get_sharing_policies_by_region() # verify self.assertIsNotNone(actual_result.get("eu-west-1")) self.assertEqual( actual_result.get("eu-west-1"), dict(organizations=["o-aaaaaaaa"], accounts=[]), ) self.assertEqual( actual_result.get("us-west-1"), dict(organizations=["o-bbbbbbbb"], accounts=[]), ) self.assertEqual( actual_result.get("ap-west-1"), dict(organizations=[], accounts=["432100098765"]), )