- name: Create domain name
  set_fact:
      domain_name: "ansible-{{ resource_group | hash('md5') | truncate(24, True, '') }}"

- name: Remove public ip
  azure_rm_publicipaddress:
      resource_group: "{{ resource_group }}"
      name: testing01
      state:  absent

- name: Create public ip
  azure_rm_publicipaddress:
      resource_group: "{{ resource_group }}"
      name: testing01
      allocation_method: Static
      domain_name: "{{ domain_name }}"
      tags:
          testing: testing
          delete: on-exit
  register: output

- assert:
      that:
          - output.state.public_ip_allocation_method == 'Static'
          - output.state.dns_settings.domain_name_label == domain_name
          - output.state.tags | length == 2
          - output.state.tags.testing == 'testing'

- name: Should be idempotent
  azure_rm_publicipaddress:
      resource_group: "{{ resource_group }}"
      name: testing01
      allocation_method: Static
      domain_name: "{{ domain_name }}"
      tags:
          testing: testing
          delete: on-exit
  register: output

- assert:
      that: not output.changed

- name: Update tags
  azure_rm_publicipaddress:
      resource_group: "{{ resource_group }}"
      name: testing01
      tags:
          testing: testing
          delete: never
          foo: bar
  register: output

- assert:
      that:
          - output.state.tags | length == 3
          - output.state.tags.delete == 'never'

- name: Gather facts, filtering by tag
  azure_rm_publicipaddress_facts:
      resource_group: "{{ resource_group }}"
      tags:
          - testing
          - foo:bar

- assert:
      that: azure_publicipaddresses | length == 1

- name: Purge all tags
  azure_rm_publicipaddress:
      resource_group: "{{ resource_group }}"
      name: testing01
      tags: {}
  register: output

- assert:
      that:
          - output.state.tags | length == 0

- name: Gather facts for a public ip
  azure_rm_publicipaddress_facts:
      resource_group: "{{ resource_group }}"
      name: testing01

- assert:
      that: azure_publicipaddresses | length == 1

- name: Gather facts for all public ips
  azure_rm_publicipaddress_facts:
      resource_group: "{{ resource_group }}"

- assert:
      that: azure_publicipaddresses | length > 0

- name: Remove public ip
  azure_rm_publicipaddress:
      resource_group: "{{ resource_group }}"
      name: testing01
      state:  absent

- name: Gather facts for a public ip
  azure_rm_publicipaddress_facts:
      resource_group: "{{ resource_group }}"
      name: testing01

- assert:
      that: azure_publicipaddresses | length == 0
