Преглед на файлове

add some more httpclient tests

Chris McDonough преди 11 години
родител
ревизия
bc53f526a3
променени са 1 файла, в които са добавени 65 реда и са изтрити 0 реда
  1. 65 0
      supervisor/tests/test_http_client.py

+ 65 - 0
supervisor/tests/test_http_client.py

@@ -221,6 +221,67 @@ class HTTPHandlerTests(unittest.TestCase):
         inst = self._makeOne()
         inst.feed('data')
         self.assertEqual(inst.listener.fed_data, ['data'])
+
+    def test_collect_incoming_data_part_is_body(self):
+        inst = self._makeOne()
+        inst.part = inst.body
+        inst.buffer = 'abc'
+        inst.collect_incoming_data('foo')
+        self.assertEqual(inst.listener.fed_data, ['abcfoo'])
+        self.assertEqual(inst.buffer, '')
+
+    def test_collect_incoming_data_part_is_not_body(self):
+        inst = self._makeOne()
+        inst.part = None
+        inst.buffer = 'abc'
+        inst.collect_incoming_data('foo')
+        self.assertEqual(inst.listener.fed_data, [])
+        self.assertEqual(inst.buffer, 'abcfoo')
+
+    def test_found_terminator(self):
+        inst = self._makeOne()
+        parted = []
+        inst.part = lambda: parted.append(True)
+        inst.buffer = None
+        inst.found_terminator()
+        self.assertEqual(parted, [True])
+        self.assertEqual(inst.buffer, '')
+
+    def test_ignore(self):
+        inst = self._makeOne()
+        inst.buffer = None
+        inst.ignore()
+        self.assertEqual(inst.buffer, '')
+
+    def test_status_line_not_startswith_http(self):
+        inst = self._makeOne()
+        inst.buffer = 'NOTHTTP/1.0 200 OK'
+        self.assertRaises(ValueError, inst.status_line)
+
+    def test_status_line_200(self):
+        inst = self._makeOne()
+        inst.buffer = 'HTTP/1.0 200 OK'
+        version, status, reason = inst.status_line()
+        self.assertEqual(version, 'HTTP/1.0')
+        self.assertEqual(status, 200)
+        self.assertEqual(reason, 'OK')
+        self.assertEqual(inst.part, inst.headers)
+
+    def test_status_line_not_200(self):
+        inst = self._makeOne()
+        inst.buffer = 'HTTP/1.0 201 OK'
+        closed = []
+        inst.close = lambda: closed.append(True)
+        version, status, reason = inst.status_line()
+        self.assertEqual(version, 'HTTP/1.0')
+        self.assertEqual(status, 201)
+        self.assertEqual(reason, 'OK')
+        self.assertEqual(inst.part, inst.ignore)
+        self.assertEqual(
+            inst.listener.error_msg,
+            'Cannot read, status code 201'
+            )
+        self.assertEqual(closed, [True])
         
 class DummyListener(object):
     closed = None
@@ -239,6 +300,10 @@ class DummyListener(object):
     def feed(self, url, data):
         self.fed_data.append(data)
 
+    def status(self, url, int):
+        self.status_url = url
+        self.status_int = int
+
 class DummySocket(object):
     closed = False
     def close(self):