diff --git a/fast/stages-multitenant/0-bootstrap-tenant/README.md b/fast/stages-multitenant/0-bootstrap-tenant/README.md index 76e36795ec..9dae91d925 100644 --- a/fast/stages-multitenant/0-bootstrap-tenant/README.md +++ b/fast/stages-multitenant/0-bootstrap-tenant/README.md @@ -85,7 +85,7 @@ As shown in the script output above, the provider file is a template used as a s Note that the `outputs_location` variable is disabled by default, you need to explicitly set it in your `terraform.tfvars` file if you want output files to be generated by this stage. This is a sample `terraform.tfvars` that configures it, refer to the [org-level bootstrap stage documentation](../../stages/0-bootstrap/README.md#output-files-and-cross-stage-variables) for more details: -```hcl +```tfvars outputs_location = "~/fast-config" ``` @@ -97,7 +97,7 @@ The globals variable file linked above contains definition which were set for th The tenant configuration resides in the `tenant_config` variable, this is an example configuration for a tenant with comments explaining the different choices that need to be made: -```hcl +```tfvars tenant_config = { # used for the top-level folder name descriptive_name = "My First Tenant" @@ -142,7 +142,6 @@ tenant_config = { # logging = "folders/0123456789" # } } -# tftest skip ``` Configure the tenant variable in a tfvars file for this stage. A few minor points worth noting: diff --git a/fast/stages-multitenant/1-resman-tenant/README.md b/fast/stages-multitenant/1-resman-tenant/README.md index 1b5df86996..9e1188bba6 100644 --- a/fast/stages-multitenant/1-resman-tenant/README.md +++ b/fast/stages-multitenant/1-resman-tenant/README.md @@ -116,7 +116,7 @@ Once that is done, stage-level configuration variables are the same as the corre Note that the `outputs_location` variable is disabled by default, you need to explicitly set it in your `terraform.tfvars` file if you want output files to be generated by this stage. This is a sample `terraform.tfvars` that configures it, refer to the [org-level bootstrap stage documentation](../../stages/0-bootstrap/README.md#output-files-and-cross-stage-variables) for more details: -```hcl +```tfvars outputs_location = "~/fast-config" ``` diff --git a/fast/stages/1-resman/README.md b/fast/stages/1-resman/README.md index 6ef900f1b8..c2c32dda21 100644 --- a/fast/stages/1-resman/README.md +++ b/fast/stages/1-resman/README.md @@ -112,7 +112,7 @@ The latter set is explained in the [Customization](#customizations) sections bel Note that the `outputs_location` variable is disabled by default, you need to explicitly set it in your `terraform.tfvars` file if you want output files to be generated by this stage. This is a sample `terraform.tfvars` that configures it, refer to the [bootstrap stage documentation](../0-bootstrap/README.md#output-files-and-cross-stage-variables) for more details: -```hcl +```tfvars outputs_location = "~/fast-config" ``` diff --git a/fast/stages/2-networking-a-peering/README.md b/fast/stages/2-networking-a-peering/README.md index 9b043eb5e0..f3c7c9511b 100644 --- a/fast/stages/2-networking-a-peering/README.md +++ b/fast/stages/2-networking-a-peering/README.md @@ -253,7 +253,7 @@ The latter set is explained in the [Customization](#customizations) sections bel Note that the `outputs_location` variable is disabled by default, you need to explicitly set it in your `terraform.tfvars` file if you want output files to be generated by this stage. This is a sample `terraform.tfvars` that configures it, refer to the [bootstrap stage documentation](../0-bootstrap/README.md#output-files-and-cross-stage-variables) for more details: -```hcl +```tfvars outputs_location = "~/fast-config" ``` @@ -315,7 +315,7 @@ This stage includes basic support for an HA VPN connecting the landing zone in t Support for the onprem VPN is disabled by default so that no resources are created, this is an example of how to configure the variable to enable the VPN: -```hcl +```tfvars vpn_onprem_primary_config = { peer_external_gateways = { default = { @@ -357,7 +357,6 @@ vpn_onprem_primary_config = { } } } -# tftest skip ``` ### Adding an environment diff --git a/fast/stages/2-networking-b-vpn/README.md b/fast/stages/2-networking-b-vpn/README.md index ed52715df3..ab1b9734cb 100644 --- a/fast/stages/2-networking-b-vpn/README.md +++ b/fast/stages/2-networking-b-vpn/README.md @@ -267,7 +267,7 @@ The latter set is explained in the [Customization](#customizations) sections bel Note that the `outputs_location` variable is disabled by default, you need to explicitly set it in your `terraform.tfvars` file if you want output files to be generated by this stage. This is a sample `terraform.tfvars` that configures it, refer to the [bootstrap stage documentation](../0-bootstrap/README.md#output-files-and-cross-stage-variables) for more details: -```hcl +```tfvars outputs_location = "~/fast-config" ``` @@ -329,7 +329,7 @@ This stage includes basic support for an HA VPN connecting the landing zone in t Support for the onprem VPN is disabled by default so that no resources are created, this is an example of how to configure the variable to enable the VPN: -```hcl +```tfvars vpn_onprem_primary_config = { peer_external_gateways = { default = { @@ -371,7 +371,6 @@ vpn_onprem_primary_config = { } } } -# tftest skip ``` ### Adding an environment diff --git a/fast/stages/2-networking-c-nva/README.md b/fast/stages/2-networking-c-nva/README.md index 43bc5daf82..5aeefa29fb 100644 --- a/fast/stages/2-networking-c-nva/README.md +++ b/fast/stages/2-networking-c-nva/README.md @@ -335,7 +335,7 @@ The latter set is explained in the [Customization](#customizations) sections bel Note that the `outputs_location` variable is disabled by default, you need to explicitly set it in your `terraform.tfvars` file if you want output files to be generated by this stage. This is a sample `terraform.tfvars` that configures it, refer to the [bootstrap stage documentation](../0-bootstrap/README.md#output-files-and-cross-stage-variables) for more details: -```hcl +```tfvars outputs_location = "~/fast-config" ``` @@ -397,7 +397,7 @@ This stage includes basic support for an HA VPN connecting the landing zone in t Support for the onprem VPNs is disabled by default so that no resources are created, this is an example of how to configure one variable to enable the VPN in the primary region: -```hcl +```tfvars vpn_onprem_primary_config = { peer_external_gateways = { default = { @@ -439,7 +439,6 @@ vpn_onprem_primary_config = { } } } -# tftest skip ``` ### Adding an environment diff --git a/fast/stages/2-networking-d-separate-envs/README.md b/fast/stages/2-networking-d-separate-envs/README.md index 596d427a9a..a718cda8a5 100644 --- a/fast/stages/2-networking-d-separate-envs/README.md +++ b/fast/stages/2-networking-d-separate-envs/README.md @@ -215,7 +215,7 @@ The latter set is explained in the [Customization](#customizations) sections bel Note that the `outputs_location` variable is disabled by default, you need to explicitly set it in your `terraform.tfvars` file if you want output files to be generated by this stage. This is a sample `terraform.tfvars` that configures it, refer to the [bootstrap stage documentation](../0-bootstrap/README.md#output-files-and-cross-stage-variables) for more details: -```hcl +```tfvars outputs_location = "~/fast-config" ``` @@ -270,7 +270,7 @@ This stage includes basic support for an HA VPN connecting each environment land Support for the onprem VPNs is disabled by default so that no resources are created, this is an example of how to configure one variable to enable the VPN for dev in the primary region: -```hcl +```tfvars vpn_onprem_dev_primary_config = { peer_external_gateways = { default = { @@ -312,7 +312,6 @@ vpn_onprem_dev_primary_config = { } } } -# tftest skip ``` ### Changing default regions diff --git a/fast/stages/2-networking-e-nva-bgp/README.md b/fast/stages/2-networking-e-nva-bgp/README.md index adb68d8977..ea1e2ec56e 100644 --- a/fast/stages/2-networking-e-nva-bgp/README.md +++ b/fast/stages/2-networking-e-nva-bgp/README.md @@ -357,7 +357,7 @@ The latter set is explained in the [Customization](#customizations) sections bel Note that the `outputs_location` variable is disabled by default, you need to explicitly set it in your `terraform.tfvars` file if you want output files to be generated by this stage. This is a sample `terraform.tfvars` that configures it, refer to the [bootstrap stage documentation](../0-bootstrap/README.md#output-files-and-cross-stage-variables) for more details: -```hcl +```tfvars outputs_location = "~/fast-config" ``` @@ -419,7 +419,7 @@ This stage includes basic support for an HA VPN connecting the landing zone in t Support for the onprem VPNs is disabled by default so that no resources are created, this is an example of how to configure one variable to enable the VPN in the primary region: -```hcl +```tfvars vpn_onprem_primary_config = { peer_external_gateways = { default = { @@ -461,7 +461,6 @@ vpn_onprem_primary_config = { } } } -# tftest skip ``` ### Adding an environment diff --git a/fast/stages/2-security/README.md b/fast/stages/2-security/README.md index f6c966b8dc..66f726b5f1 100644 --- a/fast/stages/2-security/README.md +++ b/fast/stages/2-security/README.md @@ -110,7 +110,7 @@ The latter set is explained in the [Customization](#customizations) sections bel Note that the `outputs_location` variable is disabled by default, you need to explicitly set it in your `terraform.tfvars` file if you want output files to be generated by this stage. This is a sample `terraform.tfvars` that configures it, refer to the [bootstrap stage documentation](../0-bootstrap/README.md#output-files-and-cross-stage-variables) for more details: -```hcl +```tfvars outputs_location = "~/fast-config" ``` diff --git a/modules/bigquery-dataset/README.md b/modules/bigquery-dataset/README.md index e7b9333b62..a1b2b2dd07 100644 --- a/modules/bigquery-dataset/README.md +++ b/modules/bigquery-dataset/README.md @@ -35,7 +35,7 @@ module "bigquery-dataset" { view_1 = "my-project|my-dataset|my-table" } } -# tftest modules=1 resources=5 +# tftest modules=1 resources=5 inventory=simple.yaml ``` ### IAM roles @@ -51,7 +51,7 @@ module "bigquery-dataset" { "roles/bigquery.dataOwner" = ["user:user1@example.org"] } } -# tftest modules=1 resources=2 +# tftest modules=1 resources=2 inventory=iam.yaml ``` ### Dataset options @@ -70,7 +70,7 @@ module "bigquery-dataset" { max_time_travel_hours = 168 } } -# tftest modules=1 resources=1 +# tftest modules=1 resources=1 inventory=options.yaml ``` ### Tables and views @@ -100,7 +100,7 @@ module "bigquery-dataset" { } } } -# tftest modules=1 resources=2 +# tftest modules=1 resources=2 inventory=tables.yaml ``` If partitioning is needed, populate the `partitioning` variable using either the `time` or `range` attribute. @@ -132,7 +132,7 @@ module "bigquery-dataset" { } } } -# tftest modules=1 resources=2 +# tftest modules=1 resources=2 inventory=partitioning.yaml ``` To create views use the `view` variable. If you're querying a table created by the same module `terraform apply` will initially fail and eventually succeed once the underlying table has been created. You can probably also use the module's output in the view's query to create a dependency on the table. @@ -170,7 +170,7 @@ module "bigquery-dataset" { } } -# tftest modules=1 resources=3 +# tftest modules=1 resources=3 inventory=views.yaml ``` diff --git a/modules/billing-budget/README.md b/modules/billing-budget/README.md index d995c0e0ac..3db5faa325 100644 --- a/modules/billing-budget/README.md +++ b/modules/billing-budget/README.md @@ -32,7 +32,7 @@ module "budget" { emails = ["user@example.com"] } } -# tftest modules=1 resources=2 +# tftest modules=1 resources=2 inventory=email.yaml ``` ### Pubsub notification @@ -59,7 +59,7 @@ module "pubsub" { name = "budget-topic" } -# tftest modules=2 resources=2 +# tftest modules=2 resources=2 inventory=pubsub.yaml ``` diff --git a/modules/compute-mig/README.md b/modules/compute-mig/README.md index cdcec16f6f..5851b6ad2f 100644 --- a/modules/compute-mig/README.md +++ b/modules/compute-mig/README.md @@ -46,7 +46,7 @@ module "nginx-mig" { target_size = 2 instance_template = module.nginx-template.template.self_link } -# tftest modules=2 resources=2 +# tftest modules=2 resources=2 inventory=simple.yaml ``` ### Multiple versions @@ -149,7 +149,7 @@ module "nginx-mig" { } } } -# tftest modules=2 resources=3 +# tftest modules=2 resources=3 inventory=health-check.yaml ``` ### Autoscaling @@ -202,7 +202,7 @@ module "nginx-mig" { } } } -# tftest modules=2 resources=3 +# tftest modules=2 resources=3 inventory=autoscaling.yaml ``` ### Update policy @@ -408,7 +408,7 @@ module "nginx-mig" { } } } -# tftest modules=2 resources=4 +# tftest modules=2 resources=4 inventory=stateful.yaml ``` diff --git a/modules/gke-hub/README.md b/modules/gke-hub/README.md index f895f013a3..8f801f934d 100644 --- a/modules/gke-hub/README.md +++ b/modules/gke-hub/README.md @@ -54,7 +54,7 @@ module "cluster_1" { network = module.vpc.self_link subnetwork = module.vpc.subnet_self_links["europe-west1/cluster-1"] master_authorized_ranges = { - fc1918_10_8 = "10.0.0.0/8" + rfc1918_10_8 = "10.0.0.0/8" } master_ipv4_cidr_block = "192.168.0.0/28" } @@ -119,7 +119,7 @@ module "hub" { } } -# tftest modules=4 resources=16 +# tftest modules=4 resources=16 inventory=full.yaml ``` ## Multi-cluster mesh on GKE diff --git a/modules/kms/README.md b/modules/kms/README.md index 3398a595d2..9565c3a9de 100644 --- a/modules/kms/README.md +++ b/modules/kms/README.md @@ -56,7 +56,7 @@ module "kms" { key-c = { rotation_period = null, labels = { env = "test" } } } } -# tftest modules=1 resources=9 +# tftest modules=1 resources=9 inventory=basic.yaml ``` ### Crypto key purpose diff --git a/modules/net-address/README.md b/modules/net-address/README.md index 23e947cd45..32b660146e 100644 --- a/modules/net-address/README.md +++ b/modules/net-address/README.md @@ -11,12 +11,12 @@ module "addresses" { source = "./fabric/modules/net-address" project_id = var.project_id external_addresses = { - nat-1 = var.region - vpn-remote = var.region + one = "europe-west1" + two = "europe-west2" } global_addresses = ["app-1", "app-2"] } -# tftest modules=1 resources=4 +# tftest modules=1 resources=4 inventory=external.yaml ``` ### Internal addresses @@ -38,7 +38,7 @@ module "addresses" { } } } -# tftest modules=1 resources=2 +# tftest modules=1 resources=2 inventory=internal.yaml ``` ### PSA addresses @@ -55,7 +55,7 @@ module "addresses" { } } } -# tftest modules=1 resources=1 +# tftest modules=1 resources=1 inventory=psa.yaml ``` ### PSC addresses @@ -75,7 +75,7 @@ module "addresses" { } } } -# tftest modules=1 resources=2 +# tftest modules=1 resources=2 inventory=psc.yaml ``` diff --git a/tests/fixtures.py b/tests/fixtures.py index 381e161e4e..c142a61029 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -143,6 +143,7 @@ def inner(module_path, basedir=None, tf_var_files=None, extra_files=None, **tf_vars): if basedir is None: basedir = Path(request.fspath).parent + print(f"{basedir=}") return plan_summary(module_path=module_path, basedir=basedir, tf_var_files=tf_var_files, extra_files=extra_files, **tf_vars) diff --git a/tests/legacy_fixtures.py b/tests/legacy_fixtures.py index 8b23ea5eee..593709e430 100644 --- a/tests/legacy_fixtures.py +++ b/tests/legacy_fixtures.py @@ -1,4 +1,4 @@ -# Copyright 2022 Google LLC +# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -28,74 +28,6 @@ BASEDIR = os.path.dirname(os.path.dirname(__file__)) -@pytest.fixture(scope='session') -def _plan_runner(): - 'Return a function to run Terraform plan on a fixture.' - - def run_plan(fixture_path=None, extra_files=None, tf_var_file=None, - targets=None, refresh=True, tmpdir=True, **tf_vars): - 'Run Terraform plan and returns parsed output.' - if fixture_path is None: - # find out the fixture directory from the caller's directory - caller = inspect.stack()[2] - fixture_path = os.path.join(os.path.dirname(caller.filename), 'fixture') - - fixture_parent = os.path.dirname(fixture_path) - fixture_prefix = os.path.basename(fixture_path) + '_' - with tempfile.TemporaryDirectory(prefix=fixture_prefix, - dir=fixture_parent) as tmp_path: - # copy fixture to a temporary directory so we can execute - # multiple tests in parallel - if tmpdir: - shutil.copytree(fixture_path, tmp_path, dirs_exist_ok=True) - tf = tftest.TerraformTest(tmp_path if tmpdir else fixture_path, BASEDIR, - os.environ.get('TERRAFORM', 'terraform')) - tf.setup(extra_files=extra_files, upgrade=True) - plan = tf.plan(output=True, refresh=refresh, tf_var_file=tf_var_file, - tf_vars=tf_vars, targets=targets) - return plan - - return run_plan - - -@pytest.fixture(scope='session') -def plan_runner(_plan_runner): - 'Return a function to run Terraform plan on a module fixture.' - - def run_plan(fixture_path=None, extra_files=None, tf_var_file=None, - targets=None, **tf_vars): - 'Run Terraform plan and returns plan and module resources.' - plan = _plan_runner(fixture_path, extra_files=extra_files, - tf_var_file=tf_var_file, targets=targets, **tf_vars) - # skip the fixture - root_module = plan.root_module['child_modules'][0] - return plan, root_module['resources'] - - return run_plan - - -@pytest.fixture(scope='session') -def e2e_plan_runner(_plan_runner): - 'Return a function to run Terraform plan on an end-to-end fixture.' - - def run_plan(fixture_path=None, tf_var_file=None, targets=None, refresh=True, - include_bare_resources=False, **tf_vars): - 'Run Terraform plan on an end-to-end module using defaults, returns data.' - plan = _plan_runner(fixture_path, tf_var_file=tf_var_file, targets=targets, - refresh=refresh, **tf_vars) - # skip the fixture - root_module = plan.root_module['child_modules'][0] - modules = dict((mod['address'], mod['resources']) - for mod in root_module['child_modules']) - resources = [r for m in modules.values() for r in m] - if include_bare_resources: - bare_resources = root_module['resources'] - resources.extend(bare_resources) - return modules, resources - - return run_plan - - @pytest.fixture(scope='session') def apply_runner(): 'Return a function to run Terraform apply on a fixture.' diff --git a/tests/modules/apigee/__init__.py b/tests/modules/apigee/__init__.py deleted file mode 100644 index 6d6d1266c3..0000000000 --- a/tests/modules/apigee/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tests/modules/apigee/fixture/test.all.tfvars b/tests/modules/apigee/all.tfvars similarity index 100% rename from tests/modules/apigee/fixture/test.all.tfvars rename to tests/modules/apigee/all.tfvars diff --git a/tests/modules/apigee/all.yaml b/tests/modules/apigee/all.yaml new file mode 100644 index 0000000000..587d6ff589 --- /dev/null +++ b/tests/modules/apigee/all.yaml @@ -0,0 +1,83 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + google_apigee_endpoint_attachment.endpoint_attachments["endpoint-backend-1"]: + endpoint_attachment_id: endpoint-backend-1 + location: europe-west1 + service_attachment: projects/my-project-1/serviceAttachments/gkebackend1 + google_apigee_endpoint_attachment.endpoint_attachments["endpoint-backend-2"]: + endpoint_attachment_id: endpoint-backend-2 + location: europe-west1 + service_attachment: projects/my-project-2/serviceAttachments/gkebackend2 + google_apigee_envgroup.envgroups["prod"]: + hostnames: + - prod.example.com + name: prod + google_apigee_envgroup.envgroups["test"]: + hostnames: + - test.example.com + name: test + google_apigee_envgroup_attachment.envgroup_attachments["apis-prod-prod"]: + environment: apis-prod + google_apigee_envgroup_attachment.envgroup_attachments["apis-test-test"]: + environment: apis-test + google_apigee_environment.environments["apis-prod"]: + description: APIs prod + display_name: APIs prod + name: apis-prod + google_apigee_environment.environments["apis-test"]: + description: APIs Test + display_name: APIs test + name: apis-test + google_apigee_environment_iam_binding.binding["apis-prod-roles/viewer"]: + condition: [] + env_id: apis-prod + members: + - group:devops@myorg.com + role: roles/viewer + google_apigee_instance.instances["instance-prod-ew3"]: + description: Terraform-managed + disk_encryption_key_name: null + display_name: null + ip_range: 10.0.6.0/22,10.1.0.16/28 + location: europe-west3 + name: instance-prod-ew3 + google_apigee_instance.instances["instance-test-ew1"]: + description: Terraform-managed + disk_encryption_key_name: null + display_name: null + ip_range: 10.0.4.0/22,10.1.0.0/28 + location: europe-west1 + name: instance-test-ew1 + google_apigee_organization.organization[0]: + analytics_region: europe-west1 + authorized_network: my-vpc + billing_type: Pay-as-you-go + description: null + display_name: null + project_id: my-project + retention: DELETION_RETENTION_UNSPECIFIED + runtime_database_encryption_key_name: '123456789' + runtime_type: CLOUD + +counts: + google_apigee_endpoint_attachment: 2 + google_apigee_envgroup: 2 + google_apigee_envgroup_attachment: 2 + google_apigee_environment: 2 + google_apigee_environment_iam_binding: 1 + google_apigee_instance: 2 + google_apigee_instance_attachment: 2 + google_apigee_organization: 1 diff --git a/tests/modules/apigee/fixture/test.endpoint_attachment_only.tfvars b/tests/modules/apigee/endpoint_attachment_only.tfvars similarity index 100% rename from tests/modules/apigee/fixture/test.endpoint_attachment_only.tfvars rename to tests/modules/apigee/endpoint_attachment_only.tfvars diff --git a/tests/modules/apigee/endpoint_attachment_only.yaml b/tests/modules/apigee/endpoint_attachment_only.yaml new file mode 100644 index 0000000000..aa67380f4e --- /dev/null +++ b/tests/modules/apigee/endpoint_attachment_only.yaml @@ -0,0 +1,23 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + google_apigee_endpoint_attachment.endpoint_attachments["endpoint-backend-1"]: + endpoint_attachment_id: endpoint-backend-1 + location: europe-west1 + org_id: organizations/my-project + service_attachment: projects/my-project-1/serviceAttachments/gkebackend1 + +counts: + google_apigee_endpoint_attachment: 1 diff --git a/tests/modules/apigee/fixture/test.env_only.tfvars b/tests/modules/apigee/env_only.tfvars similarity index 100% rename from tests/modules/apigee/fixture/test.env_only.tfvars rename to tests/modules/apigee/env_only.tfvars diff --git a/tests/modules/apigee/env_only.yaml b/tests/modules/apigee/env_only.yaml new file mode 100644 index 0000000000..3a5e1ec233 --- /dev/null +++ b/tests/modules/apigee/env_only.yaml @@ -0,0 +1,32 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + google_apigee_envgroup_attachment.envgroup_attachments["apis-test-test"]: + envgroup_id: test + environment: apis-test + timeouts: null + google_apigee_environment.environments["apis-test"]: + description: APIs Test + display_name: APIs test + name: apis-test + node_config: + - max_node_count: '5' + min_node_count: '2' + org_id: organizations/my-project + timeouts: null + +counts: + google_apigee_envgroup_attachment: 1 + google_apigee_environment: 1 diff --git a/tests/modules/apigee/fixture/test.env_only_with_api_proxy_type.tfvars b/tests/modules/apigee/env_only_with_api_proxy_type.tfvars similarity index 100% rename from tests/modules/apigee/fixture/test.env_only_with_api_proxy_type.tfvars rename to tests/modules/apigee/env_only_with_api_proxy_type.tfvars diff --git a/tests/modules/apigee/env_only_with_api_proxy_type.yaml b/tests/modules/apigee/env_only_with_api_proxy_type.yaml new file mode 100644 index 0000000000..ba9371ab2d --- /dev/null +++ b/tests/modules/apigee/env_only_with_api_proxy_type.yaml @@ -0,0 +1,31 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + google_apigee_envgroup_attachment.envgroup_attachments["apis-test-test"]: + envgroup_id: test + environment: apis-test + google_apigee_environment.environments["apis-test"]: + api_proxy_type: PROGRAMMABLE + description: APIs Test + display_name: APIs test + name: apis-test + node_config: + - max_node_count: '5' + min_node_count: '2' + org_id: organizations/my-project + +counts: + google_apigee_envgroup_attachment: 1 + google_apigee_environment: 1 diff --git a/tests/modules/apigee/fixture/test.env_only_with_deployment_type.tfvars b/tests/modules/apigee/env_only_with_deployment_type.tfvars similarity index 100% rename from tests/modules/apigee/fixture/test.env_only_with_deployment_type.tfvars rename to tests/modules/apigee/env_only_with_deployment_type.tfvars diff --git a/tests/modules/apigee/env_only_with_deployment_type.yaml b/tests/modules/apigee/env_only_with_deployment_type.yaml new file mode 100644 index 0000000000..f315f46335 --- /dev/null +++ b/tests/modules/apigee/env_only_with_deployment_type.yaml @@ -0,0 +1,34 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + google_apigee_envgroup_attachment.envgroup_attachments["apis-test-test"]: + envgroup_id: test + environment: apis-test + timeouts: null + google_apigee_environment.environments["apis-test"]: + deployment_type: ARCHIVE + description: APIs Test + display_name: APIs test + name: apis-test + node_config: + - max_node_count: '5' + min_node_count: '2' + org_id: organizations/my-project + timeouts: null + +counts: + google_apigee_envgroup_attachment: 1 + google_apigee_environment: 1 + diff --git a/tests/modules/apigee/fixture/test.envgroup_only.tfvars b/tests/modules/apigee/envgroup_only.tfvars similarity index 100% rename from tests/modules/apigee/fixture/test.envgroup_only.tfvars rename to tests/modules/apigee/envgroup_only.tfvars diff --git a/tests/fast/stages_multitenant/__init__.py b/tests/modules/apigee/envgroup_only.yaml similarity index 72% rename from tests/fast/stages_multitenant/__init__.py rename to tests/modules/apigee/envgroup_only.yaml index 6d6d1266c3..58ee34c085 100644 --- a/tests/fast/stages_multitenant/__init__.py +++ b/tests/modules/apigee/envgroup_only.yaml @@ -1,4 +1,4 @@ -# Copyright 2022 Google LLC +# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -11,3 +11,13 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + +values: + google_apigee_envgroup.envgroups["test"]: + hostnames: + - test.example.com + name: test + org_id: organizations/my-project + +counts: + google_apigee_envgroup: 1 diff --git a/tests/modules/apigee/fixture/main.tf b/tests/modules/apigee/fixture/main.tf deleted file mode 100644 index 7ab25f733a..0000000000 --- a/tests/modules/apigee/fixture/main.tf +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -module "test" { - source = "../../../../modules/apigee" - project_id = var.project_id - organization = var.organization - envgroups = var.envgroups - environments = var.environments - instances = var.instances - endpoint_attachments = var.endpoint_attachments -} diff --git a/tests/modules/apigee/fixture/variables.tf b/tests/modules/apigee/fixture/variables.tf deleted file mode 100644 index 00961aac2c..0000000000 --- a/tests/modules/apigee/fixture/variables.tf +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -variable "endpoint_attachments" { - description = "Endpoint attachments." - type = map(object({ - region = string - service_attachment = string - })) - default = null -} - -variable "envgroups" { - description = "Environment groups (NAME => [HOSTNAMES])." - type = map(list(string)) - default = null -} - -variable "environments" { - description = "Environments." - type = map(object({ - display_name = optional(string) - description = optional(string, "Terraform-managed") - deployment_type = optional(string) - api_proxy_type = optional(string) - node_config = optional(object({ - min_node_count = optional(number) - max_node_count = optional(number) - })) - iam = optional(map(list(string))) - envgroups = list(string) - })) - default = null -} - -variable "instances" { - description = "Instances." - type = map(object({ - display_name = optional(string) - description = optional(string, "Terraform-managed") - region = string - environments = list(string) - runtime_ip_cidr_range = string - troubleshooting_ip_cidr_range = string - disk_encryption_key = optional(string) - consumer_accept_list = optional(list(string)) - })) - default = null -} - -variable "organization" { - description = "Apigee organization. If set to null the organization must already exist." - type = object({ - display_name = optional(string) - description = optional(string, "Terraform-managed") - authorized_network = optional(string) - runtime_type = optional(string, "CLOUD") - billing_type = optional(string) - database_encryption_key = optional(string) - analytics_region = optional(string, "europe-west1") - }) - default = null -} - -variable "project_id" { - description = "Project ID." - type = string -} diff --git a/tests/modules/apigee/fixture/test.instance_only.tfvars b/tests/modules/apigee/instance_only.tfvars similarity index 100% rename from tests/modules/apigee/fixture/test.instance_only.tfvars rename to tests/modules/apigee/instance_only.tfvars diff --git a/tests/modules/apigee/instance_only.yaml b/tests/modules/apigee/instance_only.yaml new file mode 100644 index 0000000000..5150e979cd --- /dev/null +++ b/tests/modules/apigee/instance_only.yaml @@ -0,0 +1,26 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + google_apigee_instance.instances["instance-test-ew1"]: + ip_range: 10.0.4.0/22,10.1.1.0.0/28 + location: europe-west1 + name: instance-test-ew1 + org_id: organizations/my-project + google_apigee_instance_attachment.instance_attachments["instance-test-ew1-apis-test"]: + environment: organizations/my-project/environments/apis-test + +counts: + google_apigee_instance: 1 + google_apigee_instance_attachment: 1 diff --git a/tests/modules/apigee/fixture/test.no_instances.tfvars b/tests/modules/apigee/no_instances.tfvars similarity index 100% rename from tests/modules/apigee/fixture/test.no_instances.tfvars rename to tests/modules/apigee/no_instances.tfvars diff --git a/tests/modules/apigee/no_instances.yaml b/tests/modules/apigee/no_instances.yaml new file mode 100644 index 0000000000..ce509047b4 --- /dev/null +++ b/tests/modules/apigee/no_instances.yaml @@ -0,0 +1,51 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + google_apigee_envgroup.envgroups["prod"]: + hostnames: + - prod.example.com + name: prod + google_apigee_envgroup.envgroups["test"]: + hostnames: + - test.example.com + name: test + google_apigee_envgroup_attachment.envgroup_attachments["apis-prod-prod"]: + environment: apis-prod + google_apigee_envgroup_attachment.envgroup_attachments["apis-test-test"]: + environment: apis-test + google_apigee_environment.environments["apis-prod"]: + description: APIs prod + display_name: APIs prod + name: apis-prod + google_apigee_environment.environments["apis-test"]: + description: APIs Test + display_name: APIs test + name: apis-test + google_apigee_organization.organization[0]: + analytics_region: europe-west1 + authorized_network: my-vpc + billing_type: PAYG + description: null + display_name: null + project_id: my-project + retention: DELETION_RETENTION_UNSPECIFIED + runtime_database_encryption_key_name: '123456789' + runtime_type: CLOUD + +counts: + google_apigee_envgroup: 2 + google_apigee_envgroup_attachment: 2 + google_apigee_environment: 2 + google_apigee_organization: 1 diff --git a/tests/modules/apigee/fixture/test.organization_only.tfvars b/tests/modules/apigee/organization_only.tfvars similarity index 100% rename from tests/modules/apigee/fixture/test.organization_only.tfvars rename to tests/modules/apigee/organization_only.tfvars diff --git a/tests/modules/apigee/organization_only.yaml b/tests/modules/apigee/organization_only.yaml new file mode 100644 index 0000000000..8eee04fcc0 --- /dev/null +++ b/tests/modules/apigee/organization_only.yaml @@ -0,0 +1,28 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + google_apigee_organization.organization[0]: + analytics_region: europe-west1 + authorized_network: my-vpc + billing_type: PAYG + description: null + display_name: null + project_id: my-project + retention: DELETION_RETENTION_UNSPECIFIED + runtime_database_encryption_key_name: '123456789' + runtime_type: CLOUD + +counts: + google_apigee_organization: 1 diff --git a/tests/modules/apigee/test_plan.py b/tests/modules/apigee/test_plan.py deleted file mode 100644 index d16ef2963b..0000000000 --- a/tests/modules/apigee/test_plan.py +++ /dev/null @@ -1,95 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import collections - -def test_all(plan_runner): - "Test that creates all resources." - _, resources = plan_runner(tf_var_file='test.all.tfvars') - counts = collections.Counter(f'{r["type"]}.{r["name"]}' for r in resources) - assert counts == { - 'google_apigee_organization.organization': 1, - 'google_apigee_envgroup.envgroups': 2, - 'google_apigee_environment.environments': 2, - 'google_apigee_envgroup_attachment.envgroup_attachments': 2, - 'google_apigee_instance.instances': 2, - 'google_apigee_instance_attachment.instance_attachments': 2, - 'google_apigee_endpoint_attachment.endpoint_attachments': 2, - 'google_apigee_environment_iam_binding.binding': 1 - } - -def test_organization_only(plan_runner): - "Test that creates only an organization." - _, resources = plan_runner(tf_var_file='test.organization_only.tfvars') - counts = collections.Counter(f'{r["type"]}.{r["name"]}' for r in resources) - assert counts == { - 'google_apigee_organization.organization': 1 - } - -def test_envgroup_only(plan_runner): - "Test that creates only an environment group in an existing organization." - _, resources = plan_runner(tf_var_file='test.envgroup_only.tfvars') - counts = collections.Counter(f'{r["type"]}.{r["name"]}' for r in resources) - assert counts == { - 'google_apigee_envgroup.envgroups': 1, - } - -def test_env_only(plan_runner): - "Test that creates an environment in an existing environment group." - _, resources = plan_runner(tf_var_file='test.env_only.tfvars') - counts = collections.Counter(f'{r["type"]}.{r["name"]}' for r in resources) - assert counts == { - 'google_apigee_environment.environments': 1, - 'google_apigee_envgroup_attachment.envgroup_attachments': 1, - } - -def test_env_only_with_deployment_type(plan_runner): - "Test that creates an environment in an existing environment group, with deployment_type set." - _, resources = plan_runner(tf_var_file='test.env_only_with_deployment_type.tfvars') - assert [r['values'].get('deployment_type') for r in resources - ] == [None, 'ARCHIVE'] - -def test_env_only_with_api_proxy_type(plan_runner): - "Test that creates an environment in an existing environment group, with api_proxy_type set." - _, resources = plan_runner(tf_var_file='test.env_only_with_api_proxy_type.tfvars') - assert [r['values'].get('api_proxy_type') for r in resources - ] == [None, 'PROGRAMMABLE'] - -def test_instance_only(plan_runner): - "Test that creates only an instance." - _, resources = plan_runner(tf_var_file='test.instance_only.tfvars') - counts = collections.Counter(f'{r["type"]}.{r["name"]}' for r in resources) - assert counts == { - 'google_apigee_instance.instances': 1, - 'google_apigee_instance_attachment.instance_attachments': 1 - } - -def test_endpoint_attachment_only(plan_runner): - "Test that creates only an instance." - _, resources = plan_runner(tf_var_file='test.endpoint_attachment_only.tfvars') - counts = collections.Counter(f'{r["type"]}.{r["name"]}' for r in resources) - assert counts == { - 'google_apigee_endpoint_attachment.endpoint_attachments': 1, - } - -def test_no_instances(plan_runner): - "Test that creates everything but the instances." - _, resources = plan_runner(tf_var_file='test.no_instances.tfvars') - counts = collections.Counter(f'{r["type"]}.{r["name"]}' for r in resources) - assert counts == { - 'google_apigee_organization.organization': 1, - 'google_apigee_envgroup.envgroups': 2, - 'google_apigee_environment.environments': 2, - 'google_apigee_envgroup_attachment.envgroup_attachments': 2, - } diff --git a/tests/modules/binauthz/test_plan.py b/tests/modules/apigee/tftest.yaml similarity index 69% rename from tests/modules/binauthz/test_plan.py rename to tests/modules/apigee/tftest.yaml index 9555042581..9b381d15d2 100644 --- a/tests/modules/binauthz/test_plan.py +++ b/tests/modules/apigee/tftest.yaml @@ -1,4 +1,4 @@ -# Copyright 2022 Google LLC +# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,13 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pytest +module: modules/apigee -@pytest.fixture -def resources(plan_runner): - _, resources = plan_runner() - return resources - -def test_resource_count(resources): - "Test number of resources created." - assert len(resources) == 4 +tests: + all: + endpoint_attachment_only: + env_only: + env_only_with_api_proxy_type: + env_only_with_deployment_type: + envgroup_only: + instance_only: + no_instances: + organization_only: diff --git a/tests/modules/bigquery_dataset/__init__.py b/tests/modules/bigquery_dataset/__init__.py deleted file mode 100644 index 6d6d1266c3..0000000000 --- a/tests/modules/bigquery_dataset/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tests/modules/bigquery_dataset/examples/iam.yaml b/tests/modules/bigquery_dataset/examples/iam.yaml new file mode 100644 index 0000000000..5135ecc69a --- /dev/null +++ b/tests/modules/bigquery_dataset/examples/iam.yaml @@ -0,0 +1,29 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + module.bigquery-dataset.google_bigquery_dataset.default: + dataset_id: my-dataset + project: my-project + module.bigquery-dataset.google_bigquery_dataset_iam_binding.bindings["roles/bigquery.dataOwner"]: + condition: [] + dataset_id: my-dataset + members: + - user:user1@example.org + project: my-project + role: roles/bigquery.dataOwner + +counts: + google_bigquery_dataset: 1 + google_bigquery_dataset_iam_binding: 1 diff --git a/tests/fast/stages_multitenant/s1_resman_tenant/__init__.py b/tests/modules/bigquery_dataset/examples/options.yaml similarity index 62% rename from tests/fast/stages_multitenant/s1_resman_tenant/__init__.py rename to tests/modules/bigquery_dataset/examples/options.yaml index 6d6d1266c3..95f2da92d0 100644 --- a/tests/fast/stages_multitenant/s1_resman_tenant/__init__.py +++ b/tests/modules/bigquery_dataset/examples/options.yaml @@ -1,4 +1,4 @@ -# Copyright 2022 Google LLC +# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -11,3 +11,15 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + +values: + module.bigquery-dataset.google_bigquery_dataset.default: + dataset_id: my-dataset + default_partition_expiration_ms: null + default_table_expiration_ms: 3600000 + delete_contents_on_destroy: false + location: EU + project: my-project + +counts: + google_bigquery_dataset: 1 diff --git a/tests/modules/kms/test_plan.py b/tests/modules/bigquery_dataset/examples/partitioning.yaml similarity index 58% rename from tests/modules/kms/test_plan.py rename to tests/modules/bigquery_dataset/examples/partitioning.yaml index 79626f3444..ac7992ea2d 100644 --- a/tests/modules/kms/test_plan.py +++ b/tests/modules/bigquery_dataset/examples/partitioning.yaml @@ -1,4 +1,4 @@ -# Copyright 2022 Google LLC +# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,14 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -def test_resources(plan_runner): - "Test module resources." - _, resources = plan_runner() - assert sorted(r['type'] for r in resources) == [ - 'google_kms_crypto_key', - 'google_kms_crypto_key', - 'google_kms_crypto_key', - 'google_kms_crypto_key_iam_binding', - 'google_kms_key_ring', - 'google_kms_key_ring_iam_binding' - ] +values: + module.bigquery-dataset.google_bigquery_dataset.default: + dataset_id: my-dataset + location: EU + project: my-project + module.bigquery-dataset.google_bigquery_table.default["table_a"]: + time_partitioning: + - field: null + require_partition_filter: null + type: DAY + +counts: + google_bigquery_dataset: 1 + google_bigquery_table: 1 diff --git a/tests/modules/bigquery_dataset/examples/simple.yaml b/tests/modules/bigquery_dataset/examples/simple.yaml new file mode 100644 index 0000000000..acf8e819c6 --- /dev/null +++ b/tests/modules/bigquery_dataset/examples/simple.yaml @@ -0,0 +1,46 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + module.bigquery-dataset.google_bigquery_dataset.default: + dataset_id: my-dataset + description: Terraform managed. + location: EU + project: my-project + module.bigquery-dataset.google_bigquery_dataset_access.group_by_email["reader-group"]: + dataset_id: my-dataset + group_by_email: playground-test@ludomagno.net + project: my-project + role: READER + module.bigquery-dataset.google_bigquery_dataset_access.special_group["project_owners"]: + dataset_id: my-dataset + project: my-project + role: OWNER + special_group: projectOwners + module.bigquery-dataset.google_bigquery_dataset_access.user_by_email["owner"]: + dataset_id: my-dataset + project: my-project + role: OWNER + user_by_email: ludo@ludomagno.net + module.bigquery-dataset.google_bigquery_dataset_access.views["view_1"]: + dataset_id: my-dataset + project: my-project + view: + - dataset_id: my-dataset + project_id: my-project + table_id: my-table + +counts: + google_bigquery_dataset: 1 + google_bigquery_dataset_access: 4 diff --git a/tests/modules/bigquery_dataset/examples/tables.yaml b/tests/modules/bigquery_dataset/examples/tables.yaml new file mode 100644 index 0000000000..c3917788a2 --- /dev/null +++ b/tests/modules/bigquery_dataset/examples/tables.yaml @@ -0,0 +1,39 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + module.bigquery-dataset.google_bigquery_dataset.default: + dataset_id: my_dataset + project: my-project + module.bigquery-dataset.google_bigquery_table.default["countries"]: + clustering: null + dataset_id: my_dataset + deletion_protection: true + description: Terraform managed. + friendly_name: Countries + materialized_view: [] + project: my-project + range_partitioning: [] + schema: '[{"name":"country","type":"STRING"},{"name":"population","type":"INT64"}]' + table_id: countries + time_partitioning: [] + view: [] + +counts: + google_bigquery_dataset: 1 + google_bigquery_table: 1 + modules: 1 + resources: 2 + +outputs: {} diff --git a/tests/modules/bigquery_dataset/examples/views.yaml b/tests/modules/bigquery_dataset/examples/views.yaml new file mode 100644 index 0000000000..0927e574a6 --- /dev/null +++ b/tests/modules/bigquery_dataset/examples/views.yaml @@ -0,0 +1,35 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + module.bigquery-dataset.google_bigquery_dataset.default: + dataset_id: my_dataset + location: EU + project: my-project + module.bigquery-dataset.google_bigquery_table.default["countries"]: + dataset_id: my_dataset + friendly_name: Countries + module.bigquery-dataset.google_bigquery_table.views["population"]: + dataset_id: my_dataset + deletion_protection: true + friendly_name: Population + project: my-project + table_id: population + view: + - query: SELECT SUM(population) FROM my_dataset.countries + use_legacy_sql: false + +counts: + google_bigquery_dataset: 1 + google_bigquery_table: 2 diff --git a/tests/modules/bigquery_dataset/fixture/main.tf b/tests/modules/bigquery_dataset/fixture/main.tf deleted file mode 100644 index a331411838..0000000000 --- a/tests/modules/bigquery_dataset/fixture/main.tf +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -module "test" { - source = "../../../../modules/bigquery-dataset" - project_id = "my-project" - id = "test" -} diff --git a/tests/modules/billing_budget/__init__.py b/tests/modules/billing_budget/__init__.py deleted file mode 100644 index 6d6d1266c3..0000000000 --- a/tests/modules/billing_budget/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tests/modules/billing_budget/examples/email.yaml b/tests/modules/billing_budget/examples/email.yaml new file mode 100644 index 0000000000..87c088268c --- /dev/null +++ b/tests/modules/billing_budget/examples/email.yaml @@ -0,0 +1,58 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + module.budget.google_billing_budget.budget: + all_updates_rule: + - disable_default_iam_recipients: false + pubsub_topic: null + schema_version: '1.0' + amount: + - last_period_amount: null + specified_amount: + - nanos: null + units: '100' + billing_account: 123456-123456-123456 + budget_filter: + - calendar_period: null + credit_types_treatment: INCLUDE_ALL_CREDITS + custom_period: [] + projects: + - projects/123456789000 + - projects/123456789111 + display_name: $100 budget + threshold_rules: + - spend_basis: CURRENT_SPEND + threshold_percent: 0.5 + - spend_basis: CURRENT_SPEND + threshold_percent: 0.75 + - spend_basis: CURRENT_SPEND + threshold_percent: 1 + - spend_basis: FORECASTED_SPEND + threshold_percent: 1 + module.budget.google_monitoring_notification_channel.email_channels["user@example.com"]: + description: null + display_name: $100 budget budget email notification (user@example.com) + enabled: true + force_delete: false + labels: + email_address: user@example.com + project: my-project + sensitive_labels: [] + type: email + user_labels: null + +counts: + google_billing_budget: 1 + google_monitoring_notification_channel: 1 diff --git a/tests/modules/billing_budget/examples/pubsub.yaml b/tests/modules/billing_budget/examples/pubsub.yaml new file mode 100644 index 0000000000..8d09d8a2da --- /dev/null +++ b/tests/modules/billing_budget/examples/pubsub.yaml @@ -0,0 +1,39 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + module.budget.google_billing_budget.budget: + all_updates_rule: + - disable_default_iam_recipients: false + monitoring_notification_channels: [] + pubsub_topic: projects/project-id/topics/budget-topic + schema_version: '1.0' + amount: + - last_period_amount: true + specified_amount: [] + billing_account: 123456-123456-123456 + budget_filter: + - calendar_period: null + credit_types_treatment: INCLUDE_ALL_CREDITS + custom_period: [] + projects: null + display_name: previous period budget + threshold_rules: + - spend_basis: CURRENT_SPEND + threshold_percent: 1 + timeouts: null + +counts: + google_billing_budget: 1 + google_pubsub_topic: 1 diff --git a/tests/modules/billing_budget/fixture/main.tf b/tests/modules/billing_budget/fixture/main.tf deleted file mode 100644 index 25cd25f577..0000000000 --- a/tests/modules/billing_budget/fixture/main.tf +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -module "budget" { - source = "../../../../modules/billing-budget" - billing_account = "123456-123456-123456" - name = "my budget" - projects = var.projects - services = var.services - notify_default_recipients = var.notify_default_recipients - amount = var.amount - credit_treatment = var.credit_treatment - pubsub_topic = var.pubsub_topic - notification_channels = var.notification_channels - thresholds = var.thresholds - email_recipients = var.email_recipients -} diff --git a/tests/modules/billing_budget/fixture/variables.tf b/tests/modules/billing_budget/fixture/variables.tf deleted file mode 100644 index 0cbcb447f4..0000000000 --- a/tests/modules/billing_budget/fixture/variables.tf +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -variable "amount" { - type = number - default = 0 -} - -variable "credit_treatment" { - type = string - default = "INCLUDE_ALL_CREDITS" -} - -variable "email_recipients" { - type = object({ - project_id = string - emails = list(string) - }) - default = null -} - -variable "notification_channels" { - type = list(string) - default = null -} - -variable "notify_default_recipients" { - type = bool - default = false -} - -variable "projects" { - type = list(string) - default = null -} - -variable "pubsub_topic" { - type = string - default = null -} - -variable "services" { - type = list(string) - default = null -} - -variable "thresholds" { - type = object({ - current = list(number) - forecasted = list(number) - }) - default = { - current = [0.5, 1.0] - forecasted = [1.0] - } -} diff --git a/tests/modules/billing_budget/test_plan.py b/tests/modules/billing_budget/test_plan.py deleted file mode 100644 index 6907ab0656..0000000000 --- a/tests/modules/billing_budget/test_plan.py +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -def test_pubsub(plan_runner): - "Test number of resources created." - _, resources = plan_runner(pubsub_topic='topic') - assert len(resources) == 1 - resource = resources[0] - assert resource['values']['all_updates_rule'] == [ - {'disable_default_iam_recipients': False, - 'monitoring_notification_channels': [], - 'pubsub_topic': 'topic', - 'schema_version': '1.0'} - ] - - -def test_channel(plan_runner): - _, resources = plan_runner(notification_channels='["channel"]') - assert len(resources) == 1 - resource = resources[0] - assert resource['values']['all_updates_rule'] == [ - {'disable_default_iam_recipients': True, - 'monitoring_notification_channels': ['channel'], - 'pubsub_topic': None, - 'schema_version': '1.0'} - ] - - -def test_emails(plan_runner): - email_recipients = '{project_id = "project", emails = ["a@b.com", "c@d.com"]}' - _, resources = plan_runner(email_recipients=email_recipients) - assert len(resources) == 3 - - -def test_absolute_amount(plan_runner): - "Test absolute amount budget." - _, resources = plan_runner(pubsub_topic='topic', amount="100") - assert len(resources) == 1 - resource = resources[0] - - amount = resource['values']['amount'][0] - assert amount['last_period_amount'] is None - assert amount['specified_amount'] == [{'nanos': None, 'units': '100'}] - - assert resource['values']['threshold_rules'] == [ - {'spend_basis': 'CURRENT_SPEND', - 'threshold_percent': 0.5}, - {'spend_basis': 'CURRENT_SPEND', - 'threshold_percent': 1}, - {'spend_basis': 'FORECASTED_SPEND', - 'threshold_percent': 1} - ] diff --git a/tests/modules/binauthz/__init__.py b/tests/modules/binauthz/__init__.py deleted file mode 100644 index 6d6d1266c3..0000000000 --- a/tests/modules/binauthz/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tests/modules/binauthz/fixture/main.tf b/tests/modules/binauthz/fixture/main.tf deleted file mode 100644 index 95f76d634f..0000000000 --- a/tests/modules/binauthz/fixture/main.tf +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -module "test" { - source = "../../../../modules/binauthz" - project_id = var.project_id - global_policy_evaluation_mode = var.global_policy_evaluation_mode - default_admission_rule = var.default_admission_rule - attestors_config = var.attestors_config -} diff --git a/tests/modules/binauthz/fixture/variables.tf b/tests/modules/binauthz/fixture/variables.tf deleted file mode 100644 index 327ced2523..0000000000 --- a/tests/modules/binauthz/fixture/variables.tf +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -variable "project_id" { - type = string - default = "my_project" -} - -variable "global_policy_evaluation_mode" { - type = string - default = null -} - -variable "admission_whitelist_patterns" { - type = list(string) - default = [ - "gcr.io/google_containers/*" - ] -} - -variable "default_admission_rule" { - type = object({ - evaluation_mode = string - enforcement_mode = string - attestors = list(string) - }) - default = { - evaluation_mode = "ALWAYS_ALLOW" - enforcement_mode = "ENFORCED_BLOCK_AND_AUDIT_LOG" - attestors = null - } -} - -variable "cluster_admission_rules" { - type = map(object({ - evaluation_mode = string - enforcement_mode = string - attestors = list(string) - })) - default = { - "europe-west1-c.cluster" = { - evaluation_mode = "REQUIRE_ATTESTATION" - enforcement_mode = "ENFORCED_BLOCK_AND_AUDIT_LOG" - attestors = ["test"] - } - } -} - -variable "attestors_config" { - description = "Attestors configuration" - type = map(object({ - note_reference = string - iam = map(list(string)) - pgp_public_keys = list(string) - pkix_public_keys = list(object({ - id = string - public_key_pem = string - signature_algorithm = string - })) - })) - default = { - "test" : { - note_reference = null - pgp_public_keys = [ - <