Example #1
0
    def _decorated(request, *args, **kwargs):
        try:
            body = json.loads(request.body)
        except json.decoder.JSONDecodeError:
            body = {}

        result = func(request, *args, **kwargs, **body)
        if issubclass(type(result), HttpResponse):
            return result
        else:
            # Add decode function to this shit
            json_response = JsonResponse(result, safe=False)
            json_response.decode = types.MethodType(decode, json_response)
            return json_response
Example #2
0
    def test_add_comment(self):
        # test add parent comment
        pk = Comment.objects.all().count() + 1
        url = reverse("add_comment", kwargs={"video_slug": self.video.slug})
        self.client.logout()
        self.client.force_login(self.simple_user)
        response = self.client.post(url, {"content": "Third parent comment"})
        data = {
            "author_name":
            "{0} {1}".format(self.simple_user.first_name,
                             self.simple_user.last_name),
            "id":
            pk,
        }
        expected_content = JsonResponse(data, safe=False).content
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.resolver_match.func, add_comment)

        resp_content = response.content.decode("UTF-8")
        resp_content = ast.literal_eval(resp_content)

        exp_content = expected_content.decode("UTF-8")
        exp_content = ast.literal_eval(exp_content)

        self.assertEqual(resp_content, exp_content)
        p_comment = Comment.objects.get(id=pk)
        self.assertIsNone(p_comment.parent)

        # test add child comment
        pk = Comment.objects.all().count() + 1
        url = reverse(
            "add_child_comment",
            kwargs={
                "video_slug": self.video.slug,
                "comment_id": p_comment.id
            },
        )
        self.client.logout()
        self.client.force_login(self.owner_user)
        response = self.client.post(url,
                                    {"content": "Response to third comment"})
        data["author_name"] = "{0} {1}".format(self.owner_user.first_name,
                                               self.owner_user.last_name)
        data["id"] = pk
        expected_content = JsonResponse(data, safe=False).content

        resp_content = response.content.decode("UTF-8")
        resp_content = ast.literal_eval(resp_content)

        exp_content = expected_content.decode("UTF-8")
        exp_content = ast.literal_eval(exp_content)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.resolver_match.func, add_comment)
        self.assertEqual(resp_content, exp_content)
        comment = Comment.objects.get(id=pk)
        self.assertEqual(comment.parent, p_comment)

        # test bad request
        self.client.logout()
        self.client.force_login(self.owner_user)
        response = self.client.post(url, HTTP_ACCEPT_LANGUAGE="en")
        self.assertContains(response, b"<h1>Bad Request</h1>", status_code=400)

        # test method not allowed
        response = self.client.get(url, HTTP_ACCEPT_LANGUAGE="en")
        self.assertContains(response,
                            b"<h1>Method Not Allowed</h1>",
                            status_code=405)
Example #3
0
    def test_heartbeat(self):
        self.client = Client()
        self.user = User.objects.create(
            username='******', first_name="Jean", last_name="Viewer")
        response = self.client.get(
            '/live/ajax_calls/heartbeat/?key=testkey&liveid=1', {
            }, False, False, **{
                'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'})
        self.assertEqual(response.status_code, 200)

        data = {
            "viewers": 0,
            "viewers_list": []
        }
        expected_content = JsonResponse(data, safe=False).content
        exp_content = expected_content.decode("UTF-8")
        exp_content = ast.literal_eval(exp_content)

        resp_content = response.content.decode("UTF-8")
        resp_content = ast.literal_eval(resp_content)

        self.assertEqual(resp_content, exp_content)
        call_command("live_viewcounter")

        response = self.client.get(
            '/live/ajax_calls/heartbeat/?key=testkey&liveid=1', {
            }, False, False, **{
                'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'})
        self.assertEqual(response.status_code, 200)

        data = {
            "viewers": 1,
            "viewers_list": []
        }
        expected_content = JsonResponse(data, safe=False).content
        exp_content = expected_content.decode("UTF-8")
        exp_content = ast.literal_eval(exp_content)

        resp_content = response.content.decode("UTF-8")
        resp_content = ast.literal_eval(resp_content)

        self.assertEqual(resp_content, exp_content)

        self.client.force_login(self.user)
        response = self.client.get(
            '/live/ajax_calls/heartbeat/?key=testkeypod&liveid=1', {
            }, False, False, **{
                'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'})
        self.assertEqual(response.status_code, 200)
        call_command("live_viewcounter")

        response = self.client.get(
            '/live/ajax_calls/heartbeat/?key=testkeypod&liveid=1', {
            }, False, False, **{
                'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'})
        self.assertEqual(response.status_code, 200)

        data = {
            "viewers": 2,
            "viewers_list": [{'first_name': 'Jean',
                              'is_superuser': False,
                              'last_name': 'Viewer'}]
        }
        expected_content = JsonResponse(data, safe=False).content
        exp_content = expected_content.decode("UTF-8")
        exp_content = exp_content.replace("false", "False")
        exp_content = ast.literal_eval(exp_content)

        resp_content = response.content.decode("UTF-8")
        resp_content = resp_content.replace("false", "False")
        resp_content = ast.literal_eval(resp_content)

        self.assertEqual(resp_content, exp_content)

        hb1 = HeartBeat.objects.get(viewkey="testkey")
        hb2 = HeartBeat.objects.get(viewkey="testkeypod")

        paris_tz = pytz.timezone("Europe/Paris")
        # make heartbeat expire now
        hb1.last_heartbeat = paris_tz.localize(
            datetime.datetime(2012, 3, 3, 1, 30))
        hb1.save()
        hb2.last_heartbeat = paris_tz.localize(
            datetime.datetime(2012, 3, 3, 1, 30))
        hb2.save()

        call_command("live_viewcounter")

        broad = Broadcaster.objects.get(name="broadcaster1")
        self.assertEqual(broad.viewcount, 0)

        print(
            "   --->  test_heartbeat of liveViewsTestCase : OK !")