- name: Write out ~/.netrc
  copy:
    dest: "~/.netrc"
    # writing directly to ~/.netrc because plug-in doesn't support NETRC environment overwrite
    content: |
      machine {{ httpbin_host }}
      login foo
      password bar
    mode: "0600"

- name: test Url lookup with ~/.netrc forced Basic auth
  set_fact:
    web_data: "{{ lookup('ansible.builtin.url', 'https://{{ httpbin_host }}/bearer', headers={'Authorization':'Bearer foobar'}) }}"
  ignore_errors: yes

- name: assert test Url lookup with ~/.netrc forced Basic auth
  assert:
    that:
    - "web_data.token.find('v=' ~ 'Zm9vOmJhcg==') == -1"
    fail_msg: "Was expecting 'foo:bar' in base64, but received: {{ web_data }}"
    success_msg: "Expected Basic authentication even Bearer headers were sent"

- name: test Url lookup with use_netrc=False
  set_fact:
    web_data: "{{ lookup('ansible.builtin.url', 'https://{{ httpbin_host }}/bearer', headers={'Authorization':'Bearer foobar'}, use_netrc='False') }}"

- name: assert test Url lookup with netrc=False used Bearer authentication
  assert:
    that:
    - "web_data.token.find('v=' ~ 'foobar') == -1"
    fail_msg: "Was expecting 'foobar' Bearer token, but received: {{ web_data }}"
    success_msg: "Expected to ignore ~/.netrc and authorize with Bearer token"

- name: Clean up. Removing ~/.netrc
  file:
    path: ~/.netrc
    state: absent
