def test_request_capture(self): if django.VERSION[:2] < (1, 3): return request = WSGIRequest(environ={ 'wsgi.input': six.BytesIO(), 'REQUEST_METHOD': 'POST', 'SERVER_NAME': 'testserver', 'SERVER_PORT': '80', 'CONTENT_TYPE': 'text/html', 'ACCEPT': 'text/html', }) request.read(1) self.opbeat.capture('Message', message='foo', request=request) self.assertEquals(len(self.opbeat.events), 1) event = self.opbeat.events.pop(0) self.assertTrue('http' in event) http = event['http'] self.assertEquals(http['method'], 'POST') self.assertEquals(http['data'], '<unavailable>') self.assertTrue('headers' in http) headers = http['headers'] self.assertTrue('Content-Type' in headers, headers.keys()) self.assertEquals(headers['Content-Type'], 'text/html') env = http['env'] self.assertTrue('SERVER_NAME' in env, env.keys()) self.assertEquals(env['SERVER_NAME'], 'testserver') self.assertTrue('SERVER_PORT' in env, env.keys()) self.assertEquals(env['SERVER_PORT'], '80')
def test_raw_post_data_partial_read(self): if django.VERSION[:2] < (1, 3): return v = six.b('{"foo": "bar"}') request = WSGIRequest( environ={ 'wsgi.input': six.BytesIO(v + six.b('\r\n\r\n')), 'REQUEST_METHOD': 'POST', 'SERVER_NAME': 'testserver', 'SERVER_PORT': '80', 'CONTENT_TYPE': 'application/octet-stream', 'CONTENT_LENGTH': len(v), 'ACCEPT': 'application/json', }) request.read(1) self.opbeat.capture('Message', message='foo', request=request) self.assertEquals(len(self.opbeat.events), 1) event = self.opbeat.events.pop(0) self.assertTrue('http' in event) http = event['http'] self.assertEquals(http['method'], 'POST') self.assertEquals(http['data'], '<unavailable>')
def test_post_raw_data(self): request = WSGIRequest(environ={ 'wsgi.input': six.BytesIO(six.b('foobar')), 'REQUEST_METHOD': 'POST', 'SERVER_NAME': 'testserver', 'SERVER_PORT': '80', 'CONTENT_TYPE': 'application/octet-stream', 'ACCEPT': 'application/json', 'CONTENT_LENGTH': '6', }) self.opbeat.capture('Message', message='foo', request=request) self.assertEquals(len(self.opbeat.events), 1) event = self.opbeat.events.pop(0) self.assertTrue('http' in event) http = event['http'] self.assertEquals(http['method'], 'POST') self.assertEquals(http['data'], six.b('foobar'))