def test_duplicate_providers(self) -> None: self.test_data.saas_files = [self.saas1] provider1_duplicate = deepcopy(self.provider1) self.test_data.providers = [self.provider1, provider1_duplicate] msg = r"There are duplicates in tekton providers names: provider1" with pytest.raises(otr.OpenshiftTektonResourcesBadConfigError, match=msg): otr.fetch_tkn_providers(None)
def test_task_templates_resource_too_long(self) -> None: self.test_data.saas_files = [self.saas1] self.test_data.providers = [self.provider1] msg = r"name o-openshift-saas-deploy-saas1 is longer than 1 characters" with pytest.raises(otr.OpenshiftTektonResourcesNameTooLongError, match=msg): otr.fetch_desired_resources(otr.fetch_tkn_providers(None))
def test_managed_resources_from_desired_resources(self) -> None: self.test_data.saas_files = [self.saas1, self.saas2, self.saas2_wr] self.test_data.providers = [self.provider1, self.provider2_wr] tkn_providers = otr.fetch_tkn_providers(None) _ = otr.fetch_desired_resources(tkn_providers) p1_managed = tkn_providers[ self.provider1["name"]]["namespace"]["managedResourceNames"] p2_managed = tkn_providers[ self.provider2_wr["name"]]["namespace"]["managedResourceNames"] assert len(p1_managed) == 2 assert len(p2_managed) == 2 # 1 namespace task, 1 saas file task, 1 saas file pipeline for managed in p1_managed: if managed["resource"] == "Task": assert len(managed["resourceNames"]) == 2 else: assert len(managed["resourceNames"]) == 1 # 1 namespace task, 2 saas file tasks, 2 saas file pipelines for managed in p2_managed: if managed["resource"] == "Task": assert len(managed["resourceNames"]) == 3 else: assert len(managed["resourceNames"]) == 2
def test_task_templates_unknown_deploy_resources_step(self) -> None: self.test_data.saas_files = [self.saas1] self.test_data.providers = [self.provider1] msg = (r"Cannot find a step named unknown-step to set resources in " r"task template openshift-saas-deploy") with pytest.raises(otr.OpenshiftTektonResourcesBadConfigError, match=msg): otr.fetch_desired_resources(otr.fetch_tkn_providers(None))
def test_fetch_tkn_providers(self) -> None: self.test_data.saas_files = [self.saas1, self.saas2] self.test_data.providers = [self.provider1, self.provider2_wr] tkn_providers = otr.fetch_tkn_providers(None) keys_expected = set( [self.provider1["name"], self.provider2_wr["name"]]) assert tkn_providers.keys() == keys_expected
def test_fetch_desired_resources(self) -> None: self.test_data.saas_files = [self.saas1, self.saas2, self.saas2_wr] self.test_data.providers = [self.provider1, self.provider2_wr] desired_resources = otr.fetch_desired_resources( otr.fetch_tkn_providers(None)) # we have one task per namespace and a pipeline + task per saas file assert len(desired_resources) == 8
def test_set_deploy_resources_from_saas_file(self) -> None: self.test_data.saas_files = [self.saas2_wr] self.test_data.providers = [self.provider2_wr] desired_resources = otr.fetch_desired_resources( otr.fetch_tkn_providers(None)) task_name = otr.build_one_per_saas_file_tkn_object_name( template_name=self.provider2_wr['taskTemplates'][0]['name'], saas_file_name=self.saas2['name']) self._test_deploy_resources_in_task(desired_resources, task_name, self.saas2_wr['deployResources'])
def test_task_templates_unknown_task(self) -> None: self.provider5_wut = self.fxt.get_json( "provider5-with-unknown-task.json") self.saas5 = self.fxt.get_json("saas5.json") self.test_data.saas_files = [self.saas5] self.test_data.providers = [self.provider5_wut] msg = (r"Unknown task this-is-an-unknown-task in pipeline template " r"openshift-saas-deploy") with pytest.raises(otr.OpenshiftTektonResourcesBadConfigError, match=msg): otr.fetch_desired_resources(otr.fetch_tkn_providers(None))
def test_task_templates_name_duplicates(self) -> None: self.provider4_wtd = self.fxt.get_json( "provider4-with-task-duplicates.json") self.saas4 = self.fxt.get_json("saas4.json") self.test_data.saas_files = [self.saas4] self.test_data.providers = [self.provider4_wtd] msg = (r"There are duplicates in task templates names in tekton " r"provider provider4-with-task-duplicates") with pytest.raises(otr.OpenshiftTektonResourcesBadConfigError, match=msg): otr.fetch_desired_resources(otr.fetch_tkn_providers(None))
def test_set_deploy_resources_default(self) -> None: self.test_data.saas_files = [self.saas1] self.test_data.providers = [self.provider1] desired_resources = otr.fetch_desired_resources( otr.fetch_tkn_providers(None)) # we need to locate the onePerSaasFile task in the desired resources # we could be very strict and find the onePerSaasFile task in # self.provider1 or just use the actual structure of the fixtures task_name = otr.build_one_per_saas_file_tkn_object_name( template_name=self.provider1['taskTemplates'][0]['name'], saas_file_name=self.saas1['name']) self._test_deploy_resources_in_task(desired_resources, task_name, otr.DEFAULT_DEPLOY_RESOURCES)
def test_fetch_desired_resources_names(self) -> None: self.test_data.saas_files = [self.saas1] self.test_data.providers = [self.provider1] desired_resources = otr.fetch_desired_resources( otr.fetch_tkn_providers(None)) expected_task_names = set([ "o-push-gateway-openshift-saas-deploy-task-status-metric", "o-openshift-saas-deploy-saas1", ]) expected_pipeline_name = "o-openshift-saas-deploy-saas1" task_names = set() for dr in desired_resources: body = dr["value"].body if body["kind"] == "Task": task_names.add(body["metadata"]["name"]) else: pipeline_name = body["metadata"]["name"] assert task_names == expected_task_names assert pipeline_name == expected_pipeline_name
def test_fetch_desired_resources_names(self) -> None: self.test_data.saas_files = [self.saas1] self.test_data.providers = [self.provider1] desired_resources = otr.fetch_desired_resources( otr.fetch_tkn_providers(None)) expected_task_names = set([ 'o-push-gateway-openshift-saas-deploy-task-status-metric', 'o-openshift-saas-deploy-saas1' ]) expected_pipeline_name = 'o-openshift-saas-deploy-saas1' task_names = set() for dr in desired_resources: body = dr['value'].body if body['kind'] == 'Task': task_names.add(body['metadata']['name']) else: pipeline_name = body['metadata']['name'] assert task_names == expected_task_names assert pipeline_name == expected_pipeline_name