def test_replacements(self): config = self.load() self.assertEqual( config.replacements, [ GitOpsConfig.Replacement( path="a.b", variable=GitOpsConfig.Replacement.Variable.ROUTE_HOST), GitOpsConfig.Replacement( path="c.d", variable=GitOpsConfig.Replacement.Variable.GIT_COMMIT), ], )
def setUp(self): self.init_mock_manager(CreatePreviewCommand) self.os_mock = self.monkey_patch(os) self.os_mock.path.isdir.return_value = True self.shutil_mock = self.monkey_patch(shutil) self.shutil_mock.copytree.return_value = None self.logging_mock = self.monkey_patch(logging) self.logging_mock.info.return_value = None self.update_yaml_file_mock = self.monkey_patch(update_yaml_file) self.update_yaml_file_mock.return_value = True self.yaml_file_dump_mock = self.monkey_patch(yaml_file_dump) self.yaml_file_dump_mock.return_value = None self.load_gitops_config_mock = self.monkey_patch(load_gitops_config) self.load_gitops_config_mock.return_value = GitOpsConfig( team_config_org="TEAM_CONFIG_ORG", team_config_repo="TEAM_CONFIG_REPO", application_name="my-app", route_host_template="app.xy-{SHA256_8CHAR_BRANCH_HASH}.example.tld", replacements=[ GitOpsConfig.Replacement( path="image.tag", variable=GitOpsConfig.Replacement.Variable.GIT_COMMIT), GitOpsConfig.Replacement( path="route.host", variable=GitOpsConfig.Replacement.Variable.ROUTE_HOST), ], ) self.git_repo_api_mock = self.create_mock(GitRepoApi) self.git_repo_api_factory_mock = self.monkey_patch(GitRepoApiFactory) self.git_repo_api_factory_mock.create.return_value = self.git_repo_api_mock self.git_repo_mock = self.monkey_patch(GitRepo) self.git_repo_mock.return_value = self.git_repo_mock self.git_repo_mock.__enter__.return_value = self.git_repo_mock self.git_repo_mock.__exit__.return_value = False self.git_repo_mock.get_full_file_path.side_effect = lambda x: f"/tmp/created-tmp-dir/{x}" self.git_repo_mock.clone.return_value = None self.git_repo_mock.commit.return_value = None self.git_repo_mock.push.return_value = None self.seal_mocks()
def setUp(self): self.init_mock_manager(CreatePreviewCommand) self.os_mock = self.monkey_patch(os) self.os_mock.path.isdir.return_value = True self.shutil_mock = self.monkey_patch(shutil) self.shutil_mock.copytree.return_value = None self.logging_mock = self.monkey_patch(logging) self.logging_mock.info.return_value = None self.update_yaml_file_mock = self.monkey_patch(update_yaml_file) self.update_yaml_file_mock.return_value = True self.yaml_file_dump_mock = self.monkey_patch(yaml_file_dump) self.yaml_file_dump_mock.return_value = None self.load_gitops_config_mock = self.monkey_patch(load_gitops_config) self.load_gitops_config_mock.return_value = GitOpsConfig( api_version=2, application_name="my-app", preview_host_template="app.xy-${PREVIEW_ID_HASH}.example.tld", preview_template_organisation="PREVIEW_TEMPLATE_ORG", preview_template_repository="PREVIEW_TEMPLATE_REPO", preview_template_path_template=".preview-templates/my-app", preview_template_branch="template-branch", preview_target_organisation="PREVIEW_TARGET_ORG", preview_target_repository="PREVIEW_TARGET_REPO", preview_target_branch=None, preview_target_namespace_template= "my-app-${PREVIEW_ID_HASH}-preview", preview_target_max_namespace_length=50, replacements={ "Chart.yaml": [ GitOpsConfig.Replacement( path="name", value_template="${PREVIEW_NAMESPACE}"), ], "values.yaml": [ GitOpsConfig.Replacement(path="image.tag", value_template="${GIT_HASH}"), GitOpsConfig.Replacement(path="route.host", value_template="${PREVIEW_HOST}"), ], }, ) self.template_git_repo_api_mock = self.create_mock(GitRepoApi) self.target_git_repo_api_mock = self.create_mock(GitRepoApi) self.git_repo_api_factory_mock = self.monkey_patch(GitRepoApiFactory) def git_repo_api_factory_create_mock( _: GitApiConfig, organisation: str, repository_name: str) -> GitRepoApi: if "TEMPLATE" in organisation and "TEMPLATE" in repository_name: return self.template_git_repo_api_mock if "TARGET" in organisation and "TARGET" in repository_name: return self.target_git_repo_api_mock raise Exception(f"no mock for {organisation}/{repository_name}") self.git_repo_api_factory_mock.create.side_effect = git_repo_api_factory_create_mock self.template_git_repo_mock = self.create_mock(GitRepo) self.template_git_repo_mock.__enter__.return_value = self.template_git_repo_mock self.template_git_repo_mock.__exit__.return_value = False self.template_git_repo_mock.get_full_file_path.side_effect = lambda x: f"/tmp/template-repo/{x}" self.template_git_repo_mock.clone.return_value = None self.template_git_repo_mock.commit.return_value = None self.template_git_repo_mock.push.return_value = None self.target_git_repo_mock = self.create_mock(GitRepo) self.target_git_repo_mock.__enter__.return_value = self.target_git_repo_mock self.target_git_repo_mock.__exit__.return_value = False self.target_git_repo_mock.get_full_file_path.side_effect = lambda x: f"/tmp/target-repo/{x}" self.target_git_repo_mock.clone.return_value = None def git_repo_constructor_mock(git_repo_api: GitRepoApi) -> GitRepo: if git_repo_api == self.template_git_repo_api_mock: return self.template_git_repo_mock if git_repo_api == self.target_git_repo_api_mock: return self.target_git_repo_mock raise Exception(f"no mock for {git_repo_api}") self.monkey_patch(GitRepo).side_effect = git_repo_constructor_mock self.seal_mocks()