ansible/test/integration/targets/win_iis_webbinding/tasks/http.yml
nwsparks beb0fd9b8b win_iis_webbinding: Fix bug with ipaddress * returning multiple bindings (#34721)
* win_iis_webbinding: Fix bug with ipaddress * returning multiple bindings
instead of only the ones defined as *. Address possible future issues around
hostheader * by just disallowing it. Resolves 25473. Added new test for
this case.

Removed all validation for https binding collisions due to difficulty in
validating all cases in which they could or could not collide. As a
result, also removed return values relating to certificate data.

Updated testing and docs appropriately

* win_iis_webbinding: added break to remove binding loops
2018-01-19 10:00:35 +10:00

317 lines
10 KiB
YAML

#cm add
#changed true, check nothing present
- name: CM add http binding no header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: present
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: http_no_header
check_mode: yes
- name: CM get binding info no header
test_get_webbindings:
name: "{{ test_iis_site_name }}"
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: get_http_no_header
changed_when: false
- name: CM add http binding with header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: present
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: http_header
check_mode: yes
- name: CM get binding info header
test_get_webbindings:
name: "{{ test_iis_site_name }}"
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: get_http_header
changed_when: false
- name: CM assert changed, but not added
assert:
that:
- http_no_header is changed
- http_no_header.binding_info is none
- get_http_no_header.binding is not defined
- http_header is changed
- http_header.binding_info is none
- get_http_header.binding is not defined
#add
#changed true, new bindings present
- name: add http binding no header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: present
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: http_no_header
- name: get binding info no header
test_get_webbindings:
name: "{{ test_iis_site_name }}"
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: get_http_no_header
changed_when: false
- name: add http binding with header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: present
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: http_header
- name: get binding info header
test_get_webbindings:
name: "{{ test_iis_site_name }}"
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: get_http_header
changed_when: false
- name: assert changed and added
assert:
that:
- http_no_header is changed
- http_no_header.binding_info is defined
- http_no_header.operation_type == 'added'
- http_no_header.binding_info.ip == "{{ http_vars.ip }}"
- http_no_header.binding_info.port == {{ http_vars.port }}
- http_no_header.binding_info.protocol == "{{ http_vars.protocol }}"
- http_header is changed
- http_header.binding_info is defined
- http_header.operation_type == 'added'
- http_header.binding_info.ip == "{{ http_header_vars.ip }}"
- http_header.binding_info.port == {{ http_header_vars.port }}
- http_header.binding_info.protocol == "{{ http_header_vars.protocol }}"
- http_header.binding_info.hostheader == "{{ http_header_vars.header }}"
#add idem
#changed false
- name: idem add http binding no header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: present
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: http_no_header
- name: idem add http binding with header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: present
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: http_header
- name: idem assert not changed
assert:
that:
- http_no_header is not changed
- http_header is not changed
#modify
#can't test modify for http, it will add a new binding instead since
#there's no way to match existing bindings against the new parameters
#cm remove
#changed true, bindings still present
- name: cm remove http binding no header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: absent
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: http_no_header
check_mode: yes
- name: get binding info no header
test_get_webbindings:
name: "{{ test_iis_site_name }}"
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: get_http_no_header
changed_when: false
- name: cm remove http binding with header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: absent
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: http_header
check_mode: yes
- name: get binding info header
test_get_webbindings:
name: "{{ test_iis_site_name }}"
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: get_http_header
changed_when: false
- name: cm remove assert changed, but still present
assert:
that:
- http_no_header is changed
- http_no_header.binding_info is defined
- http_no_header.operation_type == 'removed'
- http_no_header.binding_info.ip == "{{ http_vars.ip }}"
- http_no_header.binding_info.port == {{ http_vars.port }}
- http_no_header.binding_info.protocol == "{{ http_vars.protocol }}"
- get_http_no_header.binding is defined
- get_http_no_header.binding.ip == "{{ http_vars.ip }}"
- get_http_no_header.binding.port == {{ http_vars.port }}
- get_http_no_header.binding.protocol == "{{ http_vars.protocol }}"
- http_header is changed
- http_header.binding_info is defined
- http_header.operation_type == 'removed'
- http_header.binding_info.ip == "{{ http_header_vars.ip }}"
- http_header.binding_info.port == {{ http_header_vars.port }}
- http_header.binding_info.protocol == "{{ http_header_vars.protocol }}"
- http_header.binding_info.hostheader == "{{ http_header_vars.header }}"
- get_http_header.binding is defined
- get_http_header.binding.ip == "{{ http_header_vars.ip }}"
- get_http_header.binding.port == {{ http_header_vars.port }}
- get_http_header.binding.protocol == "{{ http_header_vars.protocol }}"
- get_http_header.binding.hostheader == "{{ http_header_vars.header }}"
#remove
#changed true, bindings gone
- name: remove http binding no header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: absent
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: http_no_header
- name: get binding info no header
test_get_webbindings:
name: "{{ test_iis_site_name }}"
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: get_http_no_header
changed_when: false
- name: remove http binding with header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: absent
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: http_header
- name: get binding info header
test_get_webbindings:
name: "{{ test_iis_site_name }}"
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: get_http_header
changed_when: false
- name: remove assert changed and gone
assert:
that:
- http_no_header is changed
- http_no_header.operation_type == 'removed'
- http_no_header.binding_info is defined
- http_no_header.binding_info.ip == "{{ http_vars.ip }}"
- http_no_header.binding_info.port == {{ http_vars.port }}
- http_no_header.binding_info.protocol == "{{ http_vars.protocol }}"
- get_http_no_header.binding is not defined
- http_header is changed
- http_header.binding_info is defined
- http_header.operation_type == 'removed'
- http_header.binding_info.ip == "{{ http_header_vars.ip }}"
- http_header.binding_info.port == {{ http_header_vars.port }}
- http_header.binding_info.protocol == "{{ http_header_vars.protocol }}"
- http_header.binding_info.hostheader == "{{ http_header_vars.header }}"
- get_http_header.binding is not defined
#remove idem
#change false, bindings gone
- name: idem remove http binding no header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: absent
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: http_no_header
- name: get binding info no header
test_get_webbindings:
name: "{{ test_iis_site_name }}"
protocol: "{{ http_vars.protocol }}"
ip: "{{ http_vars.ip }}"
port: "{{ http_vars.port }}"
register: get_http_no_header
changed_when: false
- name: idem remove http binding with header
win_iis_webbinding:
name: "{{ test_iis_site_name }}"
state: absent
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: http_header
- name: get binding info header
test_get_webbindings:
name: "{{ test_iis_site_name }}"
host_header: "{{ http_header_vars.header }}"
protocol: "{{ http_header_vars.protocol }}"
ip: "{{ http_header_vars.ip }}"
port: "{{ http_header_vars.port }}"
register: get_http_header
changed_when: false
- name: idem remove assert changed and gone
assert:
that:
- http_no_header is not changed
- http_no_header.binding_info is not defined
- get_http_no_header.binding is not defined
- http_header is not changed
- http_header.binding_info is not defined
- get_http_header.binding is not defined