Example #1
0
class ViewTests(TestCase):
    def setUp(self):
        # set up one, catch-all rule.
        self.rule = RuleSet(enabled=True)
        self.rule.save()

    def test_rules_match_response(self):
        url = reverse('test_response')
        response = self.client.get(url)
        self.assertTrue(response.has_header('X-Profiler-Duration'))
        record = ProfilingRecord.objects.get()
        self.assertIsNone(record.user)
        # session is save even if user is Anonymous
        self.assertNotEqual(record.session_key, '')
        self.assertEqual(record.http_user_agent, "(u'',)")
        self.assertEqual(record.http_referer, u'')
        self.assertEqual(record.http_method, 'GET')
        self.assertEqual(record.view_func_name, 'test_response')
        self.assertEqual(str(record.duration), response['X-Profiler-Duration'])
        self.assertEqual(record.response_status_code, 200)

    def test_rules_match_view(self):
        url = reverse('test_view')
        response = self.client.get(url)
        self.assertTrue(response.has_header('X-Profiler-Duration'))
        record = ProfilingRecord.objects.get()
        self.assertIsNone(record.user)
        self.assertNotEqual(record.session_key, '')
        self.assertEqual(record.http_user_agent, "(u'',)")
        self.assertEqual(record.http_referer, u'')
        self.assertEqual(record.http_method, 'GET')
        self.assertEqual(record.view_func_name, 'test_view')
        self.assertEqual(str(record.duration), response['X-Profiler-Duration'])
        self.assertEqual(record.response_status_code, 200)

    def test_rules_match_view_no_session(self):
        url = reverse('test_view')
        settings.STORE_ANONYMOUS_SESSIONS = False
        response = self.client.get(url)
        self.assertTrue(response.has_header('X-Profiler-Duration'))
        record = ProfilingRecord.objects.get()
        self.assertIsNone(record.user)
        self.assertEqual(record.session_key, '')

    def test_no_rules_match(self):
        self.rule.delete()
        url = reverse('test_response')
        response = self.client.get(url)
        self.assertFalse(response.has_header('X-Profiler-Duration'))
        self.assertFalse(ProfilingRecord.objects.exists())

    def test_404(self):
        # Validate that the profiler handles an error page
        url = reverse('test_404')
        response = self.client.get(url)
        self.assertTrue(response.has_header('X-Profiler-Duration'))
        self.assertEqual(ProfilingRecord.objects.get().response_status_code,
                         404)
Example #2
0
class ViewTests(TestCase):

    def setUp(self):
        # set up one, catch-all rule.
        self.rule = RuleSet(enabled=True)
        self.rule.save()

    def test_rules_match_response(self):
        url = reverse('test_response')
        response = self.client.get(url)
        self.assertTrue(response.has_header('X-Profiler-Duration'))
        record = ProfilingRecord.objects.get()
        self.assertIsNone(record.user)
        # session is save even if user is Anonymous
        self.assertNotEqual(record.session_key, '')
        self.assertEqual(record.http_user_agent, "")
        self.assertEqual(record.http_referer, u'')
        self.assertEqual(record.http_method, 'GET')
        self.assertEqual(record.view_func_name, 'test_response')
        self.assertEqual(str(record.duration), response['X-Profiler-Duration'])
        self.assertEqual(record.response_status_code, 200)

    def test_rules_match_view(self):
        url = reverse('test_view')
        response = self.client.get(url)
        self.assertTrue(response.has_header('X-Profiler-Duration'))
        record = ProfilingRecord.objects.get()
        self.assertIsNone(record.user)
        self.assertNotEqual(record.session_key, '')
        self.assertEqual(record.http_user_agent, "")
        self.assertEqual(record.http_referer, u'')
        self.assertEqual(record.http_method, 'GET')
        self.assertEqual(record.view_func_name, 'test_view')
        self.assertEqual(str(record.duration), response['X-Profiler-Duration'])
        self.assertEqual(record.response_status_code, 200)

    def test_rules_match_view_no_session(self):
        url = reverse('test_view')
        settings.STORE_ANONYMOUS_SESSIONS = False
        response = self.client.get(url)
        self.assertTrue(response.has_header('X-Profiler-Duration'))
        record = ProfilingRecord.objects.get()
        self.assertIsNone(record.user)
        self.assertEqual(record.session_key, '')

    def test_no_rules_match(self):
        self.rule.delete()
        url = reverse('test_response')
        response = self.client.get(url)
        self.assertFalse(response.has_header('X-Profiler-Duration'))
        self.assertFalse(ProfilingRecord.objects.exists())

    def test_404(self):
        # Validate that the profiler handles an error page
        url = reverse('test_404')
        response = self.client.get(url)
        self.assertTrue(response.has_header('X-Profiler-Duration'))
        self.assertEqual(ProfilingRecord.objects.get().response_status_code, 404)
Example #3
0
    def test_process_response(self):

        request = self.factory.get('/')
        middleware = ProfilingMiddleware()
        with self.assertRaises(AssertionError):
            middleware.process_response(request, None)

        # try no matching rules
        request.profiler = ProfilingRecord().start()
        response = middleware.process_response(request, MockResponse(200))
        self.assertEqual(response.status_code, 200)
        self.assertFalse(hasattr(request, 'profiler'))

        # try matching a rule, and checking response values
        r1 = RuleSet()
        r1.save()
        request.profiler = ProfilingRecord().start()
        response = middleware.process_response(request, MockResponse(200))
        self.assertIsNotNone(response)
        self.assertTrue(request.profiler.response_status_code, response.status_code)
        self.assertTrue(response['X-Profiler-Duration'], request.profiler.duration)
Example #4
0
    def test_process_response(self):

        request = self.factory.get('/')
        middleware = ProfilingMiddleware()
        with self.assertRaises(AssertionError):
            middleware.process_response(request, None)

        # try no matching rules
        request.profiler = ProfilingRecord().start()
        response = middleware.process_response(request, MockResponse(200))
        self.assertEqual(response.status_code, 200)
        self.assertFalse(hasattr(request, 'profiler'))

        # try matching a rule, and checking response values
        r1 = RuleSet()
        r1.save()
        request.profiler = ProfilingRecord().start()
        response = middleware.process_response(request, MockResponse(200))
        self.assertIsNotNone(response)
        self.assertTrue(request.profiler.response_status_code, response.status_code)
        self.assertTrue(response['X-Profiler-Duration'], request.profiler.duration)
Example #5
0
    def test_process_response_signal_cancellation(self):

        request = self.factory.get('/')
        request.profiler = ProfilingRecord().start()
        middleware = ProfilingMiddleware()

        # try matching a rule, anc checking response values
        r1 = RuleSet()
        r1.save()

        self.signal_received = False

        def on_request_profile_complete(sender, **kwargs):
            self.signal_received = True
            kwargs.get('instance').cancel()

        request_profile_complete.connect(on_request_profile_complete)
        middleware.process_response(request, MockResponse(200))
        # because we returned False from the signal receiver,
        # we should have stopped profiling.
        self.assertTrue(self.signal_received)
        # because we called cancel(), the record is not saved.
        self.assertIsNone(request.profiler.id)
Example #6
0
    def test_process_response_signal_cancellation(self):

        request = self.factory.get('/')
        request.profiler = ProfilingRecord().start()
        middleware = ProfilingMiddleware()

        # try matching a rule, anc checking response values
        r1 = RuleSet()
        r1.save()

        self.signal_received = False

        def on_request_profile_complete(sender, **kwargs):
            self.signal_received = True
            kwargs.get('instance').cancel()

        request_profile_complete.connect(on_request_profile_complete)
        middleware.process_response(request, MockResponse(200))
        # because we returned False from the signal receiver,
        # we should have stopped profiling.
        self.assertTrue(self.signal_received)
        # because we called cancel(), the record is not saved.
        self.assertIsNone(request.profiler.id)
Example #7
0
    def test_live_rules(self):

        r1 = RuleSet(uri_regex="", enabled=True)
        r1.save()
        self.assertEqual(RuleSet.objects.live_rules().count(), 1)

        r2 = RuleSet(uri_regex="", enabled=True)
        r2.save()
        self.assertEqual(RuleSet.objects.live_rules().count(), 2)

        r2.enabled = False
        r2.save()
        self.assertEqual(RuleSet.objects.live_rules().count(), 1)
Example #8
0
    def test_live_rules(self):

        r1 = RuleSet(uri_regex="", enabled=True)
        r1.save()
        self.assertEqual(RuleSet.objects.live_rules().count(), 1)

        r2 = RuleSet(uri_regex="", enabled=True)
        r2.save()
        self.assertEqual(RuleSet.objects.live_rules().count(), 2)

        r2.enabled = False
        r2.save()
        self.assertEqual(RuleSet.objects.live_rules().count(), 1)