mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
* Add tests for hetzner_failover_ip_info.
* Add basic tests for hetzner_failover_ip.
(cherry picked from commit 41550b5205
)
Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
51a3594494
commit
d5d24302b6
2 changed files with 290 additions and 0 deletions
219
tests/unit/plugins/modules/net_tools/test_hetzner_failover_ip.py
Normal file
219
tests/unit/plugins/modules/net_tools/test_hetzner_failover_ip.py
Normal file
|
@ -0,0 +1,219 @@
|
||||||
|
# (c) 2020 Felix Fontein <felix@fontein.de>
|
||||||
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
|
|
||||||
|
from __future__ import (absolute_import, division, print_function)
|
||||||
|
__metaclass__ = type
|
||||||
|
|
||||||
|
|
||||||
|
from ansible_collections.community.internal_test_tools.tests.unit.utils.fetch_url_module_framework import (
|
||||||
|
FetchUrlCall,
|
||||||
|
BaseTestModule,
|
||||||
|
)
|
||||||
|
|
||||||
|
from ansible_collections.community.general.plugins.module_utils.hetzner import BASE_URL
|
||||||
|
from ansible_collections.community.general.plugins.modules.net_tools import hetzner_failover_ip
|
||||||
|
|
||||||
|
|
||||||
|
class TestHetznerFailoverIP(BaseTestModule):
|
||||||
|
MOCK_ANSIBLE_MODULEUTILS_BASIC_ANSIBLEMODULE = 'ansible_collections.community.general.plugins.modules.net_tools.hetzner_failover_ip.AnsibleModule'
|
||||||
|
MOCK_ANSIBLE_MODULEUTILS_URLS_FETCH_URL = 'ansible_collections.community.general.plugins.module_utils.hetzner.fetch_url'
|
||||||
|
|
||||||
|
# Tests for state idempotence (routed and unrouted)
|
||||||
|
|
||||||
|
def test_unrouted(self, mocker):
|
||||||
|
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||||
|
'hetzner_user': '',
|
||||||
|
'hetzner_password': '',
|
||||||
|
'failover_ip': '1.2.3.4',
|
||||||
|
'state': 'unrouted',
|
||||||
|
}, [
|
||||||
|
FetchUrlCall('GET', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': None,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
])
|
||||||
|
assert result['changed'] is False
|
||||||
|
assert result['value'] is None
|
||||||
|
assert result['state'] == 'unrouted'
|
||||||
|
|
||||||
|
def test_routed(self, mocker):
|
||||||
|
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||||
|
'hetzner_user': '',
|
||||||
|
'hetzner_password': '',
|
||||||
|
'failover_ip': '1.2.3.4',
|
||||||
|
'state': 'routed',
|
||||||
|
'value': '4.3.2.1',
|
||||||
|
}, [
|
||||||
|
FetchUrlCall('GET', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': '4.3.2.1',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
])
|
||||||
|
assert result['changed'] is False
|
||||||
|
assert result['value'] == '4.3.2.1'
|
||||||
|
assert result['state'] == 'routed'
|
||||||
|
|
||||||
|
# Tests for changing state (unrouted to routed, vice versa)
|
||||||
|
|
||||||
|
def test_unrouted_to_routed(self, mocker):
|
||||||
|
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||||
|
'hetzner_user': '',
|
||||||
|
'hetzner_password': '',
|
||||||
|
'failover_ip': '1.2.3.4',
|
||||||
|
'state': 'routed',
|
||||||
|
'value': '4.3.2.1',
|
||||||
|
}, [
|
||||||
|
FetchUrlCall('GET', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': None,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
FetchUrlCall('POST', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': '4.3.2.1',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_form_value('active_server_ip', '4.3.2.1')
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
])
|
||||||
|
assert result['changed'] is True
|
||||||
|
assert result['value'] == '4.3.2.1'
|
||||||
|
assert result['state'] == 'routed'
|
||||||
|
|
||||||
|
def test_routed_to_unrouted(self, mocker):
|
||||||
|
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||||
|
'hetzner_user': '',
|
||||||
|
'hetzner_password': '',
|
||||||
|
'failover_ip': '1.2.3.4',
|
||||||
|
'state': 'unrouted',
|
||||||
|
}, [
|
||||||
|
FetchUrlCall('GET', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': '4.3.2.1',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
FetchUrlCall('DELETE', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': None,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
])
|
||||||
|
assert result['changed'] is True
|
||||||
|
assert result['value'] is None
|
||||||
|
assert result['state'] == 'unrouted'
|
||||||
|
|
||||||
|
# Tests for re-routing
|
||||||
|
|
||||||
|
def test_rerouting(self, mocker):
|
||||||
|
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||||
|
'hetzner_user': '',
|
||||||
|
'hetzner_password': '',
|
||||||
|
'failover_ip': '1.2.3.4',
|
||||||
|
'state': 'routed',
|
||||||
|
'value': '4.3.2.1',
|
||||||
|
}, [
|
||||||
|
FetchUrlCall('GET', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': '5.4.3.2',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
FetchUrlCall('POST', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': '4.3.2.1',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_form_value('active_server_ip', '4.3.2.1')
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
])
|
||||||
|
assert result['changed'] is True
|
||||||
|
assert result['value'] == '4.3.2.1'
|
||||||
|
assert result['state'] == 'routed'
|
||||||
|
|
||||||
|
def test_rerouting_already_routed(self, mocker):
|
||||||
|
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||||
|
'hetzner_user': '',
|
||||||
|
'hetzner_password': '',
|
||||||
|
'failover_ip': '1.2.3.4',
|
||||||
|
'state': 'routed',
|
||||||
|
'value': '4.3.2.1',
|
||||||
|
}, [
|
||||||
|
FetchUrlCall('GET', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': '5.4.3.2',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
FetchUrlCall('POST', 409)
|
||||||
|
.result_json({
|
||||||
|
'error': {
|
||||||
|
'status': 409,
|
||||||
|
'code': 'FAILOVER_ALREADY_ROUTED',
|
||||||
|
'message': 'Failover already routed',
|
||||||
|
},
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': '4.3.2.1',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_form_value('active_server_ip', '4.3.2.1')
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
])
|
||||||
|
assert result['changed'] is False
|
||||||
|
assert result['value'] == '4.3.2.1'
|
||||||
|
assert result['state'] == 'routed'
|
|
@ -0,0 +1,71 @@
|
||||||
|
# (c) 2020 Felix Fontein <felix@fontein.de>
|
||||||
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
|
|
||||||
|
from __future__ import (absolute_import, division, print_function)
|
||||||
|
__metaclass__ = type
|
||||||
|
|
||||||
|
|
||||||
|
from ansible_collections.community.internal_test_tools.tests.unit.utils.fetch_url_module_framework import (
|
||||||
|
FetchUrlCall,
|
||||||
|
BaseTestModule,
|
||||||
|
)
|
||||||
|
|
||||||
|
from ansible_collections.community.general.plugins.module_utils.hetzner import BASE_URL
|
||||||
|
from ansible_collections.community.general.plugins.modules.net_tools import hetzner_failover_ip_info
|
||||||
|
|
||||||
|
|
||||||
|
class TestHetznerFailoverIPInfo(BaseTestModule):
|
||||||
|
MOCK_ANSIBLE_MODULEUTILS_BASIC_ANSIBLEMODULE = 'ansible_collections.community.general.plugins.modules.net_tools.hetzner_failover_ip_info.AnsibleModule'
|
||||||
|
MOCK_ANSIBLE_MODULEUTILS_URLS_FETCH_URL = 'ansible_collections.community.general.plugins.module_utils.hetzner.fetch_url'
|
||||||
|
|
||||||
|
# Tests for state (routed and unrouted)
|
||||||
|
|
||||||
|
def test_unrouted(self, mocker):
|
||||||
|
result = self.run_module_success(mocker, hetzner_failover_ip_info, {
|
||||||
|
'hetzner_user': '',
|
||||||
|
'hetzner_password': '',
|
||||||
|
'failover_ip': '1.2.3.4',
|
||||||
|
}, [
|
||||||
|
FetchUrlCall('GET', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': None,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
])
|
||||||
|
assert result['changed'] is False
|
||||||
|
assert result['value'] is None
|
||||||
|
assert result['state'] == 'unrouted'
|
||||||
|
assert result['failover_ip'] == '1.2.3.4'
|
||||||
|
assert result['server_ip'] == '2.3.4.5'
|
||||||
|
assert result['server_number'] == 2345
|
||||||
|
|
||||||
|
def test_routed(self, mocker):
|
||||||
|
result = self.run_module_success(mocker, hetzner_failover_ip_info, {
|
||||||
|
'hetzner_user': '',
|
||||||
|
'hetzner_password': '',
|
||||||
|
'failover_ip': '1.2.3.4',
|
||||||
|
}, [
|
||||||
|
FetchUrlCall('GET', 200)
|
||||||
|
.result_json({
|
||||||
|
'failover': {
|
||||||
|
'ip': '1.2.3.4',
|
||||||
|
'netmask': '255.255.255.255',
|
||||||
|
'server_ip': '2.3.4.5',
|
||||||
|
'server_number': 2345,
|
||||||
|
'active_server_ip': '4.3.2.1',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||||
|
])
|
||||||
|
assert result['changed'] is False
|
||||||
|
assert result['value'] == '4.3.2.1'
|
||||||
|
assert result['state'] == 'routed'
|
||||||
|
assert result['failover_ip'] == '1.2.3.4'
|
||||||
|
assert result['server_ip'] == '2.3.4.5'
|
||||||
|
assert result['server_number'] == 2345
|
Loading…
Reference in a new issue