+import socket
+from mock import Mock
from argparse import ArgumentError
from pytest import raises
validator('1')
message = error.value.message
assert message == 'wat'
+
+
+class TestHostName(object):
+
+ def setup(self):
+ self.fake_sock = Mock()
+ self.fake_sock.gaierror = socket.gaierror
+ self.fake_sock.gethostbyname.side_effect = socket.gaierror
+
+ def test_hostname_is_not_resolvable(self):
+ hostname = arg_validators.Hostname(self.fake_sock)
+ with raises(ArgumentError) as error:
+ hostname('unresolvable')
+ message = error.value.message
+ assert 'is not resolvable' in message
+
+ def test_hostname_with_name_is_not_resolvable(self):
+ hostname = arg_validators.Hostname(self.fake_sock)
+ with raises(ArgumentError) as error:
+ hostname('name:foo')
+ message = error.value.message
+ assert 'foo is not resolvable' in message
+
+ def test_ip_is_not_resolvable(self):
+ self.fake_sock.gethostbyname = Mock(return_value='192.168.1.111')
+ hostname = arg_validators.Hostname(self.fake_sock)
+ with raises(ArgumentError) as error:
+ hostname('name:192.168.1.111')
+ message = error.value.message
+ assert 'must be a hostname not an IP' in message
+
+ def test_host_is_resolvable(self):
+ self.fake_sock.gethostbyname = Mock()
+ hostname = arg_validators.Hostname(self.fake_sock)
+ result = hostname('name:example.com')
+ assert result == 'name:example.com'
raise argparse.ArgumentError(None, msg)
if resolved_addr == host:
- msg = "IP: %s is not a resolvable hostname" % host
+ msg = "%s must be a hostname not an IP" % host
raise argparse.ArgumentError(None, msg)
return string