def test_bytes_operations(self): foo_val = '\xff' h = wsgi.EnvironHeaders({ 'HTTP_X_FOO': foo_val }) self.assertEqual(h.get('x-foo', as_bytes=True), b'\xff') self.assertEqual(h.get('x-foo'), u'\xff')
def test_basic_interface(self): # this happens in multiple WSGI servers because they # use a vary naive way to convert the headers; broken_env = { 'HTTP_CONTENT_TYPE': 'text/html', 'CONTENT_TYPE': 'text/html', 'HTTP_CONTENT_LENGTH': '0', 'CONTENT_LENGTH': '0', 'HTTP_ACCEPT': '*', 'wsgi.version': (1, 0) } headers = wsgi.EnvironHeaders(broken_env) self.assertTrue(headers) self.assertEqual(len(headers), 3) self.assertEqual(sorted(headers), [('Accept', '*'), ('Content-Length', '0'), ('Content-Type', 'text/html')]) self.assertFalse(wsgi.EnvironHeaders({'wsgi.version': (1, 0)})) self.assertEqual(len(wsgi.EnvironHeaders({'wsgi.version': (1, 0)})), 0)
def test_return_type_is_unicode(self): # environ contains native strings; we return unicode headers = wsgi.EnvironHeaders({ 'HTTP_FOO': '\xe2\x9c\x93', 'CONTENT_TYPE': 'text/plain', }) self.assertEqual(headers['Foo'], u"\xe2\x9c\x93") self.assertIsInstance(headers['Foo'], str) self.assertIsInstance(headers['Content-Type'], str) iter_output = dict(iter(headers)) self.assertEqual(iter_output['Foo'], u"\xe2\x9c\x93") self.assertIsInstance(iter_output['Foo'], str) self.assertIsInstance(iter_output['Content-Type'], str)