- name: set up AWS connection info
  set_fact:
    aws_connection_info: &aws_connection_info
      aws_secret_key: "{{ aws_secret_key }}"
      aws_access_key: "{{ aws_access_key }}"
      security_token: "{{ security_token }}"
      region: "{{ aws_region }}"
  no_log: true

- block:
    - name: Create an SNS topic
      sns_topic:
        name: "{{ sns_topic_name }}"
        display_name: "Test topic"
        <<: *aws_connection_info
      register: sns_topic

    - name: Publish to the topic by name
      sns:
        topic: "{{ sns_topic_name }}"
        subject: Test message
        msg: Default test message
        http: Test message for HTTP
        https: Test message for HTTPS
        email: Test message for email
        email_json: Test message for email-json
        sms: Short test message for SMS
        sqs: Test message for SQS
        application: Test message for apps
        lambda: Test message for Lambda
        <<: *aws_connection_info
      register: result

    - name: Check for expected result structure
      assert:
        that:
          - result is not changed
          - "'message_id' in result"

    - name: Publish to the topic by ARN
      sns:
        topic: "{{ sns_topic.sns_arn }}"
        subject: Second test message
        msg: Simple test message
        <<: *aws_connection_info

  always:
    - name: Remove topic
      sns_topic:
        name: "{{ sns_topic_name }}"
        state: absent
        <<: *aws_connection_info
      ignore_errors: yes
