From 866e0b564e60ad32deb4d3dddb5ff02b495b2429 Mon Sep 17 00:00:00 2001 From: Jonas L Date: Fri, 2 Feb 2024 13:42:18 +0100 Subject: [PATCH] test: use testing framework for network integration tests (#448) ##### SUMMARY Implement the new test framework for the network tests, and reenable the network tests --- .ansible-lint | 1 - tests/integration/targets/network/aliases | 1 - .../targets/network/defaults/main/main.yml | 1 - .../targets/network/tasks/cleanup.yml | 5 + .../targets/network/tasks/test.yml | 325 +++++++----------- 5 files changed, 126 insertions(+), 207 deletions(-) create mode 100644 tests/integration/targets/network/tasks/cleanup.yml diff --git a/.ansible-lint b/.ansible-lint index b828245..f706810 100644 --- a/.ansible-lint +++ b/.ansible-lint @@ -11,7 +11,6 @@ exclude_paths: - tests/integration/targets/load_balancer_network - tests/integration/targets/load_balancer_service - tests/integration/targets/load_balancer_target - - tests/integration/targets/network - tests/integration/targets/placement_group - tests/integration/targets/primary_ip - tests/integration/targets/route diff --git a/tests/integration/targets/network/aliases b/tests/integration/targets/network/aliases index f150235..62828d1 100644 --- a/tests/integration/targets/network/aliases +++ b/tests/integration/targets/network/aliases @@ -1,3 +1,2 @@ cloud/hcloud azp/group1 -disabled diff --git a/tests/integration/targets/network/defaults/main/main.yml b/tests/integration/targets/network/defaults/main/main.yml index a832060..a01c6d6 100644 --- a/tests/integration/targets/network/defaults/main/main.yml +++ b/tests/integration/targets/network/defaults/main/main.yml @@ -2,4 +2,3 @@ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) --- hcloud_network_name: "{{ hcloud_ns }}" -hcloud_network_name_with_vswitch: "{{ hcloud_ns }}-vswitch" diff --git a/tests/integration/targets/network/tasks/cleanup.yml b/tests/integration/targets/network/tasks/cleanup.yml new file mode 100644 index 0000000..989d01b --- /dev/null +++ b/tests/integration/targets/network/tasks/cleanup.yml @@ -0,0 +1,5 @@ +--- +- name: Cleanup test_network + hetzner.hcloud.network: + name: "{{ hcloud_network_name }}" + state: absent diff --git a/tests/integration/targets/network/tasks/test.yml b/tests/integration/targets/network/tasks/test.yml index b4f3de2..5f26d1f 100644 --- a/tests/integration/targets/network/tasks/test.yml +++ b/tests/integration/targets/network/tasks/test.yml @@ -1,268 +1,185 @@ # Copyright: (c) 2019, Hetzner Cloud GmbH # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) --- -- name: setup ensure network is absent +- name: Test missing required parameters hetzner.hcloud.network: - name: "{{ item }}" - state: absent - with_items: - - "{{ hcloud_network_name }}" - - "{{ hcloud_network_name_with_vswitch }}" - -- name: test missing ip_range parameter on create Network - hetzner.hcloud.network: - name: "{{hcloud_network_name}}" - register: result + name: "{{ hcloud_network_name }}" + state: present ignore_errors: true -- name: verify fail missing ip_range parameter on create Network result - assert: + register: result +- name: Verify missing required parameters + ansible.builtin.assert: that: - result is failed - 'result.msg == "missing required arguments: ip_range"' -- name: test create Network with check mode +- name: Test create with check mode hetzner.hcloud.network: - name: "{{hcloud_network_name}}" + name: "{{ hcloud_network_name }}" ip_range: "10.0.0.0/16" - register: result + labels: + key: value check_mode: true -- name: verify create Network with check mode result - assert: + register: result +- name: Verify create with check mode + ansible.builtin.assert: that: - result is changed -- name: test create Network +- name: Test create hetzner.hcloud.network: - name: "{{hcloud_network_name}}" + name: "{{ hcloud_network_name }}" ip_range: "10.0.0.0/16" - register: network -- name: verify test create Network result - assert: - that: - - network is changed - - network.hcloud_network.name == hcloud_network_name - - network.hcloud_network.ip_range == "10.0.0.0/16" - -- name: test create Network idempotence - hetzner.hcloud.network: - name: "{{hcloud_network_name}}" - ip_range: "10.0.0.0/16" - register: network -- name: verify test create network - assert: - that: - - network is not changed - -- name: test create Network with expose_routes_to_vswitch - hetzner.hcloud.network: - name: "{{hcloud_network_name_with_vswitch}}" - ip_range: "10.0.0.0/16" - expose_routes_to_vswitch: true - register: network -- name: verify test create Network with vSwitch result - assert: - that: - - network is changed - - network.hcloud_network.name == hcloud_network_name_with_vswitch - - network.hcloud_network.ip_range == "10.0.0.0/16" - - network.hcloud_network.expose_routes_to_vswitch is true - -- name: test create Network with expose_routes_to_vswitch idempotence - hetzner.hcloud.network: - name: "{{hcloud_network_name_with_vswitch}}" - ip_range: "10.0.0.0/16" - expose_routes_to_vswitch: true - register: network -- name: verify test create network idempotency - assert: - that: - - network is not changed - -- name: test update Network label - hetzner.hcloud.network: - name: "{{hcloud_network_name}}" labels: key: value - register: network -- name: verify test update Network label - assert: + register: result +- name: Verify create + ansible.builtin.assert: that: - - network is changed - - network.hcloud_network.labels.key == "value" + - result is changed + - result.hcloud_network.name == hcloud_network_name + - result.hcloud_network.ip_range == "10.0.0.0/16" + - result.hcloud_network.labels.key == "value" + - result.hcloud_network.expose_routes_to_vswitch == false + - result.hcloud_network.delete_protection == false -- name: test update Network label idempotency +- name: Test create idempotency hetzner.hcloud.network: - name: "{{hcloud_network_name}}" + name: "{{ hcloud_network_name }}" + ip_range: "10.0.0.0/16" labels: key: value - register: network -- name: verify test update Network label idempotency - assert: + register: result +- name: Verify create idempotency + ansible.builtin.assert: that: - - network is not changed + - result is not changed -- name: test update Network ip range +- name: Test update hetzner.hcloud.network: - name: "{{hcloud_network_name}}" - ip_range: "10.0.0.0/8" - register: network -- name: verify test update Network ip range - assert: - that: - - network is changed - - network.hcloud_network.ip_range == "10.0.0.0/8" - -- name: test update Network ip range idempotency - hetzner.hcloud.network: - name: "{{hcloud_network_name}}" - ip_range: "10.0.0.0/8" - register: network -- name: verify test update Network ip range idempotency - assert: - that: - - network is not changed - -- name: test update Network expose_routes_to_vswitch - hetzner.hcloud.network: - name: "{{hcloud_network_name_with_vswitch}}" - expose_routes_to_vswitch: false - register: network -- name: verify test update Network expose_routes_to_vswitch - assert: - that: - - network is changed - - network.hcloud_network.expose_routes_to_vswitch is false - -- name: test update Network expose_routes_to_vswitch idempotency - hetzner.hcloud.network: - name: "{{hcloud_network_name_with_vswitch}}" - expose_routes_to_vswitch: false - register: network -- name: verify test update Network expose_routes_to_vswitch idempotency - assert: - that: - - network is not changed - -- name: test update Network delete protection - hetzner.hcloud.network: - name: "{{hcloud_network_name}}" + name: "{{ hcloud_network_name }}" ip_range: "10.0.0.0/8" + labels: + key: changed + foo: bar + expose_routes_to_vswitch: true delete_protection: true - register: network -- name: verify test update Network delete protection - assert: + register: result +- name: Verify update + ansible.builtin.assert: that: - - network is changed - - network.hcloud_network.delete_protection is sameas true + - result is changed + - result.hcloud_network.ip_range == "10.0.0.0/8" + - result.hcloud_network.labels.key == "changed" + - result.hcloud_network.labels.foo == "bar" + - result.hcloud_network.expose_routes_to_vswitch == true + - result.hcloud_network.delete_protection == true -- name: test update Network delete protection idempotency +- name: Test update idempotency hetzner.hcloud.network: - name: "{{hcloud_network_name}}" + name: "{{ hcloud_network_name }}" ip_range: "10.0.0.0/8" + labels: + key: changed + foo: bar delete_protection: true - register: network -- name: verify test update Network delete protection idempotency - assert: + register: result +- name: Verify update idempotency + ansible.builtin.assert: that: - - network is not changed - - network.hcloud_network.delete_protection is sameas true + - result is not changed -- name: test Network without delete protection set to be idempotent +- name: Test delete with delete protection hetzner.hcloud.network: - name: "{{hcloud_network_name}}" - ip_range: "10.0.0.0/8" - register: network -- name: verify test Network without delete protection set to be idempotent - assert: - that: - - network is not changed - - network.hcloud_network.delete_protection is sameas true - -- name: test delete Network fails if it is protected - hetzner.hcloud.network: - name: "{{hcloud_network_name}}" + name: "{{ hcloud_network_name }}" state: absent ignore_errors: true register: result -- name: verify delete Network - assert: +- name: Verify delete with delete protection + ansible.builtin.assert: that: - result is failed - 'result.msg == "network deletion is protected"' -- name: test update Network delete protection +- name: Test update delete protection hetzner.hcloud.network: - name: "{{hcloud_network_name}}" - ip_range: "10.0.0.0/8" + name: "{{ hcloud_network_name }}" delete_protection: false - register: network -- name: verify test update Network delete protection - assert: + register: result +- name: Verify update delete protection + ansible.builtin.assert: that: - - network is changed - - network.hcloud_network.delete_protection is sameas false + - result is changed + - result.hcloud_network.delete_protection == false -- name: test delete Network +- name: Test update name hetzner.hcloud.network: - name: "{{hcloud_network_name}}" + id: "{{ result.hcloud_network.id }}" + name: "changed-{{ hcloud_network_name }}" + register: result +- name: Verify update name + ansible.builtin.assert: + that: + - result is changed + - result.hcloud_network.name == "changed-" + hcloud_network_name + +- name: Test update name and labels + hetzner.hcloud.network: + id: "{{ result.hcloud_network.id }}" + name: "{{ hcloud_network_name }}" + labels: + key: value + register: result +- name: Verify update name and labels + ansible.builtin.assert: + that: + - result is changed + - result.hcloud_network.name == hcloud_network_name + - result.hcloud_network.labels.key == "value" + - result.hcloud_network.labels.foo is not defined + +- name: Test delete + hetzner.hcloud.network: + name: "{{ hcloud_network_name }}" state: absent register: result -- name: verify delete Network - assert: +- name: Verify delete + ansible.builtin.assert: that: - - result is success + - result is changed -- name: test create Network with delete protection +- name: Test create with vSwitch hetzner.hcloud.network: - name: "{{hcloud_network_name}}" - ip_range: "10.0.0.0/8" - delete_protection: true - register: network -- name: verify create Network with delete protection - assert: - that: - - network is changed - - network.hcloud_network.delete_protection is sameas true - -- name: test delete Network fails if it is protected - hetzner.hcloud.network: - name: "{{hcloud_network_name}}" - state: absent - ignore_errors: true + name: "{{ hcloud_network_name }}" + ip_range: "10.0.0.0/16" + expose_routes_to_vswitch: true register: result -- name: verify delete Network - assert: +- name: Verify create with vSwitch + ansible.builtin.assert: that: - - result is failed - - 'result.msg == "network deletion is protected"' + - result is changed + - result.hcloud_network.name == hcloud_network_name + - result.hcloud_network.ip_range == "10.0.0.0/16" + - result.hcloud_network.expose_routes_to_vswitch == true + - result.hcloud_network.delete_protection == false -- name: test update Network delete protection +- name: Test create with vSwitch idempotency hetzner.hcloud.network: - name: "{{hcloud_network_name}}" - delete_protection: false - register: network -- name: verify test update Network delete protection - assert: + name: "{{ hcloud_network_name }}" + ip_range: "10.0.0.0/16" + expose_routes_to_vswitch: true + register: result +- name: Verify create + ansible.builtin.assert: that: - - network is changed - - network.hcloud_network.delete_protection is sameas false + - result is not changed -- name: test delete Network +- name: Test delete with vSwitch hetzner.hcloud.network: - name: "{{hcloud_network_name}}" + name: "{{ hcloud_network_name }}" state: absent register: result -- name: verify delete Network - assert: +- name: Verify delete with vSwitch + ansible.builtin.assert: that: - - result is success - -- name: test delete Network with expose_routes_to_vswitch - hetzner.hcloud.network: - name: "{{hcloud_network_name_with_vswitch}}" - state: absent - register: result -- name: verify delete Network with expose_routes_to_vswitch - assert: - that: - - result is success + - result is changed