"""CodeBuild public GitHub source helpers.""" import sys from pathlib import Path CDK_DIR = Path(__file__).resolve().parents[1] sys.path.insert(0, str(CDK_DIR)) from aws_cdk import App, Stack from aws_cdk import aws_codebuild as codebuild from aws_cdk import aws_iam as iam from aws_cdk.assertions import Template from cdk_functions import ( configure_public_github_codebuild_source, public_github_codebuild_source, public_github_repository_url, ) def test_public_github_repository_url(): assert ( public_github_repository_url("seanpedrick-case", "doc_redaction") == "https://github.com/seanpedrick-case/doc_redaction.git" ) def test_public_github_codebuild_source_synth_without_auth(): app = App() stack = Stack(app, "Test") role = iam.Role( stack, "Role", assumed_by=iam.ServicePrincipal("codebuild.amazonaws.com") ) project = codebuild.Project( stack, "Proj", role=role, source=public_github_codebuild_source("owner", "repo", "main"), build_spec=codebuild.BuildSpec.from_object( {"version": "0.2", "phases": {"build": {"commands": ["echo hi"]}}} ), ) configure_public_github_codebuild_source(project, "owner", "repo") template = Template.from_stack(stack) resources = template.to_json()["Resources"] project_resource = next( value for value in resources.values() if value["Type"] == "AWS::CodeBuild::Project" ) source = project_resource["Properties"]["Source"] triggers = project_resource["Properties"]["Triggers"] assert "Auth" not in source assert source["Location"] == "https://github.com/owner/repo.git" assert source["ReportBuildStatus"] is False assert source["Type"] == "GITHUB" assert triggers["Webhook"] is False