def test_transport(self): url = base_url + '/000/' + str(uuid.uuid4()) r = GET_async(url + '/eventsource') self.assertEqual(r.status, 200) self.assertEqual(r['Content-Type'], 'text/event-stream; charset=UTF-8') # As EventSource is requested using GET we must be very # carefull not to allow it being cached. self.verify_not_cached(r) self.verify_cookie(r) # The transport must first send a new line prelude, due to a # bug in Opera. self.assertEqual(r.read(), '\r\n') self.assertEqual(r.read(), 'data: o\r\n\r\n') r1 = POST(url + '/xhr_send', body='["x"]') self.assertFalse(r1.body) self.assertEqual(r1.status, 204) self.assertEqual(r.read(), 'data: a["x"]\r\n\r\n') # This protocol doesn't allow binary data and we need to # specially treat leading space, new lines and things like # \x00. But, now the protocol json-encodes everything, so # there is no way to trigger this case. r1 = POST(url + '/xhr_send', body=r'[" \u0000\n\r "]') self.assertFalse(r1.body) self.assertEqual(r1.status, 204) self.assertEqual(r.read(), 'data: a[" \\u0000\\n\\r "]\r\n\r\n') r.close()
def test_transport(self): url = base_url + '/000/' + str(uuid.uuid4()) r = GET_async(url + '/htmlfile?c=%63allback') self.assertEqual(r.status, 200) self.assertEqual(r['Content-Type'], 'text/html; charset=UTF-8') # As HtmlFile is requested using GET we must be very careful # not to allow it being cached. self.verify_not_cached(r) self.verify_cookie(r) d = r.read() self.assertEqual(d.strip(), self.head % ('callback',)) self.assertGreater(len(d), 1024) self.assertEqual(r.read(), '<script>\np("o");\n</script>\r\n') r1 = POST(url + '/xhr_send', body='["x"]') self.assertFalse(r1.body) self.assertEqual(r1.status, 204) self.assertEqual(r.read(), '<script>\np("a[\\"x\\"]");\n</script>\r\n') r.close()