Explorar o código

Add tests for socket creation errors

Mike Naberezny %!s(int64=11) %!d(string=hai) anos
pai
achega
b5de291f69
Modificáronse 1 ficheiros con 38 adicións e 0 borrados
  1. 38 0
      supervisor/tests/test_datatypes.py

+ 38 - 0
supervisor/tests/test_datatypes.py

@@ -549,6 +549,44 @@ class UnixStreamSocketConfigTests(unittest.TestCase):
         self.assertEqual(tf_name, path_arg)
         self.assertEqual(mode, mode_arg)
 
+    def test_create_and_bind_when_chown_fails(self):
+        (tf_fd, tf_name) = tempfile.mkstemp()
+        owner = (sentinel.uid, sentinel.gid)
+        mode = sentinel.mode
+        conf = self._makeOne(tf_name, owner=owner, mode=mode)
+
+        @patch('os.chown', Mock(side_effect=OSError("msg")))
+        @patch('os.chmod', Mock())
+        def call_create_and_bind(conf):
+            return conf.create_and_bind()
+
+        try:
+            call_create_and_bind(conf)
+            self.fail()
+        except ValueError, e:
+            expected = "Could not change ownership of socket file: msg"
+            self.assertEqual(e.args[0], expected)
+            self.assertFalse(os.path.exists(tf_name))
+
+    def test_create_and_bind_when_chmod_fails(self):
+        (tf_fd, tf_name) = tempfile.mkstemp()
+        owner = (sentinel.uid, sentinel.gid)
+        mode = sentinel.mode
+        conf = self._makeOne(tf_name, owner=owner, mode=mode)
+
+        @patch('os.chown', Mock())
+        @patch('os.chmod', Mock(side_effect=OSError("msg")))
+        def call_create_and_bind(conf):
+            return conf.create_and_bind()
+
+        try:
+            call_create_and_bind(conf)
+            self.fail()
+        except ValueError, e:
+            expected = "Could not change permissions of socket file: msg"
+            self.assertEqual(e.args[0], expected)
+            self.assertFalse(os.path.exists(tf_name))
+
     def test_same_paths_are_equal(self):
         conf1 = self._makeOne('/tmp/foo.sock')
         conf2 = self._makeOne('/tmp/foo.sock')