def test_header(self): header = b'\r\n'.join([ b'GET /foo?bar=baz&spam=eggs&chips HTTP/1.1', b'foo: bar', b'' ]) + b'\r\n' a_wait(self.req._read(FakeReader(header))) self.assertEqual(self.req.method, 'GET') self.assertEqual(self.req.version, 'HTTP/1.1') self.assertEqual(self.req.path, '/foo') self.assertEqual(self.req.query, { 'bar': 'baz', 'spam': 'eggs', 'chips': None }) self.assertEqual(self.req.headers, {'foo': 'bar'}) self.assertEqual(self.req.data, b'')
def test_header(self): res = grole.Response(None, 123, 'foo', {'foo': 'bar'}, 'bar') writer = FakeWriter() a_wait(res._write(writer)) for line in writer.data.split(b'\r\n'): if line.startswith(b'bar'): self.assertEqual(line, b'bar 123 foo') elif line.startswith(b'Content-Type'): self.assertEqual(line, b'Content-Type: text/plain') elif line.startswith(b'Content-Length'): self.assertEqual(line, b'Content-Length: 0') elif line.startswith(b'foo'): self.assertEqual(line, b'foo: bar') elif line.startswith(b'Server'): self.assertEqual(line, b'Server: grole/' + grole.__version__.encode()) else: if line != b'': self.fail('Extra data: ' + line.decode())
def test_buffer_body_not_enough_data(self): reader = FakeReader(b'foo') self.req.headers = {'Content-Length': 4} self.req.data = b'' with self.assertRaises(EOFError): a_wait(self.req._buffer_body(reader))
def test_buffer_body_content(self): reader = FakeReader(b'foobar') self.req.headers = {'Content-Length': 3} self.req.data = b'' a_wait(self.req._buffer_body(reader)) self.assertEqual(b'foo', self.req.data)
def test_readline_raises_eof(self): reader = FakeReader(b'') with self.assertRaises(EOFError): line = a_wait(self.req._readline(reader))
def test_readline_returns_data(self): reader = FakeReader(b'foo\r\nnope') line = a_wait(self.req._readline(reader)) self.assertEqual(line, b'foo\r\n')
def test_data(self): writer = FakeWriter() a_wait(self.res._write(writer)) self.assertEqual(writer.data, b'{"foo": "bar"}')
def test_data(self): res = grole.ResponseBody(b'foo', content_type='bar') writer = FakeWriter() a_wait(res._write(writer)) self.assertEqual(writer.data, b'foo')
def test_data(self): writer = FakeWriter() a_wait(self.res._write(writer)) self.assertEqual(writer.data, b'4\r\nfoo\n\r\n0\r\n\r\n')