Update project module to v4.0.0, update test framework module to v1.0.1
* update project module to v4.0.0 * bump tftest version in test requirements file * update plan test fixture to new syntax * fix foundations/environments tests * fix foundations/business-units tests * fix infrastructure/shared-vpc tests
This commit is contained in:
committed by
GitHub
parent
ed65051982
commit
fd0704670d
@@ -12,7 +12,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# TODO(averbukh): simplify log-sink parameters once https://github.com/terraform-google-modules/terraform-google-log-export/issues/28 is done.
|
||||
# TODO(averbukh): simplify log-sink parameters once https://github.com/terraform-google-modules/terraform-google-log-export/issues/28 is done.
|
||||
|
||||
locals {
|
||||
parent_numeric_id = element(split("/", var.root_node), 1)
|
||||
@@ -39,7 +39,7 @@ module "shared-folder" {
|
||||
|
||||
module "project-tf" {
|
||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||
version = "3.2.0"
|
||||
version = "4.0.0"
|
||||
parent = module.shared-folder.id
|
||||
billing_account = var.billing_account_id
|
||||
prefix = var.prefix
|
||||
@@ -138,7 +138,7 @@ module "business-unit-3-folders" {
|
||||
|
||||
module "project-audit" {
|
||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||
version = "3.2.0"
|
||||
version = "4.0.0"
|
||||
parent = module.shared-folder.id
|
||||
billing_account = var.billing_account_id
|
||||
prefix = var.prefix
|
||||
@@ -180,7 +180,7 @@ module "log-sink-audit" {
|
||||
|
||||
module "project-shared-resources" {
|
||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||
version = "3.2.0"
|
||||
version = "4.0.0"
|
||||
parent = module.shared-folder.id
|
||||
billing_account = var.billing_account_id
|
||||
prefix = var.prefix
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
module "project-tf" {
|
||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||
version = "3.2.0"
|
||||
version = "4.0.0"
|
||||
parent = var.root_node
|
||||
billing_account = var.billing_account_id
|
||||
prefix = var.prefix
|
||||
@@ -102,7 +102,7 @@ module "folders-top-level" {
|
||||
|
||||
module "project-audit" {
|
||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||
version = "3.2.0"
|
||||
version = "4.0.0"
|
||||
parent = var.root_node
|
||||
billing_account = var.billing_account_id
|
||||
prefix = var.prefix
|
||||
@@ -146,7 +146,7 @@ module "log-sink-audit" {
|
||||
|
||||
module "project-shared-resources" {
|
||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||
version = "3.2.0"
|
||||
version = "4.0.0"
|
||||
parent = var.root_node
|
||||
billing_account = var.billing_account_id
|
||||
prefix = var.prefix
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
module "project-svpc-host" {
|
||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||
version = "3.3.0"
|
||||
version = "4.0.0"
|
||||
parent = var.root_node
|
||||
prefix = var.prefix
|
||||
name = "vpc-host"
|
||||
@@ -33,7 +33,7 @@ module "project-svpc-host" {
|
||||
|
||||
module "project-service-gce" {
|
||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||
version = "3.3.0"
|
||||
version = "4.0.0"
|
||||
parent = var.root_node
|
||||
prefix = var.prefix
|
||||
name = "gce"
|
||||
@@ -47,7 +47,7 @@ module "project-service-gce" {
|
||||
|
||||
module "project-service-gke" {
|
||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||
version = "3.3.0"
|
||||
version = "4.0.0"
|
||||
parent = var.root_node
|
||||
prefix = var.prefix
|
||||
name = "gke"
|
||||
|
||||
@@ -30,6 +30,6 @@ def plan():
|
||||
tf = tftest.TerraformTest(tfdir, _BASEDIR,
|
||||
os.environ.get('TERRAFORM', 'terraform'))
|
||||
tf.setup(extra_files=['tests/{}/terraform.tfvars'.format(tfdir)])
|
||||
return tf.plan_out(parsed=True)
|
||||
return tf.plan(output=True)
|
||||
|
||||
return run_plan
|
||||
|
||||
@@ -21,8 +21,7 @@ import pytest
|
||||
def test_shared_folder(plan):
|
||||
"Shared folder resource attributes must match variables."
|
||||
root_node = plan.variables['root_node']
|
||||
resource = plan.modules['module.shared-folder'].get(
|
||||
'module.shared-folder.google_folder.folders[0]')
|
||||
resource = plan.modules['module.shared-folder'].resources['google_folder.folders[0]']
|
||||
assert resource['values']['parent'] == root_node
|
||||
assert resource['values']['display_name'] == 'shared'
|
||||
|
||||
|
||||
@@ -31,15 +31,16 @@ def test_project_resource(plan, project_modules):
|
||||
prefix = plan.variables['prefix']
|
||||
billing_account = plan.variables['billing_account_id']
|
||||
project_names = ['%s-%s' % (prefix, name) for name in names]
|
||||
for name, mod in project_modules.items():
|
||||
resource = mod['%s.google_project.project' % name]
|
||||
for mod in project_modules.values():
|
||||
resource = mod.resources['google_project.project']
|
||||
assert resource['values']['billing_account'] == billing_account
|
||||
assert resource['values']['name'] in project_names
|
||||
|
||||
|
||||
def test_project_services(plan, project_modules):
|
||||
"Project service resource must enable APIs specified in the variable."
|
||||
services = plan.variables['project_services']
|
||||
for name, mod in project_modules.items():
|
||||
resource = mod['%s.google_project_services.services[0]' % name]
|
||||
assert resource['values']['services'] == services
|
||||
num_services = len(plan.variables['project_services'])
|
||||
for mod in project_modules.values():
|
||||
project_services = [r for r in mod.child_modules['module.project_services'].resources if r.startswith(
|
||||
'google_project_service.project_services')]
|
||||
assert len(project_services) == num_services
|
||||
|
||||
@@ -27,9 +27,8 @@ def test_accounts(plan, mod):
|
||||
"One service account per environment should be created."
|
||||
environments = plan.variables['environments']
|
||||
prefix = plan.variables['prefix']
|
||||
resources = [v for k, v in mod.items() if '.google_service_account.' in k]
|
||||
resources = [
|
||||
v for k, v in mod.resources.items() if 'google_service_account.' in k]
|
||||
assert len(resources) == len(environments)
|
||||
assert sorted([res['values']['account_id'] for res in resources]) == sorted([
|
||||
'%s-%s' % (prefix, env) for env in environments])
|
||||
|
||||
|
||||
|
||||
@@ -30,14 +30,15 @@ def test_project_resource(plan, project_modules):
|
||||
root_node = plan.variables['root_node'].split('/')[1]
|
||||
billing_account = plan.variables['billing_account_id']
|
||||
for name, mod in project_modules.items():
|
||||
resource = mod['%s.google_project.project' % name]
|
||||
resource = mod.resources['google_project.project']
|
||||
assert resource['values']['folder_id'] == root_node
|
||||
assert resource['values']['billing_account'] == billing_account
|
||||
|
||||
|
||||
def test_project_services(plan, project_modules):
|
||||
"Project service resource must enable APIs specified in the variable."
|
||||
services = plan.variables['project_services']
|
||||
for name, mod in project_modules.items():
|
||||
resource = mod['%s.google_project_services.services[0]' % name]
|
||||
assert resource['values']['services'] == services
|
||||
num_services = len(plan.variables['project_services'])
|
||||
for mod in project_modules.values():
|
||||
project_services = [r for r in mod.child_modules['module.project_services'].resources if r.startswith(
|
||||
'google_project_service.project_services')]
|
||||
assert len(project_services) == num_services
|
||||
|
||||
@@ -27,7 +27,8 @@ def test_accounts(plan, mod):
|
||||
"One service account per environment should be created."
|
||||
environments = plan.variables['environments']
|
||||
prefix = plan.variables['prefix']
|
||||
resources = [v for k, v in mod.items() if '.google_service_account.' in k]
|
||||
resources = [
|
||||
v for k, v in mod.resources.items() if 'google_service_account.' in k]
|
||||
assert len(resources) == len(environments)
|
||||
assert sorted([res['values']['account_id'] for res in resources]) == sorted([
|
||||
'%s-%s' % (prefix, env) for env in environments])
|
||||
|
||||
@@ -26,14 +26,14 @@ def mod(plan):
|
||||
def test_host_vpc(plan):
|
||||
"Test that the vpc project is set as shared vpc host."
|
||||
mod = plan.modules['module.net-vpc-host']
|
||||
resources = [v['values'] for v in mod.values() if v['type'] ==
|
||||
resources = [v['values'] for v in mod.resources.values() if v['type'] ==
|
||||
'google_compute_shared_vpc_host_project']
|
||||
assert resources[0]['project'] == plan.outputs['host_project_id']
|
||||
|
||||
|
||||
def test_service_projects(plan, mod):
|
||||
"Test that service projects are registered with the shared vpc."
|
||||
resources = [v['values'] for v in mod.values() if v['type'] ==
|
||||
resources = [v['values'] for v in mod.resources.values() if v['type'] ==
|
||||
'google_compute_shared_vpc_service_project']
|
||||
assert len(resources) == 2
|
||||
assert set([r['host_project'] for r in resources]) == set(
|
||||
@@ -44,7 +44,7 @@ def test_service_projects(plan, mod):
|
||||
|
||||
def test_subnet_users(plan, mod):
|
||||
"Test that the network user role is assigned on subnets."
|
||||
resources = [v['values'] for v in mod.values() if v['type'] ==
|
||||
resources = [v['values'] for v in mod.resources.values() if v['type'] ==
|
||||
'google_compute_subnetwork_iam_binding']
|
||||
assert len(resources) == 2
|
||||
assert set([r['project'] for r in resources]) == set(
|
||||
@@ -54,7 +54,7 @@ def test_subnet_users(plan, mod):
|
||||
|
||||
def test_service_agent(plan, mod):
|
||||
"Test that the service agent role is assigned for gke only."
|
||||
resources = [v['values'] for v in mod.values() if v['type'] ==
|
||||
resources = [v['values'] for v in mod.resources.values() if v['type'] ==
|
||||
'google_project_iam_binding']
|
||||
assert resources[0] == {
|
||||
'project': plan.outputs['host_project_id'],
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
pytest>=4.3.1
|
||||
pytest-tldr>=0.2.1
|
||||
tftest>=0.6.4
|
||||
tftest>=1.0.0
|
||||
Reference in New Issue
Block a user