From ed6ebc0c823d91b07c3436b9fe07f8242aa1ceb8 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Thu, 5 Aug 2021 15:47:00 +0200 Subject: [PATCH] pytests for apigee modules --- tests/modules/apigee_organization/__init__.py | 13 +++++ .../apigee_organization/fixture/main.tf | 38 ++++++++++++++ .../apigee_organization/fixture/variables.tf | 25 ++++++++++ .../modules/apigee_organization/test_plan.py | 49 ++++++++++++++++++ tests/modules/apigee_x_instance/__init__.py | 13 +++++ .../modules/apigee_x_instance/fixture/main.tf | 28 +++++++++++ .../apigee_x_instance/fixture/variables.tf | 25 ++++++++++ tests/modules/apigee_x_instance/test_plan.py | 50 +++++++++++++++++++ 8 files changed, 241 insertions(+) create mode 100644 tests/modules/apigee_organization/__init__.py create mode 100644 tests/modules/apigee_organization/fixture/main.tf create mode 100644 tests/modules/apigee_organization/fixture/variables.tf create mode 100644 tests/modules/apigee_organization/test_plan.py create mode 100644 tests/modules/apigee_x_instance/__init__.py create mode 100644 tests/modules/apigee_x_instance/fixture/main.tf create mode 100644 tests/modules/apigee_x_instance/fixture/variables.tf create mode 100644 tests/modules/apigee_x_instance/test_plan.py diff --git a/tests/modules/apigee_organization/__init__.py b/tests/modules/apigee_organization/__init__.py new file mode 100644 index 000000000..d46dbae5e --- /dev/null +++ b/tests/modules/apigee_organization/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2021 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_organization/fixture/main.tf b/tests/modules/apigee_organization/fixture/main.tf new file mode 100644 index 000000000..7f5aa1649 --- /dev/null +++ b/tests/modules/apigee_organization/fixture/main.tf @@ -0,0 +1,38 @@ +/** + * Copyright 2021 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-organization" + project_id = "my-project" + analytics_region = var.analytics_region + runtime_type = "CLOUD" + authorized_network = var.network + apigee_environments = [ + "eval1", + "eval2" + ] + apigee_envgroups = { + eval = { + environments = [ + "eval1", + "eval2" + ] + hostnames = [ + "eval.api.example.com" + ] + } + } +} diff --git a/tests/modules/apigee_organization/fixture/variables.tf b/tests/modules/apigee_organization/fixture/variables.tf new file mode 100644 index 000000000..3e9109347 --- /dev/null +++ b/tests/modules/apigee_organization/fixture/variables.tf @@ -0,0 +1,25 @@ +/** + * Copyright 2021 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 "analytics_region" { + type = string + default = "europe-west1" +} + +variable "network" { + type = string + default = "apigee-vpc" +} \ No newline at end of file diff --git a/tests/modules/apigee_organization/test_plan.py b/tests/modules/apigee_organization/test_plan.py new file mode 100644 index 000000000..680d3cab3 --- /dev/null +++ b/tests/modules/apigee_organization/test_plan.py @@ -0,0 +1,49 @@ +# Copyright 2021 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 os +import pytest + + +FIXTURES_DIR = os.path.join(os.path.dirname(__file__), 'fixture') + + +@pytest.fixture +def resources(plan_runner): + _, resources = plan_runner(FIXTURES_DIR) + return resources + + +def test_resource_count(resources): + "Test number of resources created." + assert len(resources) == 6 + + +def test_envgroup_attachment(resources): + "Test Apigee Envgroup Attachments." + attachments = [r['values'] for r in resources if r['type'] + == 'google_apigee_envgroup_attachment'] + assert len(attachments) == 2 + assert set(a['environment'] for a in attachments) == set(['eval1', 'eval2']) + + +def test_envgroup(resources): + "Test env group." + envgroups = [r['values'] for r in resources if r['type'] + == 'google_apigee_envgroup'] + assert len(envgroups) == 1 + assert envgroups[0]['name'] == 'eval' + assert len(envgroups[0]['hostnames']) == 1 + assert envgroups[0]['hostnames'][0] == 'eval.api.example.com' diff --git a/tests/modules/apigee_x_instance/__init__.py b/tests/modules/apigee_x_instance/__init__.py new file mode 100644 index 000000000..d46dbae5e --- /dev/null +++ b/tests/modules/apigee_x_instance/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2021 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_x_instance/fixture/main.tf b/tests/modules/apigee_x_instance/fixture/main.tf new file mode 100644 index 000000000..7a4b73b55 --- /dev/null +++ b/tests/modules/apigee_x_instance/fixture/main.tf @@ -0,0 +1,28 @@ +/** + * Copyright 2021 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 "apigee-x-instance" { + source = "../../../../modules/apigee-x-instance" + name = var.name + region = var.region + cidr_mask = 22 + + apigee_org_id = "my-project" + apigee_environments = [ + "eval1", + "eval2" + ] +} \ No newline at end of file diff --git a/tests/modules/apigee_x_instance/fixture/variables.tf b/tests/modules/apigee_x_instance/fixture/variables.tf new file mode 100644 index 000000000..603ec5085 --- /dev/null +++ b/tests/modules/apigee_x_instance/fixture/variables.tf @@ -0,0 +1,25 @@ +/** + * Copyright 2021 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 "name" { + type = string + default = "my-test-instance" +} + +variable "region" { + type = string + default = "europe-west1" +} \ No newline at end of file diff --git a/tests/modules/apigee_x_instance/test_plan.py b/tests/modules/apigee_x_instance/test_plan.py new file mode 100644 index 000000000..4b3a9256d --- /dev/null +++ b/tests/modules/apigee_x_instance/test_plan.py @@ -0,0 +1,50 @@ +# Copyright 2021 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 os +import pytest + + +FIXTURES_DIR = os.path.join(os.path.dirname(__file__), 'fixture') + + +@pytest.fixture +def resources(plan_runner): + _, resources = plan_runner(FIXTURES_DIR) + return resources + + +def test_resource_count(resources): + "Test number of resources created." + assert len(resources) == 3 + + +def test_instance_attachment(resources): + "Test Apigee Instance Attachments." + attachments = [r['values'] for r in resources if r['type'] + == 'google_apigee_instance_attachment'] + assert len(attachments) == 2 + assert set(a['environment'] for a in attachments) == set(['eval1', 'eval2']) + + +def test_instance(resources): + "Test Instance." + instances = [r['values'] for r in resources if r['type'] + == 'google_apigee_instance'] + assert len(instances) == 1 + assert instances[0]['peering_cidr_range'] == 'SLASH_22' + assert instances[0]['name'] == 'my-test-instance' + assert instances[0]['location'] == 'europe-west1' +