- block: # ============================================================ - name: test with no parameters aws_api_gateway: register: result ignore_errors: true - name: assert failure when called with no parameters assert: that: - 'result.failed' - 'result.msg.startswith("The aws_api_gateway module requires a region")' # ============================================================ - name: test with minimal parameters but no region aws_api_gateway: api_id: 'fake-api-doesnt-exist' register: result ignore_errors: true - name: assert failure when called with with minimal parameters but no region assert: that: - 'result.failed' - 'result.msg.startswith("The aws_api_gateway module requires a region")' # ============================================================ - name: test disallow multiple swagger sources aws_api_gateway: api_id: 'fake-api-doesnt-exist' region: 'fake_region' swagger_file: foo.yml swagger_text: "this is not really an API" register: result ignore_errors: true - name: assert failure when called with with minimal parameters but no region assert: that: - 'result.failed' - 'result.msg.startswith("parameters are mutually exclusive")' # This fails with # msg": "There is an issue in the code of the module. You must # specify either both, resource or client to the conn_type # parameter in the boto3_conn function call" # even though the call appears to include conn_type='client' # # ============================================================ # - name: test invalid region parameter # aws_api_gateway: # api_id: 'fake-api-doesnt-exist' # region: 'asdf querty 1234' # register: result # ignore_errors: true # - name: assert invalid region parameter # assert: # that: # - 'result.failed' # - 'result.msg.startswith("Region asdf querty 1234 does not seem to be available ")' # ============================================================ - name: build API file template: src: minimal-swagger-api.yml.j2 dest: "{{output_dir}}/minimal-swagger-api.yml" tags: new_api,api,api_file - name: deploy new API aws_api_gateway: api_file: "{{output_dir}}/minimal-swagger-api.yml" stage: "minimal" region: '{{ec2_region}}' aws_access_key: '{{ec2_access_key}}' aws_secret_key: '{{ec2_secret_key}}' security_token: '{{security_token}}' register: create_result - name: assert deploy new API worked assert: that: - 'create_result.changed == True' - '"api_id" in create_result' # - '"created_response.created_date" in create_result' # - '"deploy_response.created_date" in create_result' - name: check API works uri: url="https://{{create_result.api_id}}.execute-api.{{ec2_region}}.amazonaws.com/minimal" register: uri_result - name: assert API works success assert: that: - 'uri_result' - name: check nonexistent endpoints cause errors uri: url="https://{{create_result.api_id}}.execute-api.{{ec2_region}}.amazonaws.com/nominal" register: bad_uri_result ignore_errors: true - name: assert assert: that: - bad_uri_result|failed # ============================================================ - name: deploy first API aws_api_gateway: api_file: "{{output_dir}}/minimal-swagger-api.yml" stage: "minimal" region: '{{ec2_region}}' aws_access_key: '{{ec2_access_key}}' aws_secret_key: '{{ec2_secret_key}}' security_token: '{{security_token}}' register: create_result_1 - name: deploy second API rapidly after first aws_api_gateway: api_file: "{{output_dir}}/minimal-swagger-api.yml" stage: "minimal" region: '{{ec2_region}}' aws_access_key: '{{ec2_access_key}}' aws_secret_key: '{{ec2_secret_key}}' security_token: '{{security_token}}' register: create_result_2 - name: assert both APIs deployed successfully assert: that: - 'create_result_1.changed == True' - 'create_result_2.changed == True' - '"api_id" in create_result_1' - '"api_id" in create_result_1' # - '"created_response.created_date" in create_result' # - '"deploy_response.created_date" in create_result' - name: destroy first API aws_api_gateway: state: absent api_id: '{{create_result_1.api_id}}' region: '{{ec2_region}}' aws_access_key: '{{ec2_access_key}}' aws_secret_key: '{{ec2_secret_key}}' security_token: '{{security_token}}' register: destroy_result_1 - name: destroy second API rapidly after first aws_api_gateway: state: absent api_id: '{{create_result_2.api_id}}' region: '{{ec2_region}}' aws_access_key: '{{ec2_access_key}}' aws_secret_key: '{{ec2_secret_key}}' security_token: '{{security_token}}' register: destroy_result_2 - name: assert both APIs deployed successfully assert: that: - 'destroy_result_1.changed == True' - 'destroy_result_2.changed == True' # - '"created_response.created_date" in create_result' # - '"deploy_response.created_date" in create_result' always: # ============================================================ - name: test state=absent (expect changed=false) aws_api_gateway: state: absent api_id: '{{create_result.api_id}}' ec2_region: '{{ec2_region}}' aws_access_key: '{{ec2_access_key}}' aws_secret_key: '{{ec2_secret_key}}' security_token: '{{security_token}}' register: destroy_result