Ejemplo n.º 1
0
def test_multi_part_line_breaks():
    data = "abcdef\r\nghijkl\r\nmnopqrstuvwxyz\r\nABCDEFGHIJK"
    test_stream = NativeStringIO(data)
    lines = list(wsgi.make_line_iter(test_stream, limit=len(data), buffer_size=16))
    assert lines == ["abcdef\r\n", "ghijkl\r\n", "mnopqrstuvwxyz\r\n", "ABCDEFGHIJK"]

    data = "abc\r\nThis line is broken by the buffer length.\r\nFoo bar baz"
    test_stream = NativeStringIO(data)
    lines = list(wsgi.make_line_iter(test_stream, limit=len(data), buffer_size=24))
    assert lines == [
        "abc\r\n",
        "This line is broken by the buffer length.\r\n",
        "Foo bar baz",
    ]
Ejemplo n.º 2
0
    def test_multi_part_line_breaks(self):
        data = 'abcdef\r\nghijkl\r\nmnopqrstuvwxyz\r\nABCDEFGHIJK'
        test_stream = NativeStringIO(data)
        lines = list(wsgi.make_line_iter(test_stream, limit=len(data),
                                         buffer_size=16))
        self.assert_equal(lines, ['abcdef\r\n', 'ghijkl\r\n',
                                  'mnopqrstuvwxyz\r\n', 'ABCDEFGHIJK'])

        data = 'abc\r\nThis line is broken by the buffer length.' \
            '\r\nFoo bar baz'
        test_stream = NativeStringIO(data)
        lines = list(wsgi.make_line_iter(test_stream, limit=len(data),
                                         buffer_size=24))
        self.assert_equal(lines, ['abc\r\n', 'This line is broken by the '
                                  'buffer length.\r\n', 'Foo bar baz'])
Ejemplo n.º 3
0
def test_multi_part_line_breaks_problematic():
    data = 'abc\rdef\r\nghi'
    for x in range(1, 10):
        test_stream = NativeStringIO(data)
        lines = list(
            wsgi.make_line_iter(test_stream, limit=len(data), buffer_size=4))
        assert lines == ['abc\r', 'def\r\n', 'ghi']
Ejemplo n.º 4
0
def test_lines_longer_buffer_size():
    data = '1234567890\n1234567890\n'
    for bufsize in range(1, 15):
        lines = list(
            wsgi.make_line_iter(NativeStringIO(data),
                                limit=len(data),
                                buffer_size=4))
        assert lines == ['1234567890\n', '1234567890\n']
Ejemplo n.º 5
0
 def test_lines_longer_buffer_size(self):
     data = '1234567890\n1234567890\n'
     for bufsize in xrange(1, 15):
         lines = list(
             wsgi.make_line_iter(NativeStringIO(data),
                                 limit=len(data),
                                 buffer_size=4))
         self.assert_equal(lines, ['1234567890\n', '1234567890\n'])
Ejemplo n.º 6
0
def test_lines_longer_buffer_size_cap():
    data = "1234567890\n1234567890\n"
    for bufsize in range(1, 15):
        lines = list(
            wsgi.make_line_iter(
                NativeStringIO(data),
                limit=len(data),
                buffer_size=bufsize,
                cap_at_buffer=True,
            )
        )
        assert len(lines[0]) == bufsize or lines[0].endswith("\n")
Ejemplo n.º 7
0
def test_streamed_url_encoding():
    out = NativeStringIO()
    urls.url_encode_stream({'foo': 'bar 45'}, out)
    strict_eq(out.getvalue(), 'foo=bar+45')

    d = {'foo': 1, 'bar': 23, 'blah': u'Hänsel'}
    out = NativeStringIO()
    urls.url_encode_stream(d, out, sort=True)
    strict_eq(out.getvalue(), 'bar=23&blah=H%C3%A4nsel&foo=1')
    out = NativeStringIO()
    urls.url_encode_stream(d, out, sort=True, separator=u';')
    strict_eq(out.getvalue(), 'bar=23;blah=H%C3%A4nsel;foo=1')

    gen = urls.url_encode_stream(d, sort=True)
    strict_eq(next(gen), 'bar=23')
    strict_eq(next(gen), 'blah=H%C3%A4nsel')
    strict_eq(next(gen), 'foo=1')
    pytest.raises(StopIteration, lambda: next(gen))
Ejemplo n.º 8
0
def test_streamed_url_encoding():
    out = NativeStringIO()
    urls.url_encode_stream({"foo": "bar 45"}, out)
    strict_eq(out.getvalue(), "foo=bar+45")

    d = {"foo": 1, "bar": 23, "blah": u"Hänsel"}
    out = NativeStringIO()
    urls.url_encode_stream(d, out, sort=True)
    strict_eq(out.getvalue(), "bar=23&blah=H%C3%A4nsel&foo=1")
    out = NativeStringIO()
    urls.url_encode_stream(d, out, sort=True, separator=u";")
    strict_eq(out.getvalue(), "bar=23;blah=H%C3%A4nsel;foo=1")

    gen = urls.url_encode_stream(d, sort=True)
    strict_eq(next(gen), "bar=23")
    strict_eq(next(gen), "blah=H%C3%A4nsel")
    strict_eq(next(gen), "foo=1")
    pytest.raises(StopIteration, lambda: next(gen))
Ejemplo n.º 9
0
    def test_streamed_url_encoding(self):
        out = NativeStringIO()
        urls.url_encode_stream({'foo': 'bar 45'}, out)
        self.assert_strict_equal(out.getvalue(), 'foo=bar+45')

        d = {'foo': 1, 'bar': 23, 'blah': u'Hänsel'}
        out = NativeStringIO()
        urls.url_encode_stream(d, out, sort=True)
        self.assert_strict_equal(out.getvalue(), 'bar=23&blah=H%C3%A4nsel&foo=1')
        out = NativeStringIO()
        urls.url_encode_stream(d, out, sort=True, separator=u';')
        self.assert_strict_equal(out.getvalue(), 'bar=23;blah=H%C3%A4nsel;foo=1')

        gen = urls.url_encode_stream(d, sort=True)
        self.assert_strict_equal(next(gen), 'bar=23')
        self.assert_strict_equal(next(gen), 'blah=H%C3%A4nsel')
        self.assert_strict_equal(next(gen), 'foo=1')
        self.assert_raises(StopIteration, lambda: next(gen))
Ejemplo n.º 10
0
def test_multi_part_line_breaks_problematic():
    data = "abc\rdef\r\nghi"
    for _ in range(1, 10):
        test_stream = NativeStringIO(data)
        lines = list(wsgi.make_line_iter(test_stream, limit=len(data), buffer_size=4))
        assert lines == ["abc\r", "def\r\n", "ghi"]