Example #1
0
    def _process_response(self, request, response):
        Logger.debug('Process response')
        with silk_meta_profiler():
            collector = DataCollector()
            collector.stop_python_profiler()
            silk_request = collector.request

            if silk_request:
                silk_request = self.edit_request_model_function(silk_request, request)
                silk_response = ResponseModelFactory(response).construct_response_model()
                silk_response.save()
                silk_request.end_time = timezone.now()
                collector.finalise()
            else:
                Logger.error(
                    'No request model was available when processing response. '
                    'Did something go wrong in process_request/process_view?'
                    '\n' + str(request) + '\n\n' + str(response)
                )
        # Need to save the data outside the silk_meta_profiler
        # Otherwise the  meta time collected in the context manager
        # is not taken in account
        if silk_request:
            silk_request.save()
        Logger.debug('Process response done.')
Example #2
0
 def test_plain(self):
     mock = Mock()
     mock._headers = {HTTP_CONTENT_TYPE: 'text/plain'}
     mock.content = 'sdfsdf'
     mock.get = mock._headers.get
     factory = ResponseModelFactory(mock)
     body, content = factory.body()
     self.assertFalse(body)
     self.assertEqual(content, mock.content)
Example #3
0
 def test_plain(self):
     mock = Mock()
     mock.headers = {HTTP_CONTENT_TYPE: 'text/plain'}
     mock.content = 'sdfsdf'
     mock.get = mock.headers.get
     factory = ResponseModelFactory(mock)
     body, content = factory.body()
     self.assertFalse(body)
     self.assertEqual(content, mock.content)
Example #4
0
 def test_utf_plain(self):
     mock = Mock()
     mock._headers = {HTTP_CONTENT_TYPE: 'text/plain; charset=UTF-8'}
     mock.content = u'语'
     mock.get = mock._headers.get
     factory = ResponseModelFactory(mock)
     body, content = factory.body()
     self.assertFalse(body)
     self.assertEqual(content, mock.content)
Example #5
0
 def test_utf_json_encoded(self):
     mock = Mock()
     mock._headers = {HTTP_CONTENT_TYPE: 'application/json; charset=UTF-8'}
     d = {'x': u'语'}
     mock.content = json.dumps(d)
     mock.get = mock._headers.get
     factory = ResponseModelFactory(mock)
     body, content = factory.body()
     self.assertDictEqual(json.loads(body), d)
     self.assertEqual(content, mock.content)
Example #6
0
 def test_utf_json_not_encoded(self):
     mock = Mock()
     mock._headers = {HTTP_CONTENT_TYPE: 'application/json; charset=UTF-8'}
     d = {'x': u'语'}
     mock.content = json.dumps(d)
     mock.get = mock._headers.get
     factory = ResponseModelFactory(mock)
     body, content = factory.body()
     self.assertDictEqual(json.loads(body), d)
     self.assertEqual(content, mock.content)
Example #7
0
 def test_invalid_encoding_json(self):
     mock = Mock()
     mock._headers = {HTTP_CONTENT_TYPE: 'application/json; charset=asdas-8'}
     d = {'x': u'语'}
     mock.content = json.dumps(d).encode('UTF-8')
     mock.get = mock._headers.get
     factory = ResponseModelFactory(mock)
     body, content = factory.body()
     self.assertDictEqual(json.loads(body, encoding='UTF-8'), d)
     self.assertEqual(mock.content.decode('UTF-8'), content)
Example #8
0
 def test_utf_json_encoded_no_charset(self):
     """default to UTF-8"""
     mock = Mock()
     mock._headers = {HTTP_CONTENT_TYPE: 'application/json'}
     d = {'x': u'语'}
     mock.content = json.dumps(d).encode('UTF-8')
     mock.get = mock._headers.get
     factory = ResponseModelFactory(mock)
     body, content = factory.body()
     self.assertDictEqual(json.loads(body), d)
     self.assertEqual(content, mock.content.decode('UTF-8'))
Example #9
0
 def test_utf_json_encoded_no_charset(self):
     """default to UTF-8"""
     mock = Mock()
     mock._headers = {HTTP_CONTENT_TYPE: 'application/json'}
     d = {'x': u'语'}
     mock.content = json.dumps(d).encode('UTF-8')
     mock.get = mock._headers.get
     factory = ResponseModelFactory(mock)
     body, content = factory.body()
     self.assertDictEqual(json.loads(body), d)
     self.assertEqual(content, mock.content.decode('UTF-8'))
 def test_bytes_compat(self):
     """
     Test ResponseModelFactory formats json with bytes content
     """
     mock = Mock()
     mock.headers = {HTTP_CONTENT_TYPE: 'application/json;'}
     d = {'k': 'v'}
     mock.content = bytes(json.dumps(d), 'utf-8')
     mock.get = mock.headers.get
     factory = ResponseModelFactory(mock)
     body, content = factory.body()
     self.assertDictEqual(json.loads(body), d)
Example #11
0
 def test_invalid_encoding_json(self):
     mock = Mock()
     mock._headers = {
         HTTP_CONTENT_TYPE: 'application/json; charset=asdas-8'
     }
     d = {'x': u'语'}
     mock.content = json.dumps(d).encode('UTF-8')
     mock.get = mock._headers.get
     factory = ResponseModelFactory(mock)
     body, content = factory.body()
     self.assertDictEqual(json.loads(body, encoding='UTF-8'), d)
     self.assertEqual(mock.content.decode('UTF-8'), content)
Example #12
0
 def _process_response(self, response):
     with silk_meta_profiler():
         collector = DataCollector()
         silk_request = collector.request
         if silk_request:
             silk_response = ResponseModelFactory(response).construct_response_model()
             silk_response.save()
             silk_request.end_time = timezone.now()
             collector.finalise()
             silk_request.save()
         else:
             Logger.error('No request model was available when processing response. Did something go wrong in process_request/process_view?')
Example #13
0
 def test_python2_str_content_compat(self):
     """
     Test ResponseModelFactory formats json for str
     """
     if sys.version_info < (3, 0, 0):
         mock = Mock()
         mock._headers = {HTTP_CONTENT_TYPE: 'application/json;'}
         d = {'k': 'v'}
         mock.content = str(json.dumps(d))
         mock.get = mock._headers.get
         factory = ResponseModelFactory(mock)
         body, content = factory.body()
         self.assertDictEqual(json.loads(body), d)
Example #14
0
 def test_python2_unicode_content_compat(self):
     """
     Test ResponseModelFactory formats json for unicode
     """
     if sys.version_info < (3, 0, 0):
         mock = Mock()
         mock._headers = {HTTP_CONTENT_TYPE: 'application/json;'}
         d = u'{"k": "v"}'
         mock.content = d
         mock.get = mock._headers.get
         factory = ResponseModelFactory(mock)
         body, content = factory.body()
         self.assertDictEqual(json.loads(body), json.loads(d))
Example #15
0
 def test_python2_str_content_compat(self):
     """
     Test ResponseModelFactory formats json for str
     """
     if sys.version_info < (3, 0, 0):
         mock = Mock()
         mock._headers = {HTTP_CONTENT_TYPE: 'application/json;'}
         d = {'k': 'v'}
         mock.content = str(json.dumps(d))
         mock.get = mock._headers.get
         factory = ResponseModelFactory(mock)
         body, content = factory.body()
         self.assertDictEqual(json.loads(body), d)
Example #16
0
 def test_python2_unicode_content_compat(self):
     """
     Test ResponseModelFactory formats json for unicode
     """
     if sys.version_info < (3, 0, 0):
         mock = Mock()
         mock._headers = {HTTP_CONTENT_TYPE: 'application/json;'}
         d = u'{"k": "v"}'
         mock.content = d
         mock.get = mock._headers.get
         factory = ResponseModelFactory(mock)
         body, content = factory.body()
         self.assertDictEqual(json.loads(body), json.loads(d))
Example #17
0
 def test_python2_bytes_content_compat(self):
     """
     Test that ResponseModelFactory returns correct json string for a
     bytestring content
     """
     if sys.version_info < (3, 0, 0):
         mock = Mock()
         mock._headers = {HTTP_CONTENT_TYPE: 'application/json;'}
         d = {'k': 'v'}
         mock.content = bytes(json.dumps(d))
         mock.get = mock._headers.get
         factory = ResponseModelFactory(mock)
         body, content = factory.body()
         self.assertDictEqual(json.loads(body), d)
Example #18
0
 def test_python2_bytes_content_compat(self):
     """
     Test that ResponseModelFactory returns correct json string for a
     bytestring content
     """
     if sys.version_info < (3, 0, 0):
         mock = Mock()
         mock._headers = {HTTP_CONTENT_TYPE: 'application/json;'}
         d = {'k': 'v'}
         mock.content = bytes(json.dumps(d))
         mock.get = mock._headers.get
         factory = ResponseModelFactory(mock)
         body, content = factory.body()
         self.assertDictEqual(json.loads(body), d)
Example #19
0
 def _process_response(self, response):
     with silk_meta_profiler():
         collector = DataCollector()
         collector.stop_python_profiler()
         silk_request = collector.request
         if silk_request:
             silk_response = ResponseModelFactory(
                 response).construct_response_model()
             silk_response.save()
             silk_request.end_time = timezone.now()
             collector.finalise()
             silk_request.save()
         else:
             Logger.error(
                 'No request model was available when processing response. Did something go wrong in process_request/process_view?'
             )
Example #20
0
 def _process_response(self, response):
     with silk_meta_profiler():
         collector = DataCollector()
         collector.stop_python_profiler()
         silk_request = collector.request
         if silk_request:
             try:
                 silk_response = ResponseModelFactory(response).construct_response_model()
             except IntegrityError:
                 raise #collector.finalise()
             else:
                 silk_response.save()
                 silk_request.end_time = datetime.datetime.now()
                 collector.finalise()
                 silk_request.save()
         else:
             Logger.error('No request model was available when processing response. Did something go wrong in process_request/process_view?')
Example #21
0
 def _process_response(self, response):
     Logger.debug('Process response')
     with silk_meta_profiler():
         collector = DataCollector()
         collector.stop_python_profiler()
         silk_request = collector.request
         if silk_request:
             silk_response = ResponseModelFactory(response).construct_response_model()
             silk_response.save()
         else:
             Logger.error(
                 'No request model was available when processing response. Did something go wrong in process_request/process_view?')
     # Need to save the data outside the silk_meta_profiler
     # Otherwise the  meta time collected in the context manager
     # is not taken in account
     if silk_request:
         silk_request.save()
     Logger.debug('Process response done.')
Example #22
0
 def test_max_response(self):
     SilkyConfig().SILKY_MAX_RESPONSE_BODY_SIZE = 10  # 10kb
     mock_response = Mock()
     headers = {'CONTENT_TYPE': 'text/plain'}
     mock_response.get = headers.get
     mock_response._headers = headers
     mock_response.content = 'a'.encode('ascii') * 1024 * 100  # 100kb
     mock_response.status_code = 200
     response_model = ResponseModelFactory(mock_response).construct_response_model()
     self.assertFalse(response_model.raw_body)
 def test_no_max_response(self):
     SilkyConfig().SILKY_MAX_RESPONSE_BODY_SIZE = -1
     mock_response = Mock()
     headers = {'CONTENT_TYPE': 'text/plain'}
     mock_response.get = headers.get
     mock_response.headers = headers
     mock_response.content = b'a' * 1000  # 1000 bytes?
     mock_response.status_code = 200
     response_model = ResponseModelFactory(
         mock_response).construct_response_model()
     self.assertTrue(response_model.raw_body)