mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-25 06:10:22 -07:00
Be systematic about parsing and validating hostnames and addresses
This adds a parse_address(pattern) utility function that returns (host,port), and uses it wherever where we accept IPv4 and IPv6 addresses and hostnames (or host patterns): the inventory parser the the add_host action plugin. It also introduces a more extensive set of unit tests that supersedes the old add_host unit tests (which didn't actually test add_host, but only the parsing function).
This commit is contained in:
parent
49803509b4
commit
065bb52109
7 changed files with 283 additions and 139 deletions
|
@ -1,47 +0,0 @@
|
|||
import unittest
|
||||
|
||||
from ansible.plugins.action import add_host
|
||||
|
||||
|
||||
class TestAddHost(unittest.TestCase):
|
||||
|
||||
def test_hostname(self):
|
||||
host, port = add_host._parse_ip_host_and_port('some-remote-host')
|
||||
assert host == 'some-remote-host'
|
||||
assert port is None
|
||||
|
||||
def test_hostname_with_port(self):
|
||||
host, port = add_host._parse_ip_host_and_port('some-remote-host:80')
|
||||
assert host == 'some-remote-host'
|
||||
assert port == '80'
|
||||
|
||||
def test_parse_ip_host_and_port_v4(self):
|
||||
host, port = add_host._parse_ip_host_and_port('8.8.8.8')
|
||||
assert host == '8.8.8.8'
|
||||
assert port is None
|
||||
|
||||
def test_parse_ip_host_and_port_v4_and_port(self):
|
||||
host, port = add_host._parse_ip_host_and_port('8.8.8.8:80')
|
||||
assert host == '8.8.8.8'
|
||||
assert port == '80'
|
||||
|
||||
def test_parse_ip_host_and_port_v6(self):
|
||||
host, port = add_host._parse_ip_host_and_port(
|
||||
'dead:beef:dead:beef:dead:beef:dead:beef'
|
||||
)
|
||||
assert host == 'dead:beef:dead:beef:dead:beef:dead:beef'
|
||||
assert port is None
|
||||
|
||||
def test_parse_ip_host_and_port_v6_with_brackets(self):
|
||||
host, port = add_host._parse_ip_host_and_port(
|
||||
'[dead:beef:dead:beef:dead:beef:dead:beef]'
|
||||
)
|
||||
assert host == 'dead:beef:dead:beef:dead:beef:dead:beef'
|
||||
assert port is None
|
||||
|
||||
def test_parse_ip_host_and_port_v6_with_brackets_and_port(self):
|
||||
host, port = add_host._parse_ip_host_and_port(
|
||||
'[dead:beef:dead:beef:dead:beef:dead:beef]:80'
|
||||
)
|
||||
assert host == 'dead:beef:dead:beef:dead:beef:dead:beef'
|
||||
assert port == '80'
|
Loading…
Add table
Add a link
Reference in a new issue