Ejemplo n.º 1
0
    def test_submit_same_report_twice(self):
        rf = RequestFactory()

        user = User(id="uid", name="name", email="*****@*****.**", weight=10)
        user.save()

        website_id = utils.hash_digest("website_name")
        website = Website(id=website_id, name="website_name")
        website.save()

        article_id = utils.hash_digest("article_url")
        article = Article(id=article_id, url="article_url", website=website)
        article.save()

        expected = HttpResponse("Created", status=201)
        request = rf.post(
            "submit_report",
            data=json.dumps({"object": {
                "url": "article_url",
                "report": "L"
            }}),
            content_type="application/json")
        response = submit_report.handler(request)
        self.assertEqual(str(response), str(expected))
        self.assertEqual(
            Report.objects.get(user=user, article=article).value,
            Report.Values.L.name)
        self.assertEquals(
            Article.objects.get(id=article_id).get_status(), Article.Status.L)

        request = rf.post(
            "submit_report",
            data=json.dumps({"object": {
                "url": "article_url",
                "report": "F"
            }}),
            content_type="application/json")
        response = submit_report.handler(request)
        self.assertEqual(str(response), str(expected))
        self.assertEqual(
            Report.objects.get(user=user, article=article).value,
            Report.Values.F.name)
        self.assertEquals(
            Article.objects.get(id=article_id).get_status(), Article.Status.F)

        request = rf.post(
            "submit_report",
            data=json.dumps({"object": {
                "url": "article_url",
                "report": "L"
            }}),
            content_type="application/json")
        response = submit_report.handler(request)
        self.assertEqual(str(response), str(expected))
        self.assertEqual(
            Report.objects.get(user=user, article=article).value,
            Report.Values.L.name)
        self.assertEquals(
            Article.objects.get(id=article_id).get_status(), Article.Status.L)
Ejemplo n.º 2
0
    def test_submit_report_change_status_legit_to_fake(self):
        rf = RequestFactory()

        user = User(id="uid", name="name", email="*****@*****.**", weight=50)
        user.save()
        user2 = User(id="uid2",
                     name="name2",
                     email="*****@*****.**",
                     weight=10)
        user2.save()
        user3 = User(id="uid3",
                     name="name3",
                     email="*****@*****.**",
                     weight=30)
        user3.save()

        website_id = utils.hash_digest("website_name")
        website = Website(id=website_id, name="website_name", legit_articles=1)
        website.save()

        article_id = utils.hash_digest("article_url")
        article = Article(id=article_id,
                          url="article_url",
                          website=website,
                          legit_reports=30.0,
                          fake_reports=10.0)
        article.save()

        report1 = Report(user=user2,
                         article=article,
                         value=Report.Values.F.name)
        report1.save()
        report2 = Report(user=user3,
                         article=article,
                         value=Report.Values.L.name)
        report2.save()

        expected = HttpResponse("Created", status=201)
        request = rf.post(
            "submit_report",
            data=json.dumps({"object": {
                "url": "article_url",
                "report": "F"
            }}),
            content_type="application/json")
        response = submit_report.handler(request)
        self.assertEqual(str(response), str(expected))
        self.assertEquals(
            Article.objects.get(id=article_id).get_status(), Article.Status.F)
        self.assertEquals(
            Website.objects.get(id=website_id).legit_percentage(), 0.00)
Ejemplo n.º 3
0
    def test_get_article_with_report(self):
        rf = RequestFactory()

        expected = JsonResponse({
            "article": {
                "url": "url",
                "name": "article_name",
                "legit_reports": 0,
                "fake_reports": 0
            },
            "website": {
                "name": "website_name"
            },
            "report": {
                "user_id": "uid",
                "article": "url",
                "value": "L"
            }
        })

        website = Website(id=utils.hash_digest("website_name"),
                          name="website_name")
        website.save()
        article = Article(id=utils.hash_digest("url"),
                          url="url",
                          name="article_name",
                          website=website)
        article.save()

        user = User.objects.get(id="uid")
        report = Report(user=user, article=article, value=Report.Values.L.name)
        report.save()
        request = rf.post("get_article",
                          data=json.dumps({
                              "object": {
                                  "url": "url",
                                  "website_name": "website_name"
                              }
                          }),
                          content_type="application/json")
        response = get_article.handler(request)
        self.assertEqual(str(response), str(expected))
        self.assertEquals(article.as_dict(),
                          json.loads(response.content)["article"])
        self.assertEquals(website.as_dict(),
                          json.loads(response.content)["website"])
        self.assertEquals(report.as_dict(),
                          json.loads(response.content)["report"])
Ejemplo n.º 4
0
def add_article(article_id, url, website_name):
    """
    Adds an article to the database
    :param article_id: the article id
    :param url: the article url
    :param website_name: the article's website name
    :return: the tuple (Article, Website)
    """
    url = url
    article_name = utils.parse_article_name_from_url(url)

    website_id = utils.hash_digest(website_name)
    qs = Website.objects.filter(id=website_id)
    website = add_website(website_id, website_name) if len(qs) == 0 else qs[0]

    article = Article(id=article_id,
                      url=url,
                      name=article_name,
                      website=website)
    article.save()
    log.info(LOGGING_TAG + "Article " + article_name + " created")
    return article, website
Ejemplo n.º 5
0
    def test_get_article_already_present(self):
        rf = RequestFactory()

        expected = JsonResponse({
            "article": {
                "url": "url",
                "name": "article_name",
                "legit_reports": 0,
                "fake_reports": 0
            },
            "website": {
                "name": "website_name"
            }
        })
        website = Website(id=utils.hash_digest("website_name"),
                          name="website_name")
        website.save()
        article = Article(id=utils.hash_digest("url"),
                          url="url",
                          name="article_name",
                          website=website)
        article.save()
        request = rf.post("get_article",
                          data=json.dumps({
                              "object": {
                                  "url": "url",
                                  "website_name": "website_name"
                              }
                          }),
                          content_type="application/json")
        response = get_article.handler(request)
        self.assertEqual(str(response), str(expected))
        self.assertEquals(article.as_dict(),
                          json.loads(response.content)["article"])
        self.assertEquals(website.as_dict(),
                          json.loads(response.content)["website"])
Ejemplo n.º 6
0
    def test_submit_report(self):
        rf = RequestFactory()

        user = User(id="uid", name="name", email="*****@*****.**")
        user.save()

        website_id = utils.hash_digest("website_name")
        website = Website(id=website_id, name="website_name")
        website.save()

        article_id = utils.hash_digest("article_url")
        article = Article(id=article_id, url="article_url", website=website)
        article.save()

        expected = HttpResponse("Created", status=201)
        request = rf.post(
            "submit_report",
            data=json.dumps({"object": {
                "url": "article_url",
                "report": "L"
            }}),
            content_type="application/json")
        response = submit_report.handler(request)
        self.assertEqual(str(response), str(expected))