summaryrefslogtreecommitdiff
path: root/test/units/modules/cloud/amazon/test_lambda_policy.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/units/modules/cloud/amazon/test_lambda_policy.py')
-rw-r--r--test/units/modules/cloud/amazon/test_lambda_policy.py155
1 files changed, 0 insertions, 155 deletions
diff --git a/test/units/modules/cloud/amazon/test_lambda_policy.py b/test/units/modules/cloud/amazon/test_lambda_policy.py
deleted file mode 100644
index 5c32370469..0000000000
--- a/test/units/modules/cloud/amazon/test_lambda_policy.py
+++ /dev/null
@@ -1,155 +0,0 @@
-#
-# (c) 2017 Michael De La Rue
-#
-# This file is part of Ansible
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import copy
-
-import pytest
-
-from ansible.module_utils.aws.core import HAS_BOTO3
-from units.compat.mock import MagicMock
-from units.modules.utils import set_module_args
-
-if not HAS_BOTO3:
- pytestmark = pytest.mark.skip("test_api_gateway.py requires the `boto3` and `botocore` modules")
-
-# these are here cause ... boto!
-from ansible.modules.cloud.amazon import lambda_policy
-from ansible.modules.cloud.amazon.lambda_policy import setup_module_object
-try:
- from botocore.exceptions import ClientError
-except ImportError:
- pass
-
-
-base_module_args = {
- "region": "us-west-1",
- "function_name": "this_is_a_test_function",
- "state": "present",
- "statement_id": "test-allow-lambda",
- "principal": 123456,
- "action": "lambda:*"
-}
-
-
-def test_module_is_created_sensibly():
- set_module_args(base_module_args)
- module = setup_module_object()
- assert module.params['function_name'] == 'this_is_a_test_function'
-
-
-module_double = MagicMock()
-module_double.fail_json_aws.side_effect = Exception("unexpected call to fail_json_aws")
-module_double.check_mode = False
-
-fake_module_params_present = {
- "state": "present",
- "statement_id": "test-allow-lambda",
- "principal": "apigateway.amazonaws.com",
- "action": "lambda:InvokeFunction",
- "source_arn": u'arn:aws:execute-api:us-east-1:123456789:efghijklmn/authorizers/*',
- "version": 0,
- "alias": None
-}
-fake_module_params_different = copy.deepcopy(fake_module_params_present)
-fake_module_params_different["action"] = "lambda:api-gateway"
-fake_module_params_absent = copy.deepcopy(fake_module_params_present)
-fake_module_params_absent["state"] = "absent"
-
-fake_policy_return = {
- u'Policy': (
- u'{"Version":"2012-10-17","Id":"default","Statement":[{"Sid":"1234567890abcdef1234567890abcdef",'
- u'"Effect":"Allow","Principal":{"Service":"apigateway.amazonaws.com"},"Action":"lambda:InvokeFunction",'
- u'"Resource":"arn:aws:lambda:us-east-1:123456789:function:test_authorizer",'
- u'"Condition":{"ArnLike":{"AWS:SourceArn":"arn:aws:execute-api:us-east-1:123456789:abcdefghij/authorizers/1a2b3c"}}},'
- u'{"Sid":"2234567890abcdef1234567890abcdef","Effect":"Allow","Principal":{"Service":"apigateway.amazonaws.com"},'
- u'"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789:function:test_authorizer",'
- u'"Condition":{"ArnLike":{"AWS:SourceArn":"arn:aws:execute-api:us-east-1:123456789:klmnopqrst/authorizers/4d5f6g"}}},'
- u'{"Sid":"1234567890abcdef1234567890abcdef","Effect":"Allow","Principal":{"Service":"apigateway.amazonaws.com"},'
- u'"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789:function:test_authorizer",'
- u'"Condition":{"ArnLike":{"AWS:SourceArn":"arn:aws:execute-api:eu-west-1:123456789:uvwxyzabcd/authorizers/7h8i9j"}}},'
- u'{"Sid":"test-allow-lambda","Effect":"Allow","Principal":{"Service":"apigateway.amazonaws.com"},'
- u'"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789:function:test_authorizer",'
- u'"Condition":{"ArnLike":{"AWS:SourceArn":"arn:aws:execute-api:us-east-1:123456789:efghijklmn/authorizers/*"}}},'
- u'{"Sid":"1234567890abcdef1234567890abcdef","Effect":"Allow","Principal":{"Service":"apigateway.amazonaws.com"},'
- u'"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789:function:test_authorizer",'
- u'"Condition":{"ArnLike":{"AWS:SourceArn":"arn:aws:execute-api:us-east-1:123456789:opqrstuvwx/authorizers/0k1l2m"}}}]}'),
- 'ResponseMetadata': {
- 'RetryAttempts': 0,
- 'HTTPStatusCode': 200,
- 'RequestId': 'abcdefgi-1234-a567-b890-123456789abc',
- 'HTTPHeaders': {
- 'date': 'Sun, 13 Aug 2017 10:54:17 GMT',
- 'x-amzn-requestid': 'abcdefgi-1234-a567-b890-123456789abc',
- 'content-length': '1878',
- 'content-type': 'application/json',
- 'connection': 'keep-alive'}}}
-
-error_response = {'Error': {'Code': 'ResourceNotFoundException', 'Message': 'Fake Testing Error'}}
-operation_name = 'FakeOperation'
-
-
-def test_manage_state_adds_missing_permissions():
- lambda_client_double = MagicMock()
- # Policy actually: not present Requested State: present Should: create
- lambda_client_double.get_policy.side_effect = ClientError(error_response, operation_name)
- fake_module_params = copy.deepcopy(fake_module_params_present)
- module_double.params = fake_module_params
- lambda_policy.manage_state(module_double, lambda_client_double)
- assert lambda_client_double.get_policy.call_count > 0
- assert lambda_client_double.add_permission.call_count > 0
- lambda_client_double.remove_permission.assert_not_called()
-
-
-def test_manage_state_leaves_existing_permissions():
- lambda_client_double = MagicMock()
- # Policy actually: present Requested State: present Should: do nothing
- lambda_client_double.get_policy.return_value = fake_policy_return
- fake_module_params = copy.deepcopy(fake_module_params_present)
- module_double.params = fake_module_params
- lambda_policy.manage_state(module_double, lambda_client_double)
- assert lambda_client_double.get_policy.call_count > 0
- lambda_client_double.add_permission.assert_not_called()
- lambda_client_double.remove_permission.assert_not_called()
-
-
-def test_manage_state_updates_nonmatching_permissions():
- lambda_client_double = MagicMock()
- # Policy actually: present Requested State: present Should: do nothing
- lambda_client_double.get_policy.return_value = fake_policy_return
- fake_module_params = copy.deepcopy(fake_module_params_different)
- module_double.params = fake_module_params
- lambda_policy.manage_state(module_double, lambda_client_double)
- assert lambda_client_double.get_policy.call_count > 0
- assert lambda_client_double.add_permission.call_count > 0
- assert lambda_client_double.remove_permission.call_count > 0
-
-
-def test_manage_state_removes_unwanted_permissions():
- lambda_client_double = MagicMock()
- # Policy actually: present Requested State: not present Should: remove
- lambda_client_double.get_policy.return_value = fake_policy_return
- fake_module_params = copy.deepcopy(fake_module_params_absent)
- module_double.params = fake_module_params
- lambda_policy.manage_state(module_double, lambda_client_double)
- assert lambda_client_double.get_policy.call_count > 0
- lambda_client_double.add_permission.assert_not_called()
- assert lambda_client_double.remove_permission.call_count > 0
-
-
-def test_manage_state_leaves_already_removed_permissions():
- lambda_client_double = MagicMock()
- # Policy actually: absent Requested State: absent Should: do nothing
- lambda_client_double.get_policy.side_effect = ClientError(error_response, operation_name)
- fake_module_params = copy.deepcopy(fake_module_params_absent)
- module_double.params = fake_module_params
- lambda_policy.manage_state(module_double, lambda_client_double)
- assert lambda_client_double.get_policy.call_count > 0
- lambda_client_double.add_permission.assert_not_called()
- lambda_client_double.remove_permission.assert_not_called()