예제 #1
0
 def setUp(self):
     self.log1 = RequestLog(path="/test/", method="GET")
     self.log1.save()
     self.log2 = RequestLog(path="/test/2/", method="GET")
     self.log2.save()
     self.log3 = RequestLog(path="/test/2/", method="GET")
     self.log3.save()
     self.log4 = RequestLog(path="/test/2/", method="POST")
     self.log4.save()
     self.log5 = RequestLog(path="/test/post/", method="POST")
     self.log5.save()
     super(RequestsTest, self).setUp()
예제 #2
0
class RequestsTest(TestCase):
    def setUp(self):
        self.log1 = RequestLog(path="/test/", method="GET")
        self.log1.save()
        self.log2 = RequestLog(path="/test/2/", method="GET")
        self.log2.save()
        self.log3 = RequestLog(path="/test/2/", method="GET")
        self.log3.save()
        self.log4 = RequestLog(path="/test/2/", method="POST")
        self.log4.save()
        self.log5 = RequestLog(path="/test/post/", method="POST")
        self.log5.save()
        super(RequestsTest, self).setUp()

    def test_default_state(self):
        self.assertEqual(RequestLog.objects.all().count(), RequestLog.objects.filter(priority=0).count())

    def test_detect_priority(self):
        self.assertEqual(self.log1.priority, 0)
        rule1 = PriorityRule(path=self.log1.path, method=self.log1.method, priority=PriorityRule.PRIOR_HIGH)
        rule1.save()

        self.assertEqual(self.log1.detect_priority(), rule1.priority)
        self.assertEqual(self.log1.priority, PriorityRule.PRIOR_HIGH)

    def test_apply_to_existed(self):
        rule1 = PriorityRule(path="/test/2/", method="GET", priority=PriorityRule.PRIOR_HIGH)
        rule1.save()

        rule1.apply_to_existed()
        self.assertEqual(list(RequestLog.high_priority.all().order_by("id")), [self.log2, self.log3])

        rule2 = PriorityRule(path="/test/2/", method="POST", priority=PriorityRule.PRIOR_HIGH)
        rule2.save()
        rule2.apply_to_existed()
        self.assertEqual(list(RequestLog.high_priority.all().order_by("id")), [self.log2, self.log3, self.log4])

    def test_priority_on_create(self):
        rule1 = PriorityRule(path="/", method="GET", priority=PriorityRule.PRIOR_HIGH)
        rule1.save()

        self.client.get("/")

        self.assertTrue(RequestLog.high_priority.filter(path="/"))

    def test_prior_all_post(self):
        rule1 = PriorityRule(method="POST", priority=PriorityRule.PRIOR_HIGH)
        rule1.save()
        rule1.apply_to_existed()
        self.assertEqual(list(RequestLog.high_priority.all().order_by("id")), [self.log4, self.log5])

    def test_requests_page(self):
        resp = self.client.get(reverse("requests"))
        self.assertEqual(resp.status_code, 200)

        rule1 = PriorityRule(method="GET", priority=PriorityRule.PRIOR_HIGH)
        rule1.save()
        rule1.apply_to_existed()

        # Show only high priority

        resp = self.client.get(reverse("requests") + "?priority=1")
        self.assertEqual(resp.status_code, 200)

        real = sorted(resp.context["requests"].values_list("id", flat=True))
        expected = sorted(RequestLog.high_priority.all()[:10].values_list("id", flat=True))

        self.assertEqual(real, expected)

        # Show only default priority

        resp = self.client.get(reverse("requests") + "?priority=0")
        self.assertEqual(resp.status_code, 200)

        real = sorted(resp.context["requests"].values_list("id", flat=True))
        expected = sorted(RequestLog.default_priority.all()[:10].values_list("id", flat=True))

        self.assertEqual(real, expected)

        # Show all priority
        resp = self.client.get(reverse("requests") + "?priority=")
        self.assertEqual(resp.status_code, 200)

        real = sorted(resp.context["requests"].values_list("id", flat=True))
        expected = sorted(RequestLog.objects.all()[:10].values_list("id", flat=True))

        self.assertEqual(real, expected)

    def test_remove_requests(self):
        remove_url = reverse("request_remove", args=[self.log1.pk])
        resp = self.client.get(reverse("requests") + "?priority=")
        self.assertContains(resp, remove_url)

        # Success redirect after non-ajax request
        resp = self.client.get(remove_url, follow=True)
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp.redirect_chain, [("http://testserver/requests/", 302)])

        # Success ajax request
        remove_url = reverse("request_remove", args=[self.log2.pk])
        resp = self.client.post(remove_url, HTTP_X_REQUESTED_WITH="XMLHttpRequest")
        self.assertEqual(resp.status_code, 200)
        self.assertContains(resp, "success")
예제 #3
0
 def process_request(self, request):
     log = RequestLog(_request=request)
     log.save()