diff --git a/test/integration/targets/aws_lambda/files/mini_lambda.py b/test/integration/targets/aws_lambda/files/mini_lambda.py index 790225c28ad..b499888ed94 100644 --- a/test/integration/targets/aws_lambda/files/mini_lambda.py +++ b/test/integration/targets/aws_lambda/files/mini_lambda.py @@ -1,5 +1,6 @@ from __future__ import print_function import json +import os def handler(event, context): @@ -17,7 +18,16 @@ def handler(event, context): name = event["name"] - return {"message": "hello " + name} + # we can use environment variables as part of the configuration of the lambda + # which can change the behaviour of the lambda without needing a new upload + + extra = os.environ.get("EXTRA_MESSAGE") + if extra is not None and len(extra) > 0: + greeting = "hello {0}. {1}".format(name, extra) + else: + greeting = "hello " + name + + return {"message": greeting} def main(): diff --git a/test/integration/targets/aws_lambda/tasks/main.yml b/test/integration/targets/aws_lambda/tasks/main.yml index 204c9efe3e8..2fab6e9c383 100644 --- a/test/integration/targets/aws_lambda/tasks/main.yml +++ b/test/integration/targets/aws_lambda/tasks/main.yml @@ -185,12 +185,53 @@ dead_letter_arn: register: result - - name: assert lambda was updated as expected + - name: assert lambda remains as before assert: that: - 'not result|failed' - 'result.changed == False' + + + # ============================================================ + - name: test putting an environment variable changes lambda + lambda: + name: "{{lambda_function_name}}" + runtime: "python2.7" + handler: "mini_lambda.handler" + role: "ansible_lambda_role" + ec2_region: '{{ec2_region}}' + ec2_access_key: '{{ec2_access_key}}' + ec2_secret_key: '{{ec2_secret_key}}' + security_token: '{{security_token}}' + zip_file: "{{zip_res.dest}}" + environment_variables: + EXTRA_MESSAGE: "I think you are great!!" + register: result + + - name: assert lambda upload succeeded + assert: + that: + - 'not result|failed' + - 'result.changed == True' + + - name: test lambda works + execute_lambda: + name: "{{lambda_function_name}}" + payload: + name: "Mr Ansible Tests" + ec2_region: '{{ec2_region}}' + ec2_access_key: '{{ec2_access_key}}' + ec2_secret_key: '{{ec2_secret_key}}' + security_token: '{{security_token}}' + register: result + + - name: assert lambda manages to respond as expected + assert: + that: + - 'not result|failed' + - 'result.result.output.message == "hello Mr Ansible Tests. I think you are great!!"' + # ============================================================ - name: test state=present triggering a network exception due to bad url lambda: