mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-26 14:41:23 -07:00
Remove hetzner content. (#1368)
This commit is contained in:
parent
8e3931d9b0
commit
eab9a43d2e
18 changed files with 27 additions and 3192 deletions
|
@ -1,268 +0,0 @@
|
|||
# Copyright: (c) 2017 Ansible Project
|
||||
# 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
|
||||
|
||||
import copy
|
||||
import json
|
||||
import pytest
|
||||
|
||||
from mock import MagicMock
|
||||
from ansible_collections.community.general.plugins.module_utils import hetzner
|
||||
|
||||
|
||||
class ModuleFailException(Exception):
|
||||
def __init__(self, msg, **kwargs):
|
||||
super(ModuleFailException, self).__init__(msg)
|
||||
self.fail_msg = msg
|
||||
self.fail_kwargs = kwargs
|
||||
|
||||
|
||||
def get_module_mock():
|
||||
def f(msg, **kwargs):
|
||||
raise ModuleFailException(msg, **kwargs)
|
||||
|
||||
module = MagicMock()
|
||||
module.fail_json = f
|
||||
module.from_json = json.loads
|
||||
return module
|
||||
|
||||
|
||||
# ########################################################################################
|
||||
|
||||
FETCH_URL_JSON_SUCCESS = [
|
||||
(
|
||||
(None, dict(
|
||||
body=json.dumps(dict(
|
||||
a='b'
|
||||
)).encode('utf-8'),
|
||||
)),
|
||||
None,
|
||||
(dict(
|
||||
a='b'
|
||||
), None)
|
||||
),
|
||||
(
|
||||
(None, dict(
|
||||
body=json.dumps(dict(
|
||||
error=dict(
|
||||
code="foo",
|
||||
status=400,
|
||||
message="bar",
|
||||
),
|
||||
a='b'
|
||||
)).encode('utf-8'),
|
||||
)),
|
||||
['foo'],
|
||||
(dict(
|
||||
error=dict(
|
||||
code="foo",
|
||||
status=400,
|
||||
message="bar",
|
||||
),
|
||||
a='b'
|
||||
), 'foo')
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
FETCH_URL_JSON_FAIL = [
|
||||
(
|
||||
(None, dict(
|
||||
body=json.dumps(dict(
|
||||
error=dict(
|
||||
code="foo",
|
||||
status=400,
|
||||
message="bar",
|
||||
),
|
||||
)).encode('utf-8'),
|
||||
)),
|
||||
None,
|
||||
'Request failed: 400 foo (bar)'
|
||||
),
|
||||
(
|
||||
(None, dict(
|
||||
body=json.dumps(dict(
|
||||
error=dict(
|
||||
code="foo",
|
||||
status=400,
|
||||
message="bar",
|
||||
),
|
||||
)).encode('utf-8'),
|
||||
)),
|
||||
['bar'],
|
||||
'Request failed: 400 foo (bar)'
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("return_value, accept_errors, result", FETCH_URL_JSON_SUCCESS)
|
||||
def test_fetch_url_json(monkeypatch, return_value, accept_errors, result):
|
||||
module = get_module_mock()
|
||||
hetzner.fetch_url = MagicMock(return_value=return_value)
|
||||
|
||||
assert hetzner.fetch_url_json(module, 'https://foo/bar', accept_errors=accept_errors) == result
|
||||
|
||||
|
||||
@pytest.mark.parametrize("return_value, accept_errors, result", FETCH_URL_JSON_FAIL)
|
||||
def test_fetch_url_json_fail(monkeypatch, return_value, accept_errors, result):
|
||||
module = get_module_mock()
|
||||
hetzner.fetch_url = MagicMock(return_value=return_value)
|
||||
|
||||
with pytest.raises(ModuleFailException) as exc:
|
||||
hetzner.fetch_url_json(module, 'https://foo/bar', accept_errors=accept_errors)
|
||||
|
||||
assert exc.value.fail_msg == result
|
||||
assert exc.value.fail_kwargs == dict()
|
||||
|
||||
|
||||
# ########################################################################################
|
||||
|
||||
GET_FAILOVER_SUCCESS = [
|
||||
(
|
||||
'1.2.3.4',
|
||||
(None, dict(
|
||||
body=json.dumps(dict(
|
||||
failover=dict(
|
||||
active_server_ip='1.1.1.1',
|
||||
ip='1.2.3.4',
|
||||
netmask='255.255.255.255',
|
||||
)
|
||||
)).encode('utf-8'),
|
||||
)),
|
||||
'1.1.1.1',
|
||||
dict(
|
||||
active_server_ip='1.1.1.1',
|
||||
ip='1.2.3.4',
|
||||
netmask='255.255.255.255',
|
||||
)
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
GET_FAILOVER_FAIL = [
|
||||
(
|
||||
'1.2.3.4',
|
||||
(None, dict(
|
||||
body=json.dumps(dict(
|
||||
error=dict(
|
||||
code="foo",
|
||||
status=400,
|
||||
message="bar",
|
||||
),
|
||||
)).encode('utf-8'),
|
||||
)),
|
||||
'Request failed: 400 foo (bar)'
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("ip, return_value, result, record", GET_FAILOVER_SUCCESS)
|
||||
def test_get_failover_record(monkeypatch, ip, return_value, result, record):
|
||||
module = get_module_mock()
|
||||
hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
|
||||
|
||||
assert hetzner.get_failover_record(module, ip) == record
|
||||
|
||||
|
||||
@pytest.mark.parametrize("ip, return_value, result", GET_FAILOVER_FAIL)
|
||||
def test_get_failover_record_fail(monkeypatch, ip, return_value, result):
|
||||
module = get_module_mock()
|
||||
hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
|
||||
|
||||
with pytest.raises(ModuleFailException) as exc:
|
||||
hetzner.get_failover_record(module, ip)
|
||||
|
||||
assert exc.value.fail_msg == result
|
||||
assert exc.value.fail_kwargs == dict()
|
||||
|
||||
|
||||
@pytest.mark.parametrize("ip, return_value, result, record", GET_FAILOVER_SUCCESS)
|
||||
def test_get_failover(monkeypatch, ip, return_value, result, record):
|
||||
module = get_module_mock()
|
||||
hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
|
||||
|
||||
assert hetzner.get_failover(module, ip) == result
|
||||
|
||||
|
||||
@pytest.mark.parametrize("ip, return_value, result", GET_FAILOVER_FAIL)
|
||||
def test_get_failover_fail(monkeypatch, ip, return_value, result):
|
||||
module = get_module_mock()
|
||||
hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
|
||||
|
||||
with pytest.raises(ModuleFailException) as exc:
|
||||
hetzner.get_failover(module, ip)
|
||||
|
||||
assert exc.value.fail_msg == result
|
||||
assert exc.value.fail_kwargs == dict()
|
||||
|
||||
|
||||
# ########################################################################################
|
||||
|
||||
SET_FAILOVER_SUCCESS = [
|
||||
(
|
||||
'1.2.3.4',
|
||||
'1.1.1.1',
|
||||
(None, dict(
|
||||
body=json.dumps(dict(
|
||||
failover=dict(
|
||||
active_server_ip='1.1.1.2',
|
||||
)
|
||||
)).encode('utf-8'),
|
||||
)),
|
||||
('1.1.1.2', True)
|
||||
),
|
||||
(
|
||||
'1.2.3.4',
|
||||
'1.1.1.1',
|
||||
(None, dict(
|
||||
body=json.dumps(dict(
|
||||
error=dict(
|
||||
code="FAILOVER_ALREADY_ROUTED",
|
||||
status=400,
|
||||
message="Failover already routed",
|
||||
),
|
||||
)).encode('utf-8'),
|
||||
)),
|
||||
('1.1.1.1', False)
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
SET_FAILOVER_FAIL = [
|
||||
(
|
||||
'1.2.3.4',
|
||||
'1.1.1.1',
|
||||
(None, dict(
|
||||
body=json.dumps(dict(
|
||||
error=dict(
|
||||
code="foo",
|
||||
status=400,
|
||||
message="bar",
|
||||
),
|
||||
)).encode('utf-8'),
|
||||
)),
|
||||
'Request failed: 400 foo (bar)'
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("ip, value, return_value, result", SET_FAILOVER_SUCCESS)
|
||||
def test_set_failover(monkeypatch, ip, value, return_value, result):
|
||||
module = get_module_mock()
|
||||
hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
|
||||
|
||||
assert hetzner.set_failover(module, ip, value) == result
|
||||
|
||||
|
||||
@pytest.mark.parametrize("ip, value, return_value, result", SET_FAILOVER_FAIL)
|
||||
def test_set_failover_fail(monkeypatch, ip, value, return_value, result):
|
||||
module = get_module_mock()
|
||||
hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
|
||||
|
||||
with pytest.raises(ModuleFailException) as exc:
|
||||
hetzner.set_failover(module, ip, value)
|
||||
|
||||
assert exc.value.fail_msg == result
|
||||
assert exc.value.fail_kwargs == dict()
|
|
@ -1,219 +0,0 @@
|
|||
# (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'
|
|
@ -1,71 +0,0 @@
|
|||
# (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
|
File diff suppressed because it is too large
Load diff
|
@ -1,240 +0,0 @@
|
|||
# (c) 2019 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_firewall_info
|
||||
|
||||
|
||||
class TestHetznerFirewallInfo(BaseTestModule):
|
||||
MOCK_ANSIBLE_MODULEUTILS_BASIC_ANSIBLEMODULE = 'ansible_collections.community.general.plugins.modules.net_tools.hetzner_firewall_info.AnsibleModule'
|
||||
MOCK_ANSIBLE_MODULEUTILS_URLS_FETCH_URL = 'ansible_collections.community.general.plugins.module_utils.hetzner.fetch_url'
|
||||
|
||||
# Tests for state (absent and present)
|
||||
|
||||
def test_absent(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'disabled',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['firewall']['status'] == 'disabled'
|
||||
assert result['firewall']['server_ip'] == '1.2.3.4'
|
||||
assert result['firewall']['server_number'] == 1
|
||||
|
||||
def test_present(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'active',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['firewall']['status'] == 'active'
|
||||
assert result['firewall']['server_ip'] == '1.2.3.4'
|
||||
assert result['firewall']['server_number'] == 1
|
||||
assert len(result['firewall']['rules']['input']) == 0
|
||||
|
||||
def test_present_w_rules(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'active',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [
|
||||
{
|
||||
'name': 'Accept HTTPS traffic',
|
||||
'ip_version': 'ipv4',
|
||||
'dst_ip': None,
|
||||
'dst_port': '443',
|
||||
'src_ip': None,
|
||||
'src_port': None,
|
||||
'protocol': 'tcp',
|
||||
'tcp_flags': None,
|
||||
'action': 'accept',
|
||||
},
|
||||
{
|
||||
'name': None,
|
||||
'ip_version': 'ipv4',
|
||||
'dst_ip': None,
|
||||
'dst_port': None,
|
||||
'src_ip': None,
|
||||
'src_port': None,
|
||||
'protocol': None,
|
||||
'tcp_flags': None,
|
||||
'action': 'discard',
|
||||
}
|
||||
],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['firewall']['status'] == 'active'
|
||||
assert result['firewall']['server_ip'] == '1.2.3.4'
|
||||
assert result['firewall']['server_number'] == 1
|
||||
assert len(result['firewall']['rules']['input']) == 2
|
||||
assert result['firewall']['rules']['input'][0]['name'] == 'Accept HTTPS traffic'
|
||||
assert result['firewall']['rules']['input'][0]['dst_port'] == '443'
|
||||
assert result['firewall']['rules']['input'][0]['action'] == 'accept'
|
||||
assert result['firewall']['rules']['input'][1]['dst_port'] is None
|
||||
assert result['firewall']['rules']['input'][1]['action'] == 'discard'
|
||||
|
||||
# Tests for wait_for_configured in getting status
|
||||
|
||||
def test_wait_get(self, mocker):
|
||||
mocker.patch('time.sleep', lambda duration: None)
|
||||
result = self.run_module_success(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
'wait_for_configured': True,
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'in process',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'active',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['firewall']['status'] == 'active'
|
||||
assert result['firewall']['server_ip'] == '1.2.3.4'
|
||||
assert result['firewall']['server_number'] == 1
|
||||
|
||||
def test_wait_get_timeout(self, mocker):
|
||||
mocker.patch('time.sleep', lambda duration: None)
|
||||
result = self.run_module_failed(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
'wait_for_configured': True,
|
||||
'timeout': 0,
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'in process',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'in process',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['msg'] == 'Timeout while waiting for firewall to be configured.'
|
||||
|
||||
def test_nowait_get(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
'wait_for_configured': False,
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'in process',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['firewall']['status'] == 'in process'
|
||||
assert result['firewall']['server_ip'] == '1.2.3.4'
|
||||
assert result['firewall']['server_number'] == 1
|
Loading…
Add table
Add a link
Reference in a new issue