Skip to content
Snippets Groups Projects
Select Git revision
  • e194a408b1c2e1d8867b1c07c3c7a0fb99bb85f4
  • master default protected
  • set-sast-config-1
  • v2.2.3
  • v2.2.2
  • v1.4.0
  • v1.3.0
  • v1.2.1
  • v1.2.0
  • v1.1.2
  • v1.1.1
11 results

webpack.config.js

Blame
  • test_models.py 7.02 KiB
    from unittest.mock import patch
    
    import arrow
    import pytest
    from django.conf import settings
    from openlobby.core.api.schema import (
        AUTHOR_SORT_LAST_NAME_ID,
        AUTHOR_SORT_TOTAL_REPORTS_ID,
    )
    from openlobby.core.documents import ReportDoc
    from openlobby.core.models import Report, User, OpenIdClient, LoginAttempt
    
    pytestmark = [pytest.mark.django_db, pytest.mark.usefixtures("django_es")]
    
    
    def test_report__marks_user_as_author_on_save():
        author = User.objects.create(id=1, is_author=False)
        date = arrow.get(2018, 1, 1).datetime
        Report.objects.create(author=author, date=date, body="Lorem ipsum.")
        user = User.objects.get(id=1)
        assert user.is_author
    
    
    def test_report__marks_user_as_author_on_save__not_if_draft():
        author = User.objects.create(id=1, is_author=False)
        date = arrow.get(2018, 1, 1).datetime
        Report.objects.create(author=author, is_draft=True, date=date, body="Lorem ipsum.")
        user = User.objects.get(id=1)
        assert not user.is_author
    
    
    def test_report__is_saved_in_elasticsearch():
        author = User.objects.create(id=6)
        date = arrow.get(2018, 1, 1).datetime
        published = arrow.get(2018, 1, 2).datetime
        Report.objects.create(
            id=3,
            author=author,
            date=date,
            published=published,
            title="It happened",
            body="Lorem ipsum.",
            received_benefit="coffee",
            provided_benefit="tea",
            our_participants="me",
            other_participants="them",
            extra={"a": 3},
            is_draft=False,
        )
        docs = list(ReportDoc.search())
        assert len(docs) == 1
        doc = docs[0]
        assert doc.meta.id == "3"
        assert doc.author_id == 6
        assert doc.date == date
        assert doc.published == published
        assert doc.title == "It happened"
        assert doc.body == "Lorem ipsum."
        assert doc.received_benefit == "coffee"
        assert doc.provided_benefit == "tea"
        assert doc.our_participants == "me"
        assert doc.other_participants == "them"
        assert doc.extra == {"a": 3}
        assert not doc.is_draft
    
    
    def test_report__save_works_with_no_extra():
        author = User.objects.create(id=6)
        date = arrow.get(2018, 1, 1).datetime
        Report.objects.create(
            id=7, author=author, date=date, published=date, body="Lorem ipsum."
        )
        docs = list(ReportDoc.search())
        assert len(docs) == 1
        doc = docs[0]
        assert doc.meta.id == "7"
        assert doc.extra is None
    
    
    def test_login_attempt__default_expiration():
        client = OpenIdClient.objects.create(name="a", client_id="b", client_secret="c")
        with patch("openlobby.core.models.time.time", return_value=10000):
            attempt = LoginAttempt.objects.create(
                openid_client=client, state="foo", app_redirect_uri="http://openlobby/app"
            )
        assert attempt.expiration == 10000 + settings.LOGIN_ATTEMPT_EXPIRATION
    
    
    def test_user__no_name_collision():
        User.objects.create(
            username="a", is_author=True, first_name="Ryan", last_name="Gosling"
        )
        User.objects.create(
            username="b", is_author=True, first_name="Ryan", last_name="Reynolds"
        )
        assert User.objects.get(username="a").has_colliding_name is False
        assert User.objects.get(username="b").has_colliding_name is False
    
    
    def test_user__name_collision():
        User.objects.create(
            username="a", is_author=True, first_name="Ryan", last_name="Gosling"
        )
        User.objects.create(
            username="b", is_author=True, first_name="Ryan", last_name="Gosling"
        )
        assert User.objects.get(username="a").has_colliding_name is True
        assert User.objects.get(username="b").has_colliding_name is True
    
    
    def test_user__name_collision_affects_only_authors():
        User.objects.create(
            username="a", is_author=False, first_name="Ryan", last_name="Gosling"
        )
        User.objects.create(
            username="b", is_author=True, first_name="Ryan", last_name="Gosling"
        )
        User.objects.create(
            username="c", is_author=False, first_name="Ryan", last_name="Gosling"
        )
        assert User.objects.get(username="a").has_colliding_name is False
        assert User.objects.get(username="b").has_colliding_name is False
        assert User.objects.get(username="c").has_colliding_name is False
        User.objects.create(
            username="d", is_author=True, first_name="Ryan", last_name="Gosling"
        )
        assert User.objects.get(username="a").has_colliding_name is False
        assert User.objects.get(username="b").has_colliding_name is True
        assert User.objects.get(username="c").has_colliding_name is False
        assert User.objects.get(username="d").has_colliding_name is True
    
    
    def test_user__name_collision_excludes_self_on_update():
        u = User.objects.create(
            username="a", is_author=True, first_name="Ryan", last_name="Gosling"
        )
        u.save()
        assert User.objects.get(username="a").has_colliding_name is False
    
    
    def test_user__sorted_default():
        User.objects.create(
            username="a", is_author=False, first_name="Ryan", last_name="AGosling"
        )
        User.objects.create(
            username="b", is_author=True, first_name="Ryan", last_name="BGosling"
        )
        User.objects.create(
            username="c", is_author=False, first_name="Ryan", last_name="CGosling"
        )
        assert User.objects.sorted()[0].username == "a"
    
    
    def test_user__sorted_default_reversed():
        User.objects.create(
            username="a", is_author=False, first_name="Ryan", last_name="AGosling"
        )
        User.objects.create(
            username="b", is_author=True, first_name="Ryan", last_name="BGosling"
        )
        User.objects.create(
            username="c", is_author=False, first_name="Ryan", last_name="CGosling"
        )
        assert User.objects.sorted(reversed=True)[0].username == "c"
    
    
    def test_user__sorted_last_name():
        User.objects.create(
            username="a", is_author=False, first_name="Ryan", last_name="AGosling"
        )
        User.objects.create(
            username="b", is_author=True, first_name="Ryan", last_name="BGosling"
        )
        User.objects.create(
            username="c", is_author=False, first_name="Ryan", last_name="CGosling"
        )
        assert User.objects.sorted(sort=AUTHOR_SORT_LAST_NAME_ID)[0].username == "a"
        assert (
            User.objects.sorted(sort=AUTHOR_SORT_LAST_NAME_ID, reversed=False)[0].username
            == "a"
        )
        assert (
            User.objects.sorted(sort=AUTHOR_SORT_LAST_NAME_ID, reversed=True)[0].username
            == "c"
        )
    
    
    def test_user__sorted_total_reports():
        author = User.objects.create(
            username="a", is_author=True, first_name="Ryan", last_name="AGosling"
        )
        User.objects.create(
            username="b", is_author=True, first_name="Ryan", last_name="BGosling"
        )
        date = arrow.get(2018, 1, 1).datetime
        Report.objects.create(
            id=7, author=author, date=date, published=date, body="Lorem ipsum."
        )
        assert User.objects.sorted(sort=AUTHOR_SORT_TOTAL_REPORTS_ID)[0].username == "a"
        assert (
            User.objects.sorted(sort=AUTHOR_SORT_TOTAL_REPORTS_ID, reversed=False)[
                0
            ].username
            == "a"
        )
        assert (
            User.objects.sorted(sort=AUTHOR_SORT_TOTAL_REPORTS_ID, reversed=True)[
                0
            ].username
            == "b"
        )