示例#1
0
 def test_release_next(self):
     reader = multipart.MultipartReader(
         {CONTENT_TYPE: 'multipart/related;boundary=":"'},
         Stream(b'--:\r\n\r\necho\r\n--:--'))
     reader.release()
     self.assertTrue(reader.at_eof())
     with self.assertRaises(StopIteration):
         reader.next()
示例#2
0
 def test_release_release(self):
     reader = multipart.MultipartReader(
         {CONTENT_TYPE: 'multipart/related;boundary=":"'},
         Stream(b'--:\r\n\r\necho\r\n--:--'))
     reader.release()
     self.assertTrue(reader.at_eof())
     reader.release()
     self.assertTrue(reader.at_eof())
示例#3
0
 def test_read_chunk_doesnt_breaks_reader(self):
     reader = multipart.MultipartReader(
         {CONTENT_TYPE: 'multipart/related;boundary=":"'},
         Stream(b'--:\r\n'
                b'Content-Length: 4\r\n\r\n'
                b'test'
                b'\r\n--:\r\n'
                b'Content-Length: 6\r\n\r\n'
                b'passed'
                b'\r\n--:--'))
     for part in reader:
         while not part.at_eof():
             part.read_chunk(3)
示例#4
0
 def test_dispatch_multipart(self):
     reader = multipart.MultipartReader(
         {CONTENT_TYPE: 'multipart/related;boundary=":"'},
         Stream(b'----:--\r\n'
                b'\r\n'
                b'test\r\n'
                b'----:--\r\n'
                b'\r\n'
                b'passed\r\n'
                b'----:----\r\n'
                b'--:--'))
     res = reader._get_part_reader(
         {CONTENT_TYPE: 'multipart/related;boundary=--:--'})
     self.assertIsInstance(res, reader.__class__)
示例#5
0
 def test_second_next_releases_previous_object(self):
     reader = multipart.MultipartReader(
         {CONTENT_TYPE: 'multipart/related;boundary=":"'},
         Stream(b'--:\r\n'
                b'\r\n'
                b'test\r\n'
                b'--:\r\n'
                b'\r\n'
                b'passed\r\n'
                b'--:--'))
     first = reader.next()
     self.assertIsInstance(first, multipart.BodyPartReader)
     second = reader.next()
     self.assertTrue(first.at_eof())
     self.assertFalse(second.at_eof())
示例#6
0
 def test_release(self):
     reader = multipart.MultipartReader(
         {CONTENT_TYPE: 'multipart/mixed;boundary=":"'},
         Stream(b'--:\r\n'
                b'Content-Type: multipart/related;boundary=--:--\r\n'
                b'\r\n'
                b'----:--\r\n'
                b'\r\n'
                b'test\r\n'
                b'----:--\r\n'
                b'\r\n'
                b'passed\r\n'
                b'----:----\r\n'
                b'--:--'))
     reader.release()
     self.assertTrue(reader.at_eof())
示例#7
0
    def test_release_without_read_the_last_object(self):
        reader = multipart.MultipartReader(
            {CONTENT_TYPE: 'multipart/related;boundary=":"'},
            Stream(b'--:\r\n'
                   b'\r\n'
                   b'test\r\n'
                   b'--:\r\n'
                   b'\r\n'
                   b'passed\r\n'
                   b'--:--'))
        first = reader.next()
        second = reader.next()

        with self.assertRaises(StopIteration):
            reader.next()

        self.assertTrue(first.at_eof())
        self.assertTrue(second.at_eof())
示例#8
0
    def test_dispatch_custom_multipart_reader(self):
        class CustomReader(multipart.MultipartReader):
            pass

        reader = multipart.MultipartReader(
            {CONTENT_TYPE: 'multipart/related;boundary=":"'},
            Stream(b'----:--\r\n'
                   b'\r\n'
                   b'test\r\n'
                   b'----:--\r\n'
                   b'\r\n'
                   b'passed\r\n'
                   b'----:----\r\n'
                   b'--:--'))
        reader.multipart_reader_cls = CustomReader
        res = reader._get_part_reader(
            {CONTENT_TYPE: 'multipart/related;boundary=--:--'})
        self.assertIsInstance(res, CustomReader)
示例#9
0
 def test_invalid_boundary(self):
     reader = multipart.MultipartReader(
         {CONTENT_TYPE: 'multipart/related;boundary=":"'},
         Stream(b'---:\r\n\r\necho\r\n---:--'))
     with self.assertRaises(ValueError):
         reader.next()
示例#10
0
 def test_emit_next(self):
     reader = multipart.MultipartReader(
         {CONTENT_TYPE: 'multipart/related;boundary=":"'},
         Stream(b'--:\r\n\r\necho\r\n--:--'))
     res = reader.next()
     self.assertIsInstance(res, reader.part_reader_cls)
示例#11
0
 def test_dispatch_bodypart(self):
     reader = multipart.MultipartReader(
         {CONTENT_TYPE: 'multipart/related;boundary=":"'},
         Stream(b'--:\r\n\r\necho\r\n--:--'))
     res = reader._get_part_reader({CONTENT_TYPE: 'text/plain'})
     self.assertIsInstance(res, reader.part_reader_cls)