]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-deploy.git/commitdiff
tests for the new hostname validator
authorAlfredo Deza <alfredo@deza.pe>
Wed, 31 Jul 2013 20:20:30 +0000 (16:20 -0400)
committerAlfredo Deza <alfredo@deza.pe>
Thu, 1 Aug 2013 20:08:22 +0000 (16:08 -0400)
Signed-off-by: Alfredo Deza <alfredo@deza.pe>
improve wording of IP error

Signed-off-by: Alfredo Deza <alfredo@deza.pe>
update tests for the new wording

Signed-off-by: Alfredo Deza <alfredo@deza.pe>
ceph_deploy/tests/unit/util/test_arg_validators.py
ceph_deploy/util/arg_validators.py

index d502a52c1d1fbe7678a4a0e317da378331b77616..67b39dd92cf6cd14eb6a6fa9a149205fd4808da8 100644 (file)
@@ -1,3 +1,5 @@
+import socket
+from mock import Mock
 from argparse import ArgumentError
 from pytest import raises
 
@@ -28,3 +30,39 @@ class TestRegexMatch(object):
             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'
index de01ff4e06a0266bd9c17102524e8a9db90b7f7b..860619f43ffddf4bee3ea29b33c633c48c64d436 100644 (file)
@@ -42,7 +42,7 @@ class Hostname(object):
             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