From 9a0137bcfca61f564be191d38d8336d5c30a4500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Niesiob=C4=99dzki?= Date: Mon, 27 Mar 2023 09:31:07 +0000 Subject: [PATCH] Add test veryfing multiple filenames are used by default --- tests/modules/cloud_function/fixture/main.tf | 8 +++---- .../cloud_function/fixture/variables.tf | 5 +++++ tests/modules/cloud_function/test_plan.py | 22 +++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/tests/modules/cloud_function/fixture/main.tf b/tests/modules/cloud_function/fixture/main.tf index 0096159f..e9021610 100644 --- a/tests/modules/cloud_function/fixture/main.tf +++ b/tests/modules/cloud_function/fixture/main.tf @@ -15,15 +15,15 @@ */ module "test" { + count = var.instance_count source = "../../../../modules/cloud-function" project_id = "my-project" - name = "test" + name = "test_${count.index}" bucket_name = var.bucket_name v2 = var.v2 bundle_config = { - source_dir = "bundle" - output_path = "bundle.zip" - excludes = null + source_dir = "bundle" + excludes = null } iam = { "roles/cloudfunctions.invoker" = ["allUsers"] diff --git a/tests/modules/cloud_function/fixture/variables.tf b/tests/modules/cloud_function/fixture/variables.tf index 19238627..fe97d9f8 100644 --- a/tests/modules/cloud_function/fixture/variables.tf +++ b/tests/modules/cloud_function/fixture/variables.tf @@ -19,6 +19,11 @@ variable "bucket_name" { default = "test" } +variable "instance_count" { + type = number + default = 1 +} + variable "v2" { type = any default = false diff --git a/tests/modules/cloud_function/test_plan.py b/tests/modules/cloud_function/test_plan.py index 019d69ce..940438ae 100644 --- a/tests/modules/cloud_function/test_plan.py +++ b/tests/modules/cloud_function/test_plan.py @@ -22,6 +22,12 @@ def resources(plan_runner, version): _, resources = plan_runner(v2=v2) return resources +@pytest.fixture +def plan(plan_runner, version, count): + v2 = {'v1': 'false', 'v2': 'true'}[version] + plan, _ = plan_runner(v2=v2, instance_count=count) + return plan + @pytest.mark.parametrize('version', ['v1', 'v2']) def test_resource_count(resources): @@ -42,3 +48,19 @@ def test_iam(resources, version): assert len(bindings) == 1 assert bindings[0]['role'] == 'roles/cloudfunctions.invoker' assert bindings[0]['members'] == ['allUsers'] + + +@pytest.mark.parametrize('version', ['v1', 'v2']) +@pytest.mark.parametrize('count', [2]) +def test_multiple_functions(plan, version, count): + """Tests whether multiple use of functions result in use of multiple bundle files""" + + # data objects are only accessible in prior_state of the plan, they are not present in root_module + archives = [ + resource for child_module in plan['prior_state']["values"]["root_module"]["child_modules"] + for resource in child_module["resources"] + if resource["type"] == "archive_file" + ] + file_names = set([x["values"]["output_path"] for x in archives]) + + assert len(archives) == len(file_names)