summaryrefslogtreecommitdiffstats
path: root/ansible_collections/community/google/tests
diff options
context:
space:
mode:
Diffstat (limited to 'ansible_collections/community/google/tests')
-rw-r--r--ansible_collections/community/google/tests/sanity/ignore-2.10.txt22
-rw-r--r--ansible_collections/community/google/tests/sanity/ignore-2.11.txt22
-rw-r--r--ansible_collections/community/google/tests/sanity/ignore-2.9.txt11
-rw-r--r--ansible_collections/community/google/tests/unit/compat/__init__.py0
-rw-r--r--ansible_collections/community/google/tests/unit/compat/mock.py122
-rw-r--r--ansible_collections/community/google/tests/unit/compat/unittest.py38
-rw-r--r--ansible_collections/community/google/tests/unit/plugins/module_utils/__init__.py0
-rw-r--r--ansible_collections/community/google/tests/unit/plugins/module_utils/test_auth.py162
-rw-r--r--ansible_collections/community/google/tests/unit/plugins/module_utils/test_utils.py361
-rw-r--r--ansible_collections/community/google/tests/unit/plugins/modules/__init__.py0
-rw-r--r--ansible_collections/community/google/tests/unit/plugins/modules/test_gce_tag.py66
-rw-r--r--ansible_collections/community/google/tests/unit/requirements.txt1
12 files changed, 0 insertions, 805 deletions
diff --git a/ansible_collections/community/google/tests/sanity/ignore-2.10.txt b/ansible_collections/community/google/tests/sanity/ignore-2.10.txt
deleted file mode 100644
index c233efa5e..000000000
--- a/ansible_collections/community/google/tests/sanity/ignore-2.10.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-plugins/modules/gce_eip.py pylint:blacklisted-name
-plugins/modules/gce_eip.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_img.py pylint:blacklisted-name
-plugins/modules/gce_instance_template.py pylint:blacklisted-name
-plugins/modules/gce_instance_template.py validate-modules:doc-missing-type
-plugins/modules/gce_instance_template.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_labels.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_lb.py pylint:blacklisted-name
-plugins/modules/gce_lb.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_mig.py pylint:blacklisted-name
-plugins/modules/gce_mig.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_net.py pylint:blacklisted-name
-plugins/modules/gce_net.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_pd.py pylint:blacklisted-name
-plugins/modules/gce_pd.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_snapshot.py pylint:blacklisted-name
-plugins/modules/gce_snapshot.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_tag.py pylint:blacklisted-name
-plugins/modules/gce_tag.py validate-modules:parameter-list-no-elements
-plugins/modules/gcpubsub.py validate-modules:parameter-list-no-elements
-plugins/modules/gcpubsub_info.py validate-modules:parameter-state-invalid-choice
-scripts/inventory/gce.py pylint:blacklisted-name
diff --git a/ansible_collections/community/google/tests/sanity/ignore-2.11.txt b/ansible_collections/community/google/tests/sanity/ignore-2.11.txt
deleted file mode 100644
index c233efa5e..000000000
--- a/ansible_collections/community/google/tests/sanity/ignore-2.11.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-plugins/modules/gce_eip.py pylint:blacklisted-name
-plugins/modules/gce_eip.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_img.py pylint:blacklisted-name
-plugins/modules/gce_instance_template.py pylint:blacklisted-name
-plugins/modules/gce_instance_template.py validate-modules:doc-missing-type
-plugins/modules/gce_instance_template.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_labels.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_lb.py pylint:blacklisted-name
-plugins/modules/gce_lb.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_mig.py pylint:blacklisted-name
-plugins/modules/gce_mig.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_net.py pylint:blacklisted-name
-plugins/modules/gce_net.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_pd.py pylint:blacklisted-name
-plugins/modules/gce_pd.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_snapshot.py pylint:blacklisted-name
-plugins/modules/gce_snapshot.py validate-modules:parameter-list-no-elements
-plugins/modules/gce_tag.py pylint:blacklisted-name
-plugins/modules/gce_tag.py validate-modules:parameter-list-no-elements
-plugins/modules/gcpubsub.py validate-modules:parameter-list-no-elements
-plugins/modules/gcpubsub_info.py validate-modules:parameter-state-invalid-choice
-scripts/inventory/gce.py pylint:blacklisted-name
diff --git a/ansible_collections/community/google/tests/sanity/ignore-2.9.txt b/ansible_collections/community/google/tests/sanity/ignore-2.9.txt
deleted file mode 100644
index f2dffaa46..000000000
--- a/ansible_collections/community/google/tests/sanity/ignore-2.9.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-plugins/modules/gce_eip.py pylint:blacklisted-name
-plugins/modules/gce_img.py pylint:blacklisted-name
-plugins/modules/gce_instance_template.py pylint:blacklisted-name
-plugins/modules/gce_instance_template.py validate-modules:doc-missing-type
-plugins/modules/gce_lb.py pylint:blacklisted-name
-plugins/modules/gce_mig.py pylint:blacklisted-name
-plugins/modules/gce_net.py pylint:blacklisted-name
-plugins/modules/gce_pd.py pylint:blacklisted-name
-plugins/modules/gce_snapshot.py pylint:blacklisted-name
-plugins/modules/gce_tag.py pylint:blacklisted-name
-scripts/inventory/gce.py pylint:blacklisted-name
diff --git a/ansible_collections/community/google/tests/unit/compat/__init__.py b/ansible_collections/community/google/tests/unit/compat/__init__.py
deleted file mode 100644
index e69de29bb..000000000
--- a/ansible_collections/community/google/tests/unit/compat/__init__.py
+++ /dev/null
diff --git a/ansible_collections/community/google/tests/unit/compat/mock.py b/ansible_collections/community/google/tests/unit/compat/mock.py
deleted file mode 100644
index 0972cd2e8..000000000
--- a/ansible_collections/community/google/tests/unit/compat/mock.py
+++ /dev/null
@@ -1,122 +0,0 @@
-# (c) 2014, Toshio Kuratomi <tkuratomi@ansible.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-'''
-Compat module for Python3.x's unittest.mock module
-'''
-import sys
-
-# Python 2.7
-
-# Note: Could use the pypi mock library on python3.x as well as python2.x. It
-# is the same as the python3 stdlib mock library
-
-try:
- # Allow wildcard import because we really do want to import all of mock's
- # symbols into this compat shim
- # pylint: disable=wildcard-import,unused-wildcard-import
- from unittest.mock import *
-except ImportError:
- # Python 2
- # pylint: disable=wildcard-import,unused-wildcard-import
- try:
- from mock import *
- except ImportError:
- print('You need the mock library installed on python2.x to run tests')
-
-
-# Prior to 3.4.4, mock_open cannot handle binary read_data
-if sys.version_info >= (3,) and sys.version_info < (3, 4, 4):
- file_spec = None
-
- def _iterate_read_data(read_data):
- # Helper for mock_open:
- # Retrieve lines from read_data via a generator so that separate calls to
- # readline, read, and readlines are properly interleaved
- sep = b'\n' if isinstance(read_data, bytes) else '\n'
- data_as_list = [l + sep for l in read_data.split(sep)]
-
- if data_as_list[-1] == sep:
- # If the last line ended in a newline, the list comprehension will have an
- # extra entry that's just a newline. Remove this.
- data_as_list = data_as_list[:-1]
- else:
- # If there wasn't an extra newline by itself, then the file being
- # emulated doesn't have a newline to end the last line remove the
- # newline that our naive format() added
- data_as_list[-1] = data_as_list[-1][:-1]
-
- for line in data_as_list:
- yield line
-
- def mock_open(mock=None, read_data=''):
- """
- A helper function to create a mock to replace the use of `open`. It works
- for `open` called directly or used as a context manager.
-
- The `mock` argument is the mock object to configure. If `None` (the
- default) then a `MagicMock` will be created for you, with the API limited
- to methods or attributes available on standard file handles.
-
- `read_data` is a string for the `read` methoddline`, and `readlines` of the
- file handle to return. This is an empty string by default.
- """
- def _readlines_side_effect(*args, **kwargs):
- if handle.readlines.return_value is not None:
- return handle.readlines.return_value
- return list(_data)
-
- def _read_side_effect(*args, **kwargs):
- if handle.read.return_value is not None:
- return handle.read.return_value
- return type(read_data)().join(_data)
-
- def _readline_side_effect():
- if handle.readline.return_value is not None:
- while True:
- yield handle.readline.return_value
- for line in _data:
- yield line
-
- global file_spec
- if file_spec is None:
- import _io
- file_spec = list(set(dir(_io.TextIOWrapper)).union(set(dir(_io.BytesIO))))
-
- if mock is None:
- mock = MagicMock(name='open', spec=open)
-
- handle = MagicMock(spec=file_spec)
- handle.__enter__.return_value = handle
-
- _data = _iterate_read_data(read_data)
-
- handle.write.return_value = None
- handle.read.return_value = None
- handle.readline.return_value = None
- handle.readlines.return_value = None
-
- handle.read.side_effect = _read_side_effect
- handle.readline.side_effect = _readline_side_effect()
- handle.readlines.side_effect = _readlines_side_effect
-
- mock.return_value = handle
- return mock
diff --git a/ansible_collections/community/google/tests/unit/compat/unittest.py b/ansible_collections/community/google/tests/unit/compat/unittest.py
deleted file mode 100644
index 98f08ad6a..000000000
--- a/ansible_collections/community/google/tests/unit/compat/unittest.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# (c) 2014, Toshio Kuratomi <tkuratomi@ansible.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-'''
-Compat module for Python2.7's unittest module
-'''
-
-import sys
-
-# Allow wildcard import because we really do want to import all of
-# unittests's symbols into this compat shim
-# pylint: disable=wildcard-import,unused-wildcard-import
-if sys.version_info < (2, 7):
- try:
- # Need unittest2 on python2.6
- from unittest2 import *
- except ImportError:
- print('You need unittest2 installed on python2.6.x to run tests')
-else:
- from unittest import *
diff --git a/ansible_collections/community/google/tests/unit/plugins/module_utils/__init__.py b/ansible_collections/community/google/tests/unit/plugins/module_utils/__init__.py
deleted file mode 100644
index e69de29bb..000000000
--- a/ansible_collections/community/google/tests/unit/plugins/module_utils/__init__.py
+++ /dev/null
diff --git a/ansible_collections/community/google/tests/unit/plugins/module_utils/test_auth.py b/ansible_collections/community/google/tests/unit/plugins/module_utils/test_auth.py
deleted file mode 100644
index 845234ff7..000000000
--- a/ansible_collections/community/google/tests/unit/plugins/module_utils/test_auth.py
+++ /dev/null
@@ -1,162 +0,0 @@
-# -*- coding: utf-8 -*-
-# (c) 2016, Tom Melendez (@supertom) <tom@supertom.com>
-#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-
-import pytest
-
-from ansible_collections.community.google.tests.unit.compat import mock, unittest
-from ansible_collections.community.google.plugins.module_utils.gcp import (_get_gcp_ansible_credentials, _get_gcp_credentials, _get_gcp_environ_var,
- _get_gcp_environment_credentials,
- _validate_credentials_file)
-
-# Fake data/function used for testing
-fake_env_data = {'GCE_EMAIL': 'gce-email'}
-
-
-def fake_get_gcp_environ_var(var_name, default_value):
- if var_name not in fake_env_data:
- return default_value
- else:
- return fake_env_data[var_name]
-
-# Fake AnsibleModule for use in tests
-
-
-class FakeModule(object):
- class Params():
- data = {}
-
- def get(self, key, alt=None):
- if key in self.data:
- return self.data[key]
- else:
- return alt
-
- def __init__(self, data=None):
- data = {} if data is None else data
-
- self.params = FakeModule.Params()
- self.params.data = data
-
- def fail_json(self, **kwargs):
- raise ValueError("fail_json")
-
- def deprecate(self, **kwargs):
- return None
-
-
-class GCPAuthTestCase(unittest.TestCase):
- """Tests to verify different Auth mechanisms."""
-
- def setup_method(self, method):
- global fake_env_data
- fake_env_data = {'GCE_EMAIL': 'gce-email'}
-
- def test_get_gcp_ansible_credentials(self):
- input_data = {'service_account_email': 'mysa',
- 'credentials_file': 'path-to-file.json',
- 'project_id': 'my-cool-project'}
-
- module = FakeModule(input_data)
- actual = _get_gcp_ansible_credentials(module)
- expected = tuple(input_data.values())
- self.assertEqual(sorted(expected), sorted(actual))
-
- def test_get_gcp_environ_var(self):
- # Chose not to mock this so we could really verify that it
- # works as expected.
- existing_var_name = 'gcp_ansible_auth_test_54321'
- non_existing_var_name = 'doesnt_exist_gcp_ansible_auth_test_12345'
- os.environ[existing_var_name] = 'foobar'
- self.assertEqual('foobar', _get_gcp_environ_var(
- existing_var_name, None))
- del os.environ[existing_var_name]
- self.assertEqual('default_value', _get_gcp_environ_var(
- non_existing_var_name, 'default_value'))
-
- def test_validate_credentials_file(self):
- # TODO(supertom): Only dealing with p12 here, check the other states
- # of this function
- module = FakeModule()
- with mock.patch('ansible_collections.community.google.plugins.module_utils.gcp.open',
- mock.mock_open(read_data='foobar'), create=True):
- # pem condition, warning is suppressed with the return_value
- credentials_file = '/foopath/pem.pem'
- with self.assertRaises(ValueError):
- _validate_credentials_file(module,
- credentials_file=credentials_file,
- require_valid_json=False,
- check_libcloud=False)
-
- @mock.patch('ansible_collections.community.google.plugins.module_utils.gcp._get_gcp_environ_var',
- side_effect=fake_get_gcp_environ_var)
- def test_get_gcp_environment_credentials(self, mockobj):
- global fake_env_data
-
- actual = _get_gcp_environment_credentials(None, None, None)
- expected = tuple(['gce-email', None, None])
- self.assertEqual(expected, actual)
-
- fake_env_data = {'GCE_PEM_FILE_PATH': '/path/to/pem.pem'}
- expected = tuple([None, '/path/to/pem.pem', None])
- actual = _get_gcp_environment_credentials(None, None, None)
- self.assertEqual(expected, actual)
-
- # pem and creds are set, expect creds
- fake_env_data = {'GCE_PEM_FILE_PATH': '/path/to/pem.pem',
- 'GCE_CREDENTIALS_FILE_PATH': '/path/to/creds.json'}
- expected = tuple([None, '/path/to/creds.json', None])
- actual = _get_gcp_environment_credentials(None, None, None)
- self.assertEqual(expected, actual)
-
- # expect GOOGLE_APPLICATION_CREDENTIALS over PEM
- fake_env_data = {'GCE_PEM_FILE_PATH': '/path/to/pem.pem',
- 'GOOGLE_APPLICATION_CREDENTIALS': '/path/to/appcreds.json'}
- expected = tuple([None, '/path/to/appcreds.json', None])
- actual = _get_gcp_environment_credentials(None, None, None)
- self.assertEqual(expected, actual)
-
- # project tests
- fake_env_data = {'GCE_PROJECT': 'my-project'}
- expected = tuple([None, None, 'my-project'])
- actual = _get_gcp_environment_credentials(None, None, None)
- self.assertEqual(expected, actual)
-
- fake_env_data = {'GOOGLE_CLOUD_PROJECT': 'my-cloud-project'}
- expected = tuple([None, None, 'my-cloud-project'])
- actual = _get_gcp_environment_credentials(None, None, None)
- self.assertEqual(expected, actual)
-
- # data passed in, picking up project id only
- fake_env_data = {'GOOGLE_CLOUD_PROJECT': 'my-project'}
- expected = tuple(['my-sa-email', '/path/to/creds.json', 'my-project'])
- actual = _get_gcp_environment_credentials(
- 'my-sa-email', '/path/to/creds.json', None)
- self.assertEqual(expected, actual)
-
- @mock.patch('ansible_collections.community.google.plugins.module_utils.gcp._get_gcp_environ_var',
- side_effect=fake_get_gcp_environ_var)
- def test_get_gcp_credentials(self, mockobj):
- global fake_env_data
-
- fake_env_data = {}
- module = FakeModule()
- module.params.data = {}
- # Nothing is set, calls fail_json
- with pytest.raises(ValueError):
- _get_gcp_credentials(module)
-
- # project_id (only) is set from Ansible params.
- module.params.data['project_id'] = 'my-project'
- actual = _get_gcp_credentials(
- module, require_valid_json=True, check_libcloud=False)
- expected = {'service_account_email': '',
- 'project_id': 'my-project',
- 'credentials_file': ''}
- self.assertEqual(expected, actual)
diff --git a/ansible_collections/community/google/tests/unit/plugins/module_utils/test_utils.py b/ansible_collections/community/google/tests/unit/plugins/module_utils/test_utils.py
deleted file mode 100644
index 7098f705d..000000000
--- a/ansible_collections/community/google/tests/unit/plugins/module_utils/test_utils.py
+++ /dev/null
@@ -1,361 +0,0 @@
-# -*- coding: utf-8 -*-
-# (c) 2016, Tom Melendez <tom@supertom.com>
-#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from ansible_collections.community.google.tests.unit.compat import mock, unittest
-from ansible_collections.community.google.plugins.module_utils.gcp import check_min_pkg_version, GCPUtils, GCPInvalidURLError
-
-
-def build_distribution(version):
- obj = mock.MagicMock()
- obj.version = '0.5.0'
- return obj
-
-
-class GCPUtilsTestCase(unittest.TestCase):
- params_dict = {
- 'url_map_name': 'foo_url_map_name',
- 'description': 'foo_url_map description',
- 'host_rules': [
- {
- 'description': 'host rules description',
- 'hosts': [
- 'www.example.com',
- 'www2.example.com'
- ],
- 'path_matcher': 'host_rules_path_matcher'
- }
- ],
- 'path_matchers': [
- {
- 'name': 'path_matcher_one',
- 'description': 'path matcher one',
- 'defaultService': 'bes-pathmatcher-one-default',
- 'pathRules': [
- {
- 'service': 'my-one-bes',
- 'paths': [
- '/',
- '/aboutus'
- ]
- }
- ]
- },
- {
- 'name': 'path_matcher_two',
- 'description': 'path matcher two',
- 'defaultService': 'bes-pathmatcher-two-default',
- 'pathRules': [
- {
- 'service': 'my-two-bes',
- 'paths': [
- '/webapp',
- '/graphs'
- ]
- }
- ]
- }
- ]
- }
-
- @mock.patch("pkg_resources.get_distribution", side_effect=build_distribution)
- def test_check_minimum_pkg_version(self, mockobj):
- self.assertTrue(check_min_pkg_version('foobar', '0.4.0'))
- self.assertTrue(check_min_pkg_version('foobar', '0.5.0'))
- self.assertFalse(check_min_pkg_version('foobar', '0.6.0'))
-
- def test_parse_gcp_url(self):
- # region, resource, entity, method
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers/my-mig/recreateInstances'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertEqual('us-east1', actual['region'])
- self.assertEqual('instanceGroupManagers', actual['resource_name'])
- self.assertEqual('my-mig', actual['entity_name'])
- self.assertEqual('recreateInstances', actual['method_name'])
-
- # zone, resource, entity, method
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/zones/us-east1-c/instanceGroupManagers/my-mig/recreateInstances'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertEqual('us-east1-c', actual['zone'])
- self.assertEqual('instanceGroupManagers', actual['resource_name'])
- self.assertEqual('my-mig', actual['entity_name'])
- self.assertEqual('recreateInstances', actual['method_name'])
-
- # global, resource
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/global/urlMaps'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertTrue('global' in actual)
- self.assertTrue(actual['global'])
- self.assertEqual('urlMaps', actual['resource_name'])
-
- # global, resource, entity
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/global/urlMaps/my-url-map'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('myproject', actual['project'])
- self.assertTrue('global' in actual)
- self.assertTrue(actual['global'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('compute', actual['service'])
-
- # global URL, resource, entity, method_name
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/mybackendservice/getHealth'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertTrue('global' in actual)
- self.assertTrue(actual['global'])
- self.assertEqual('backendServices', actual['resource_name'])
- self.assertEqual('mybackendservice', actual['entity_name'])
- self.assertEqual('getHealth', actual['method_name'])
-
- # no location in URL
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/targetHttpProxies/mytargetproxy/setUrlMap'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertFalse('global' in actual)
- self.assertEqual('targetHttpProxies', actual['resource_name'])
- self.assertEqual('mytargetproxy', actual['entity_name'])
- self.assertEqual('setUrlMap', actual['method_name'])
-
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/targetHttpProxies/mytargetproxy'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertFalse('global' in actual)
- self.assertEqual('targetHttpProxies', actual['resource_name'])
- self.assertEqual('mytargetproxy', actual['entity_name'])
-
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/targetHttpProxies'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertFalse('global' in actual)
- self.assertEqual('targetHttpProxies', actual['resource_name'])
-
- # test exceptions
- no_projects_input_url = 'https://www.googleapis.com/compute/v1/not-projects/myproject/global/backendServices/mybackendservice/getHealth'
- no_resource_input_url = 'https://www.googleapis.com/compute/v1/not-projects/myproject/global'
-
- no_resource_no_loc_input_url = 'https://www.googleapis.com/compute/v1/not-projects/myproject'
-
- with self.assertRaises(GCPInvalidURLError) as cm:
- GCPUtils.parse_gcp_url(no_projects_input_url)
- self.assertTrue(cm.exception, GCPInvalidURLError)
-
- with self.assertRaises(GCPInvalidURLError) as cm:
- GCPUtils.parse_gcp_url(no_resource_input_url)
- self.assertTrue(cm.exception, GCPInvalidURLError)
-
- with self.assertRaises(GCPInvalidURLError) as cm:
- GCPUtils.parse_gcp_url(no_resource_no_loc_input_url)
- self.assertTrue(cm.exception, GCPInvalidURLError)
-
- def test_params_to_gcp_dict(self):
-
- expected = {
- 'description': 'foo_url_map description',
- 'hostRules': [
- {
- 'description': 'host rules description',
- 'hosts': [
- 'www.example.com',
- 'www2.example.com'
- ],
- 'pathMatcher': 'host_rules_path_matcher'
- }
- ],
- 'name': 'foo_url_map_name',
- 'pathMatchers': [
- {
- 'defaultService': 'bes-pathmatcher-one-default',
- 'description': 'path matcher one',
- 'name': 'path_matcher_one',
- 'pathRules': [
- {
- 'paths': [
- '/',
- '/aboutus'
- ],
- 'service': 'my-one-bes'
- }
- ]
- },
- {
- 'defaultService': 'bes-pathmatcher-two-default',
- 'description': 'path matcher two',
- 'name': 'path_matcher_two',
- 'pathRules': [
- {
- 'paths': [
- '/webapp',
- '/graphs'
- ],
- 'service': 'my-two-bes'
- }
- ]
- }
- ]
- }
-
- actual = GCPUtils.params_to_gcp_dict(self.params_dict, 'url_map_name')
- self.assertEqual(expected, actual)
-
- def test_get_gcp_resource_from_methodId(self):
- input_data = 'compute.urlMaps.list'
- actual = GCPUtils.get_gcp_resource_from_methodId(input_data)
- self.assertEqual('urlMaps', actual)
- input_data = None
- actual = GCPUtils.get_gcp_resource_from_methodId(input_data)
- self.assertFalse(actual)
- input_data = 666
- actual = GCPUtils.get_gcp_resource_from_methodId(input_data)
- self.assertFalse(actual)
-
- def test_get_entity_name_from_resource_name(self):
- input_data = 'urlMaps'
- actual = GCPUtils.get_entity_name_from_resource_name(input_data)
- self.assertEqual('urlMap', actual)
- input_data = 'targetHttpProxies'
- actual = GCPUtils.get_entity_name_from_resource_name(input_data)
- self.assertEqual('targetHttpProxy', actual)
- input_data = 'globalForwardingRules'
- actual = GCPUtils.get_entity_name_from_resource_name(input_data)
- self.assertEqual('forwardingRule', actual)
- input_data = ''
- actual = GCPUtils.get_entity_name_from_resource_name(input_data)
- self.assertEqual(None, actual)
- input_data = 666
- actual = GCPUtils.get_entity_name_from_resource_name(input_data)
- self.assertEqual(None, actual)
-
- def test_are_params_equal(self):
- params1 = {'one': 1}
- params2 = {'one': 1}
- actual = GCPUtils.are_params_equal(params1, params2)
- self.assertTrue(actual)
-
- params1 = {'one': 1}
- params2 = {'two': 2}
- actual = GCPUtils.are_params_equal(params1, params2)
- self.assertFalse(actual)
-
- params1 = {'three': 3, 'two': 2, 'one': 1}
- params2 = {'one': 1, 'two': 2, 'three': 3}
- actual = GCPUtils.are_params_equal(params1, params2)
- self.assertTrue(actual)
-
- params1 = {
- "creationTimestamp": "2017-04-21T11:19:20.718-07:00",
- "defaultService": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/default-backend-service",
- "description": "",
- "fingerprint": "ickr_pwlZPU=",
- "hostRules": [
- {
- "description": "",
- "hosts": [
- "*."
- ],
- "pathMatcher": "path-matcher-one"
- }
- ],
- "id": "8566395781175047111",
- "kind": "compute#urlMap",
- "name": "newtesturlmap-foo",
- "pathMatchers": [
- {
- "defaultService": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/bes-pathmatcher-one-default",
- "description": "path matcher one",
- "name": "path-matcher-one",
- "pathRules": [
- {
- "paths": [
- "/data",
- "/aboutus"
- ],
- "service": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/my-one-bes"
- }
- ]
- }
- ],
- "selfLink": "https://www.googleapis.com/compute/v1/projects/myproject/global/urlMaps/newtesturlmap-foo"
- }
- params2 = {
- "defaultService": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/default-backend-service",
- "hostRules": [
- {
- "description": "",
- "hosts": [
- "*."
- ],
- "pathMatcher": "path-matcher-one"
- }
- ],
- "name": "newtesturlmap-foo",
- "pathMatchers": [
- {
- "defaultService": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/bes-pathmatcher-one-default",
- "description": "path matcher one",
- "name": "path-matcher-one",
- "pathRules": [
- {
- "paths": [
- "/data",
- "/aboutus"
- ],
- "service": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/my-one-bes"
- }
- ]
- }
- ],
- }
-
- # params1 has exclude fields, params2 doesn't. Should be equal
- actual = GCPUtils.are_params_equal(params1, params2)
- self.assertTrue(actual)
-
- def test_filter_gcp_fields(self):
- input_data = {
- u'kind': u'compute#httpsHealthCheck',
- u'description': u'',
- u'timeoutSec': 5,
- u'checkIntervalSec': 5,
- u'port': 443,
- u'healthyThreshold': 2,
- u'host': u'',
- u'requestPath': u'/',
- u'unhealthyThreshold': 2,
- u'creationTimestamp': u'2017-05-16T15:09:36.546-07:00',
- u'id': u'8727093129334146639',
- u'selfLink': u'https://www.googleapis.com/compute/v1/projects/myproject/global/httpsHealthChecks/myhealthcheck',
- u'name': u'myhealthcheck'}
-
- expected = {
- 'name': 'myhealthcheck',
- 'checkIntervalSec': 5,
- 'port': 443,
- 'unhealthyThreshold': 2,
- 'healthyThreshold': 2,
- 'host': '',
- 'timeoutSec': 5,
- 'requestPath': '/'}
-
- actual = GCPUtils.filter_gcp_fields(input_data)
- self.assertEqual(expected, actual)
diff --git a/ansible_collections/community/google/tests/unit/plugins/modules/__init__.py b/ansible_collections/community/google/tests/unit/plugins/modules/__init__.py
deleted file mode 100644
index e69de29bb..000000000
--- a/ansible_collections/community/google/tests/unit/plugins/modules/__init__.py
+++ /dev/null
diff --git a/ansible_collections/community/google/tests/unit/plugins/modules/test_gce_tag.py b/ansible_collections/community/google/tests/unit/plugins/modules/test_gce_tag.py
deleted file mode 100644
index 3a06f18d2..000000000
--- a/ansible_collections/community/google/tests/unit/plugins/modules/test_gce_tag.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import unittest
-
-from ansible_collections.community.google.plugins.modules.gce_tag import _get_changed_items, _intersect_items, _union_items
-
-
-class TestGCETag(unittest.TestCase):
- """Unit tests for gce_tag module."""
-
- def test_union_items(self):
- """
- Combine items in both lists
- removing duplicates.
- """
- listA = [1, 2, 3, 4, 5, 8, 9]
- listB = [1, 2, 3, 4, 5, 6, 7]
- want = [1, 2, 3, 4, 5, 6, 7, 8, 9]
- got = _union_items(listA, listB)
- self.assertEqual(want, got)
-
- def test_intersect_items(self):
- """
- All unique items from either list.
- """
- listA = [1, 2, 3, 4, 5, 8, 9]
- listB = [1, 2, 3, 4, 5, 6, 7]
- want = [1, 2, 3, 4, 5]
- got = _intersect_items(listA, listB)
- self.assertEqual(want, got)
-
- # tags removed
- new_tags = ['one', 'two']
- existing_tags = ['two']
- want = ['two'] # only remove the tag that was present
- got = _intersect_items(existing_tags, new_tags)
- self.assertEqual(want, got)
-
- def test_get_changed_items(self):
- """
- All the items from left list that don't match
- any item from the right list.
- """
- listA = [1, 2, 3, 4, 5, 8, 9]
- listB = [1, 2, 3, 4, 5, 6, 7]
- want = [8, 9]
- got = _get_changed_items(listA, listB)
- self.assertEqual(want, got)
-
- # simulate new tags added
- tags_to_add = ['one', 'two']
- existing_tags = ['two']
- want = ['one']
- got = _get_changed_items(tags_to_add, existing_tags)
- self.assertEqual(want, got)
-
- # simulate removing tags
- # specifying one tag on right that doesn't exist
- tags_to_remove = ['one', 'two']
- existing_tags = ['two', 'three']
- want = ['three']
- got = _get_changed_items(existing_tags, tags_to_remove)
- self.assertEqual(want, got)
diff --git a/ansible_collections/community/google/tests/unit/requirements.txt b/ansible_collections/community/google/tests/unit/requirements.txt
deleted file mode 100644
index 16494a447..000000000
--- a/ansible_collections/community/google/tests/unit/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-unittest2 ; python_version < '2.7' \ No newline at end of file