From 63ff7c2eb4ff0ca93635a928047a95566321a931 Mon Sep 17 00:00:00 2001 From: Piotr Truszkowski Date: Tue, 27 Feb 2024 09:41:46 +0100 Subject: [PATCH] - Changed the way how we pass configuration into tests. - Bugfix: for default integration, we should ask with an empty ID added testConfig structure fix: for default integration, we should ask with an empty ID using testConfig instead of os.Getenv and hardcoded values fix: using "terraform-bacon-tasty" repo from "module" branch, instead of "terraform-spacelift-example" added new envs into github actions test job (preprod) let's test prod env-var; we need to be careful; we're using 94 secrets right now - after the merge, we can remove unused ones fix: different bitbucket datacenter name & id fix: different bitbucket datacenter name & id (for prod, not preprod) removed step --- .github/workflows/test-prod.yml | 83 ++++++++++--- .github/workflows/test.yml | 81 ++++++++++--- go.mod | 1 + go.sum | 2 + spacelift/config_test.go | 111 ++++++++++++++++++ spacelift/data_azure_devops_integration.go | 4 +- .../data_azure_devops_integration_test.go | 31 ++--- spacelift/data_bitbucket_cloud_integration.go | 4 +- .../data_bitbucket_cloud_integration_test.go | 36 +++--- .../data_bitbucket_datacenter_integration.go | 4 +- ...a_bitbucket_datacenter_integration_test.go | 36 +++--- .../data_github_enterprise_integration.go | 4 +- ...data_github_enterprise_integration_test.go | 35 +++--- spacelift/data_gitlab_integration.go | 4 +- spacelift/data_gitlab_integration_test.go | 31 ++--- .../data_gitlab_webhook_endpoint_test.go | 3 +- spacelift/data_ips_test.go | 4 +- spacelift/resource_module_test.go | 2 +- spacelift/resource_stack_test.go | 2 +- spacelift/resource_version_test.go | 4 +- 20 files changed, 343 insertions(+), 139 deletions(-) create mode 100644 spacelift/config_test.go diff --git a/.github/workflows/test-prod.yml b/.github/workflows/test-prod.yml index 8437194a..5d925b27 100644 --- a/.github/workflows/test-prod.yml +++ b/.github/workflows/test-prod.yml @@ -23,22 +23,71 @@ jobs: with: terraform_wrapper: false - - name: Test with coverage + - name: Test with coverage (prod - just checking it will works, no env missing etc) run: go test -parallel 20 -timeout 20m -coverprofile=coverage.txt -coverpkg=./... ./... env: - SPACELIFT_API_KEY_ENDPOINT: ${{ secrets.PROD_SPACELIFT_API_KEY_ENDPOINT }} - SPACELIFT_API_KEY_ID: ${{ secrets.PROD_SPACELIFT_TEST_API_KEY_ID }} - SPACELIFT_API_KEY_SECRET: ${{ secrets.PROD_SPACELIFT_TEST_API_KEY_SECRET }} - SPACELIFT_PROVIDER_TEST_IPS: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_IPS }} - SPACELIFT_PROVIDER_TEST_GITLAB_API_HOST: https://gitlab.com - SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_ENDPOINT: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_ENDPOINT }} - SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_SECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_SECRET }} - SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_API_HOST: https://github.liftspace.net - SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_WEBHOOK_SECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_WEBHOOK_SECRET }} - SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_APP_ID: 9 - SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_API_HOST: private://bitbucket-datacenter-agent-pool - SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_SECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_SECRET }} - SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_URL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_URL }} - SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_USER_FACING_HOST: http://localhost:7990 - SPACELIFT_PROVIDER_TEST_AZURE_DEVOPS_ORGANIZATION_URL: https://dev.azure.com/spacelift-ci0377 - SPACELIFT_PROVIDER_TEST_AZURE_DEVOPS_WEBHOOK_PASSWORD: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_AZURE_DEVOPS_WEBHOOK_PASSWORD }} + SPACELIFT_API_KEY_ENDPOINT: ${{ secrets.V20240227_PROD_SPACELIFT_API_KEY_ENDPOINT }} + SPACELIFT_API_KEY_ID: ${{ secrets.V20240227_PROD_SPACELIFT_API_KEY_ID }} + SPACELIFT_API_KEY_SECRET: ${{ secrets.V20240227_PROD_SPACELIFT_API_KEY_SECRET }} + SPACELIFT_PROVIDER_TEST_IPS: ${{ secrets.V20240227_PROD_SPACELIFT_PROVIDER_TEST_IPS }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_NAME: "Azure DevOps Default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_ID: "azure-devops-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_USERFACINGHOST: "https://azure-devops-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_ORGANIZATIONURL: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_ORGANIZATIONURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_NAME: "Azure DevOps Space level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_ID: "azure-devops-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_SPACE: "tests-01HPE6H08F8HR8PJR78DPYR3TC" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_USERFACINGHOST: "https://azure-devops-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_ORGANIZATIONURL: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_ORGANIZATIONURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_NAME: "Bitbucket Cloud Default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_ID: "bitbucket-cloud-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_USERNAME }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_NAME: "Bitbucket Cloud Space level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_ID: "bitbucket-cloud-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_SPACE: "tests-01HPE6H08F8HR8PJR78DPYR3TC" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_USERNAME }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_NAME: "Bitbucket Data Center" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_ID: "bitbucket-data-center" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_USERNAME }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_USERFACINGHOST: "http://bitbucket-datacenter-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_APIHOST }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_NAME: "Bitbucket Datancenter Space Level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_ID: "bitbucket-datancenter-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_SPACE: "tests-01HPE6H08F8HR8PJR78DPYR3TC" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_USERNAME }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_USERFACINGHOST: "http://bitbucket-datacenter-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_APIHOST }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_NAME: "GitHub Default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_ID: "github-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_APIHOST }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APPID: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APPID }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_NAME: "GitHub Space Level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_ID: "github-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_SPACE: "tests-01HPE6H08F8HR8PJR78DPYR3TC" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_APIHOST }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_APPID: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_APPID }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_NAME: "GitLab Default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_ID: "gitlab-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_APIHOST: "https://gitlab.com" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_NAME: "GitLab Space Level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_ID: "gitlab-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_SPACE: "tests-01HPE6H08F8HR8PJR78DPYR3TC" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_APIHOST: "https://gitlab.com" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKURL }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f60a80b7..59952053 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,19 +28,68 @@ jobs: - name: Test with coverage run: go test -parallel 20 -timeout 20m -coverprofile=coverage.txt -coverpkg=./... ./... env: - SPACELIFT_API_KEY_ENDPOINT: ${{ secrets.SPACELIFT_API_KEY_ENDPOINT }} - SPACELIFT_API_KEY_ID: ${{ secrets.SPACELIFT_API_KEY_ID }} - SPACELIFT_API_KEY_SECRET: ${{ secrets.SPACELIFT_API_KEY_SECRET }} - SPACELIFT_PROVIDER_TEST_IPS: ${{ secrets.SPACELIFT_PROVIDER_TEST_IPS }} - SPACELIFT_PROVIDER_TEST_GITLAB_API_HOST: https://gitlab.com - SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_ENDPOINT: ${{ secrets.SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_ENDPOINT }} - SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_SECRET: ${{ secrets.SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_SECRET }} - SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_API_HOST: https://api.github.com - SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_WEBHOOK_SECRET: ${{ secrets.SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_WEBHOOK_SECRET }} - SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_APP_ID: 359303 - SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_API_HOST: private://bitbucket-datacenter-agent-pool - SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_SECRET: ${{ secrets.SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_SECRET }} - SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_URL: ${{ secrets.SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_URL }} - SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_USER_FACING_HOST: http://localhost:7990 - SPACELIFT_PROVIDER_TEST_AZURE_DEVOPS_ORGANIZATION_URL: https://dev.azure.com/spacelift-ci0377 - SPACELIFT_PROVIDER_TEST_AZURE_DEVOPS_WEBHOOK_PASSWORD: ${{ secrets.SPACELIFT_PROVIDER_TEST_AZURE_DEVOPS_WEBHOOK_PASSWORD }} + SPACELIFT_API_KEY_ENDPOINT: ${{ secrets.PREPROD_SPACELIFT_API_KEY_ENDPOINT }} + SPACELIFT_API_KEY_ID: ${{ secrets.PREPROD_SPACELIFT_API_KEY_ID }} + SPACELIFT_API_KEY_SECRET: ${{ secrets.PREPROD_SPACELIFT_API_KEY_SECRET }} + SPACELIFT_PROVIDER_TEST_IPS: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_IPS }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_NAME: "Azure DevOps Default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_ID: "azure-devops-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_USERFACINGHOST: "https://azure-devops-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_ORGANIZATIONURL: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_ORGANIZATIONURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_NAME: "Azure DevOps Space level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_ID: "azure-devops-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_SPACE: "tests-01HPE6ENR1AZZ638QSRQRVW4DH" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_USERFACINGHOST: "https://azure-devops-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_ORGANIZATIONURL: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_ORGANIZATIONURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_NAME: "Bitbucket Cloud Default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_ID: "bitbucket-cloud-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_USERNAME }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_NAME: "Bitbucket Cloud Space level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_ID: "bitbucket-cloud-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_SPACE: "tests-01HPE6ENR1AZZ638QSRQRVW4DH" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_USERNAME }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_NAME: "Bitbucket Datacenter Default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_ID: "bitbucket-datacenter-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_USERNAME }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_USERFACINGHOST: "http://bitbucket-datacenter-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_APIHOST }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_NAME: "Bitbucket Datancenter Space Level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_ID: "bitbucket-datancenter-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_SPACE: "tests-01HPE6ENR1AZZ638QSRQRVW4DH" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_USERNAME }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_USERFACINGHOST: "http://bitbucket-datacenter-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_APIHOST }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_NAME: "GitHub Default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_ID: "github-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_APIHOST }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APPID: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APPID }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_NAME: "GitHub Space Level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_ID: "github-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_SPACE: "tests-01HPE6ENR1AZZ638QSRQRVW4DH" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_APIHOST }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_APPID: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_APPID }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_NAME: "GitLab Default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_ID: "gitlab-default" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_APIHOST: "https://gitlab.com" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_NAME: "GitLab Space Level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_ID: "gitlab-space-level" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_SPACE: "tests-01HPE6ENR1AZZ638QSRQRVW4DH" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_APIHOST: "https://gitlab.com" + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKSECRET }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKURL }} diff --git a/go.mod b/go.mod index e70ce809..84b0ac4b 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 github.com/hashicorp/go-retryablehttp v0.7.4 github.com/hashicorp/terraform-plugin-sdk/v2 v2.29.0 + github.com/kelseyhightower/envconfig v1.4.0 github.com/pkg/errors v0.9.1 github.com/shurcooL/graphql v0.0.0-20200928012149-18c5c3165e3a golang.org/x/oauth2 v0.13.0 diff --git a/go.sum b/go.sum index c0942470..e7900d4d 100644 --- a/go.sum +++ b/go.sum @@ -93,6 +93,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= +github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= +github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= diff --git a/spacelift/config_test.go b/spacelift/config_test.go new file mode 100644 index 00000000..ed6eb605 --- /dev/null +++ b/spacelift/config_test.go @@ -0,0 +1,111 @@ +package spacelift + +import ( + "log" + + "github.com/kelseyhightower/envconfig" +) + +var testConfig struct { + IPs []string + SourceCode struct { + AzureDevOps struct { + Default struct { + Name string + ID string + UserFacingHost string + OrganizationURL string + WebhookSecret string + WebhookURL string + } + SpaceLevel struct { + Name string + ID string + Space string + UserFacingHost string + OrganizationURL string + WebhookSecret string + WebhookURL string + } + } + BitbucketCloud struct { + Default struct { + Name string + ID string + Username string + WebhookURL string + } + SpaceLevel struct { + Name string + ID string + Space string + Username string + WebhookURL string + } + } + BitbucketDatacenter struct { + Default struct { + Name string + ID string + Username string + UserFacingHost string + APIHost string + WebhookSecret string + WebhookURL string + } + SpaceLevel struct { + Name string + ID string + Space string + Username string + UserFacingHost string + APIHost string + WebhookSecret string + WebhookURL string + } + } + GithubEnterprise struct { + Default struct { + Name string + ID string + APIHost string + AppID string + WebhookSecret string + WebhookURL string + } + SpaceLevel struct { + Name string + ID string + Space string + APIHost string + AppID string + WebhookSecret string + WebhookURL string + } + } + Gitlab struct { + Default struct { + Name string + ID string + APIHost string + WebhookSecret string + WebhookURL string + } + SpaceLevel struct { + Name string + ID string + Space string + APIHost string + WebhookSecret string + WebhookURL string + } + } + } +} + +func init() { + err := envconfig.Process("SPACELIFT_PROVIDER_TEST", &testConfig) + if err != nil { + log.Fatalln("couldn't process environment variables:", err) + } +} diff --git a/spacelift/data_azure_devops_integration.go b/spacelift/data_azure_devops_integration.go index 196c83a6..243f0c2d 100644 --- a/spacelift/data_azure_devops_integration.go +++ b/spacelift/data_azure_devops_integration.go @@ -19,8 +19,6 @@ const ( azureDevopsOrganizationURL = "organization_url" azureDevopsWebhookPassword = "webhook_password" azureDevopsWebhookURL = "webhook_url" - - defaultAzureDevopsIntegrationID = "azure-devops-repo-default-integration" ) func dataAzureDevopsIntegration() *schema.Resource { @@ -99,7 +97,7 @@ func dataAzureDevopsIntegrationRead(ctx context.Context, d *schema.ResourceData, } `graphql:"azureDevOpsRepoIntegration(id: $id)"` } - variables := map[string]interface{}{"id": defaultAzureDevopsIntegrationID} + variables := map[string]interface{}{"id": ""} if id, ok := d.GetOk(azureDevopsID); ok && id != "" { variables["id"] = toID(id) diff --git a/spacelift/data_azure_devops_integration_test.go b/spacelift/data_azure_devops_integration_test.go index 9c1b2b99..f8b4e79d 100644 --- a/spacelift/data_azure_devops_integration_test.go +++ b/spacelift/data_azure_devops_integration_test.go @@ -1,7 +1,6 @@ package spacelift import ( - "os" "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -11,39 +10,41 @@ import ( func TestAzureDevOpsIntegrationData(t *testing.T) { t.Run("without the id specified", func(t *testing.T) { + cfg := testConfig.SourceCode.AzureDevOps.Default testSteps(t, []resource.TestStep{{ Config: ` data "spacelift_azure_devops_integration" "test" {} `, Check: Resource( "data.spacelift_azure_devops_integration.test", - Attribute("id", IsNotEmpty()), - Attribute("name", IsNotEmpty()), + Attribute("id", Equals(cfg.ID)), + Attribute("name", Equals(cfg.Name)), Attribute("is_default", Equals("true")), - Attribute("space_id", IsNotEmpty()), - Attribute("organization_url", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_AZURE_DEVOPS_ORGANIZATION_URL"))), - Attribute("webhook_password", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_AZURE_DEVOPS_WEBHOOK_PASSWORD"))), - Attribute("webhook_url", IsNotEmpty()), + Attribute("space_id", Equals("root")), + Attribute("organization_url", Equals(cfg.OrganizationURL)), + Attribute("webhook_password", Equals(cfg.WebhookSecret)), + Attribute("webhook_url", Equals(cfg.WebhookURL)), ), }}) }) t.Run("with the id specified", func(t *testing.T) { + cfg := testConfig.SourceCode.AzureDevOps.SpaceLevel testSteps(t, []resource.TestStep{{ Config: ` data "spacelift_azure_devops_integration" "test" { - id = "azure-devops-repo-default-integration" + id = "` + cfg.ID + `" } `, Check: Resource( "data.spacelift_azure_devops_integration.test", - Attribute("id", IsNotEmpty()), - Attribute("name", IsNotEmpty()), - Attribute("is_default", Equals("true")), - Attribute("space_id", IsNotEmpty()), - Attribute("organization_url", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_AZURE_DEVOPS_ORGANIZATION_URL"))), - Attribute("webhook_password", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_AZURE_DEVOPS_WEBHOOK_PASSWORD"))), - Attribute("webhook_url", IsNotEmpty()), + Attribute("id", Equals(cfg.ID)), + Attribute("name", Equals(cfg.Name)), + Attribute("is_default", Equals("false")), + Attribute("space_id", Equals(cfg.Space)), + Attribute("organization_url", Equals(cfg.OrganizationURL)), + Attribute("webhook_password", Equals(cfg.WebhookSecret)), + Attribute("webhook_url", Equals(cfg.WebhookURL)), ), }}) }) diff --git a/spacelift/data_bitbucket_cloud_integration.go b/spacelift/data_bitbucket_cloud_integration.go index abd6f2e1..e9ee787e 100644 --- a/spacelift/data_bitbucket_cloud_integration.go +++ b/spacelift/data_bitbucket_cloud_integration.go @@ -18,8 +18,6 @@ const ( bitbucketCloudSpaceID = "space_id" bitbucketCloudUsername = "username" bitbucketCloudWebhookURL = "webhook_url" - - defaultBitbucketCloudIntegrationID = "bitbucket-cloud-default-integration" ) func dataBitbucketCloudIntegration() *schema.Resource { @@ -92,7 +90,7 @@ func dataBitbucketCloudIntegrationRead(ctx context.Context, d *schema.ResourceDa } `graphql:"bitbucketCloudIntegration(id: $id)"` } - variables := map[string]interface{}{"id": defaultBitbucketCloudIntegrationID} + variables := map[string]interface{}{"id": ""} if id, ok := d.GetOk(bitbucketCloudID); ok && id != "" { variables["id"] = toID(id) diff --git a/spacelift/data_bitbucket_cloud_integration_test.go b/spacelift/data_bitbucket_cloud_integration_test.go index 20e1e641..a4e9bc2a 100644 --- a/spacelift/data_bitbucket_cloud_integration_test.go +++ b/spacelift/data_bitbucket_cloud_integration_test.go @@ -10,40 +10,42 @@ import ( func TestBitbucketCloudIntegrationData(t *testing.T) { t.Run("without the id specified", func(t *testing.T) { + cfg := testConfig.SourceCode.BitbucketCloud.Default testSteps(t, []resource.TestStep{ { Config: ` - data "spacelift_bitbucket_cloud_integration" "test" {} - `, + data "spacelift_bitbucket_cloud_integration" "test" {} + `, Check: Resource( "data.spacelift_bitbucket_cloud_integration.test", - Attribute("id", IsNotEmpty()), - Attribute("name", IsNotEmpty()), + Attribute("id", Equals(cfg.ID)), + Attribute("name", Equals(cfg.Name)), Attribute("is_default", Equals("true")), - Attribute("space_id", IsNotEmpty()), - Attribute("username", IsNotEmpty()), - Attribute("webhook_url", IsNotEmpty()), + Attribute("space_id", Equals("root")), + Attribute("username", Equals(cfg.Username)), + Attribute("webhook_url", Equals(cfg.WebhookURL)), ), }, }) }) t.Run("with the id specified", func(t *testing.T) { + cfg := testConfig.SourceCode.BitbucketCloud.SpaceLevel testSteps(t, []resource.TestStep{ { Config: ` - data "spacelift_bitbucket_cloud_integration" "test" { - id = "bitbucket-cloud-default-integration" - } - `, + data "spacelift_bitbucket_cloud_integration" "test" { + id = "` + cfg.ID + `" + } + `, Check: Resource( "data.spacelift_bitbucket_cloud_integration.test", - Attribute("id", IsNotEmpty()), - Attribute("name", IsNotEmpty()), - Attribute("is_default", Equals("true")), - Attribute("space_id", IsNotEmpty()), - Attribute("username", IsNotEmpty()), - Attribute("webhook_url", IsNotEmpty()), + Attribute("id", Equals(cfg.ID)), + Attribute("name", Equals(cfg.Name)), + Attribute("is_default", Equals("false")), + Attribute("space_id", Equals(cfg.Space)), + Attribute("username", Equals(cfg.Username)), + Attribute("webhook_url", Equals(cfg.WebhookURL)), ), }, }) diff --git a/spacelift/data_bitbucket_datacenter_integration.go b/spacelift/data_bitbucket_datacenter_integration.go index 763d63f3..0023033d 100644 --- a/spacelift/data_bitbucket_datacenter_integration.go +++ b/spacelift/data_bitbucket_datacenter_integration.go @@ -21,8 +21,6 @@ const ( bitbucketDatacenterUsername = "username" bitbucketDatacenterWebhookURL = "webhook_url" bitbucketDatacenterWebhookSecret = "webhook_secret" - - defaultBitbucketDatacenterIntegrationID = "bitbucket-datacenter-default-integration" ) func dataBitbucketDatacenterIntegration() *schema.Resource { @@ -113,7 +111,7 @@ func dataBitbucketDatacenterIntegrationRead(ctx context.Context, d *schema.Resou } `graphql:"bitbucketDatacenterIntegration(id: $id)"` } - variables := map[string]interface{}{"id": defaultBitbucketDatacenterIntegrationID} + variables := map[string]interface{}{"id": ""} if id, ok := d.GetOk(bitbucketDatacenterID); ok && id != "" { variables["id"] = toID(id) } diff --git a/spacelift/data_bitbucket_datacenter_integration_test.go b/spacelift/data_bitbucket_datacenter_integration_test.go index 977efcb0..0a062396 100644 --- a/spacelift/data_bitbucket_datacenter_integration_test.go +++ b/spacelift/data_bitbucket_datacenter_integration_test.go @@ -1,7 +1,6 @@ package spacelift import ( - "os" "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -11,43 +10,44 @@ import ( func TestBitbucketDataCenterIntegrationData(t *testing.T) { t.Run("without the id specified", func(t *testing.T) { + cfg := testConfig.SourceCode.BitbucketDatacenter.Default testSteps(t, []resource.TestStep{{ Config: ` data "spacelift_bitbucket_datacenter_integration" "test" {} `, Check: Resource( "data.spacelift_bitbucket_datacenter_integration.test", - Attribute("id", IsNotEmpty()), - Attribute("name", IsNotEmpty()), + Attribute("id", Equals(cfg.ID)), + Attribute("name", Equals(cfg.Name)), Attribute("is_default", Equals("true")), - Attribute("space_id", IsNotEmpty()), - Attribute("api_host", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_API_HOST"))), - Attribute("webhook_secret", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_SECRET"))), - Attribute("webhook_url", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_URL"))), - Attribute("user_facing_host", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_USER_FACING_HOST"))), + Attribute("space_id", Equals("root")), + Attribute("api_host", Equals(cfg.APIHost)), + Attribute("webhook_secret", Equals(cfg.WebhookSecret)), + Attribute("webhook_url", Equals(cfg.WebhookURL)), + Attribute("user_facing_host", Equals(cfg.UserFacingHost)), ), }}) }) t.Run("with the id specified", func(t *testing.T) { + cfg := testConfig.SourceCode.BitbucketDatacenter.SpaceLevel testSteps(t, []resource.TestStep{{ Config: ` data "spacelift_bitbucket_datacenter_integration" "test" { - id = "bitbucket-datacenter-default-integration" + id = "` + cfg.ID + `" } `, Check: Resource( "data.spacelift_bitbucket_datacenter_integration.test", - Attribute("id", IsNotEmpty()), - Attribute("name", IsNotEmpty()), - Attribute("is_default", Equals("true")), - Attribute("space_id", IsNotEmpty()), - Attribute("api_host", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_API_HOST"))), - Attribute("webhook_secret", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_SECRET"))), - Attribute("webhook_url", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_WEBHOOK_URL"))), - Attribute("user_facing_host", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_BITBUCKET_DATACENTER_USER_FACING_HOST"))), + Attribute("id", Equals(cfg.ID)), + Attribute("name", Equals(cfg.Name)), + Attribute("is_default", Equals("false")), + Attribute("space_id", Equals(cfg.Space)), + Attribute("api_host", Equals(cfg.APIHost)), + Attribute("webhook_secret", Equals(cfg.WebhookSecret)), + Attribute("webhook_url", Equals(cfg.WebhookURL)), + Attribute("user_facing_host", Equals(cfg.UserFacingHost)), ), }}) }) - } diff --git a/spacelift/data_github_enterprise_integration.go b/spacelift/data_github_enterprise_integration.go index 8b9a5c96..1c0d0eaa 100644 --- a/spacelift/data_github_enterprise_integration.go +++ b/spacelift/data_github_enterprise_integration.go @@ -20,8 +20,6 @@ const ( ghEnterpriseAPIHost = "api_host" ghEnterpriseWebhookSecret = "webhook_secret" ghEnterpriseWebhookURL = "webhook_url" - - defaultGHEIntegrationID = "github-enterprise-default-integration" ) func dataGithubEnterpriseIntegration() *schema.Resource { @@ -106,7 +104,7 @@ func dataGithubEnterpriseIntegrationRead(ctx context.Context, d *schema.Resource } `graphql:"githubEnterpriseIntegration(id: $id)"` } - variables := map[string]interface{}{"id": defaultGHEIntegrationID} + variables := map[string]interface{}{"id": ""} if id, ok := d.GetOk(ghEnterpriseId); ok && id != "" { variables["id"] = toID(id) diff --git a/spacelift/data_github_enterprise_integration_test.go b/spacelift/data_github_enterprise_integration_test.go index 77a77a7e..5417e41d 100644 --- a/spacelift/data_github_enterprise_integration_test.go +++ b/spacelift/data_github_enterprise_integration_test.go @@ -1,7 +1,6 @@ package spacelift import ( - "os" "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -11,41 +10,43 @@ import ( func TestGithubEnterpriseIntegrationData(t *testing.T) { t.Run("without the ID specified", func(t *testing.T) { + cfg := testConfig.SourceCode.GithubEnterprise.Default testSteps(t, []resource.TestStep{{ Config: ` data "spacelift_github_enterprise_integration" "test" {} `, Check: Resource( "data.spacelift_github_enterprise_integration.test", - Attribute("id", IsNotEmpty()), - Attribute("name", IsNotEmpty()), + Attribute("id", Equals(cfg.ID)), + Attribute("name", Equals(cfg.Name)), Attribute("is_default", Equals("true")), - Attribute("space_id", IsNotEmpty()), - Attribute("api_host", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_API_HOST"))), - Attribute("webhook_secret", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_WEBHOOK_SECRET"))), - Attribute("webhook_url", IsNotEmpty()), - Attribute("app_id", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_APP_ID"))), + Attribute("space_id", Equals("root")), + Attribute("api_host", Equals(cfg.APIHost)), + Attribute("webhook_secret", Equals(cfg.WebhookSecret)), + Attribute("webhook_url", Equals(cfg.WebhookURL)), + Attribute("app_id", Equals(cfg.AppID)), ), }}) }) t.Run("with the ID specified", func(t *testing.T) { + cfg := testConfig.SourceCode.GithubEnterprise.SpaceLevel testSteps(t, []resource.TestStep{{ Config: ` data "spacelift_github_enterprise_integration" "test" { - id = "github-enterprise-default-integration" + id = "` + cfg.ID + `" } `, Check: Resource( "data.spacelift_github_enterprise_integration.test", - Attribute("id", Equals("github-enterprise-default-integration")), - Attribute("name", IsNotEmpty()), - Attribute("is_default", Equals("true")), - Attribute("space_id", IsNotEmpty()), - Attribute("api_host", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_API_HOST"))), - Attribute("webhook_secret", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_WEBHOOK_SECRET"))), - Attribute("webhook_url", IsNotEmpty()), - Attribute("app_id", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITHUB_ENTERPRISE_APP_ID"))), + Attribute("id", Equals(cfg.ID)), + Attribute("name", Equals(cfg.Name)), + Attribute("is_default", Equals("false")), + Attribute("space_id", Equals(cfg.Space)), + Attribute("api_host", Equals(cfg.APIHost)), + Attribute("webhook_secret", Equals(cfg.WebhookSecret)), + Attribute("webhook_url", Equals(cfg.WebhookURL)), + Attribute("app_id", Equals(cfg.AppID)), ), }}) }) diff --git a/spacelift/data_gitlab_integration.go b/spacelift/data_gitlab_integration.go index 7f882434..689bf52b 100644 --- a/spacelift/data_gitlab_integration.go +++ b/spacelift/data_gitlab_integration.go @@ -20,8 +20,6 @@ const ( gitlabAPIHost = "api_host" gitlabWebhookSecret = "webhook_secret" gitlabWebhookURL = "webhook_url" - - defaultGitlabIntegrationID = "gitlab-default-integration" ) func dataGitlabIntegration() *schema.Resource { @@ -101,7 +99,7 @@ func dataGitlabIntegrationRead(ctx context.Context, d *schema.ResourceData, meta } `graphql:"gitlabIntegration(id: $id)"` } - variables := map[string]interface{}{"id": defaultGitlabIntegrationID} + variables := map[string]interface{}{"id": ""} if id, ok := d.GetOk(gitlabId); ok && id != "" { variables["id"] = toID(id) diff --git a/spacelift/data_gitlab_integration_test.go b/spacelift/data_gitlab_integration_test.go index a4a9d829..6fe2e979 100644 --- a/spacelift/data_gitlab_integration_test.go +++ b/spacelift/data_gitlab_integration_test.go @@ -1,7 +1,6 @@ package spacelift import ( - "os" "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -11,39 +10,41 @@ import ( func TestGitlabIntegrationData(t *testing.T) { t.Run("without the id specified", func(t *testing.T) { + cfg := testConfig.SourceCode.Gitlab.Default testSteps(t, []resource.TestStep{{ Config: ` data "spacelift_gitlab_integration" "test" {} `, Check: Resource( "data.spacelift_gitlab_integration.test", - Attribute("id", IsNotEmpty()), - Attribute("name", IsNotEmpty()), + Attribute("id", Equals(cfg.ID)), + Attribute("name", Equals(cfg.Name)), Attribute("is_default", Equals("true")), - Attribute("space_id", IsNotEmpty()), - Attribute("api_host", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITLAB_API_HOST"))), - Attribute("webhook_secret", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_SECRET"))), - Attribute("webhook_url", IsNotEmpty()), + Attribute("space_id", Equals("root")), + Attribute("api_host", Equals(cfg.APIHost)), + Attribute("webhook_secret", Equals(cfg.WebhookSecret)), + Attribute("webhook_url", Equals(cfg.WebhookURL)), ), }}) }) t.Run("with the id specified", func(t *testing.T) { + cfg := testConfig.SourceCode.Gitlab.SpaceLevel testSteps(t, []resource.TestStep{{ Config: ` data "spacelift_gitlab_integration" "test" { - id = "gitlab-default-integration" + id = "` + cfg.ID + `" } `, Check: Resource( "data.spacelift_gitlab_integration.test", - Attribute("id", Equals("gitlab-default-integration")), - Attribute("name", IsNotEmpty()), - Attribute("is_default", Equals("true")), - Attribute("space_id", IsNotEmpty()), - Attribute("api_host", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITLAB_API_HOST"))), - Attribute("webhook_secret", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_SECRET"))), - Attribute("webhook_url", IsNotEmpty()), + Attribute("id", Equals(cfg.ID)), + Attribute("name", Equals(cfg.Name)), + Attribute("is_default", Equals("false")), + Attribute("space_id", Equals(cfg.Space)), + Attribute("api_host", Equals(cfg.APIHost)), + Attribute("webhook_secret", Equals(cfg.WebhookSecret)), + Attribute("webhook_url", Equals(cfg.WebhookURL)), ), }}) }) diff --git a/spacelift/data_gitlab_webhook_endpoint_test.go b/spacelift/data_gitlab_webhook_endpoint_test.go index f173a0c5..939ef141 100644 --- a/spacelift/data_gitlab_webhook_endpoint_test.go +++ b/spacelift/data_gitlab_webhook_endpoint_test.go @@ -1,7 +1,6 @@ package spacelift import ( - "os" "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -16,7 +15,7 @@ func TestGitlabWebhookEndpointData(t *testing.T) { `, Check: Resource( "data.spacelift_gitlab_webhook_endpoint.test", - Attribute("webhook_endpoint", Equals(os.Getenv("SPACELIFT_PROVIDER_TEST_GITLAB_WEBHOOK_ENDPOINT"))), + Attribute("webhook_endpoint", Equals(testConfig.SourceCode.Gitlab.Default.WebhookURL)), ), }}) } diff --git a/spacelift/data_ips_test.go b/spacelift/data_ips_test.go index fca7ae8d..923905af 100644 --- a/spacelift/data_ips_test.go +++ b/spacelift/data_ips_test.go @@ -1,8 +1,6 @@ package spacelift import ( - "os" - "strings" "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -15,7 +13,7 @@ func TestIPsData(t *testing.T) { Config: `data "spacelift_ips" "test" {}`, Check: Resource( "data.spacelift_ips.test", - SetEquals("ips", strings.Split(os.Getenv("SPACELIFT_PROVIDER_TEST_IPS"), ";")...), + SetEquals("ips", testConfig.IPs...), ), }}) } diff --git a/spacelift/resource_module_test.go b/spacelift/resource_module_test.go index 39e8f71f..a99b8b6a 100644 --- a/spacelift/resource_module_test.go +++ b/spacelift/resource_module_test.go @@ -83,7 +83,7 @@ func TestModuleResource(t *testing.T) { }`, Check: Resource( "spacelift_module.test", - Attribute("gitlab.0.id", Equals("gitlab-default-integration")), + Attribute("gitlab.0.id", Equals(testConfig.SourceCode.Gitlab.Default.ID)), ), }, }) diff --git a/spacelift/resource_stack_test.go b/spacelift/resource_stack_test.go index a3c47a14..f9981f2d 100644 --- a/spacelift/resource_stack_test.go +++ b/spacelift/resource_stack_test.go @@ -371,7 +371,7 @@ func TestStackResource(t *testing.T) { }`, Check: Resource( "spacelift_stack.test", - Attribute("gitlab.0.id", Equals("gitlab-default-integration")), + Attribute("gitlab.0.id", Equals(testConfig.SourceCode.Gitlab.Default.ID)), ), }, }) diff --git a/spacelift/resource_version_test.go b/spacelift/resource_version_test.go index 6667d4ed..c70efbfd 100644 --- a/spacelift/resource_version_test.go +++ b/spacelift/resource_version_test.go @@ -22,8 +22,8 @@ func TestVersionResource(t *testing.T) { resource "spacelift_module" "test" { name = "test-version-module-%s" administrative = true - branch = "master" - repository = "terraform-spacelift-example" + branch = "module" + repository = "terraform-bacon-tasty" labels = ["version-test"] }