Skip to content
Snippets Groups Projects
Select Git revision
  • 9c5f2e633a1fb850086dfbed6c958bacf46aa2f1
  • test default protected
  • master protected
  • niki_edit_branch
  • feat/custom-css
  • feat/redesign-improvements-10
  • feat/redesign-improvements-8
  • feat/redesign-fixes-3
  • feat/pirstan-changes
  • feat/separate-import-thread
  • feat/dary-improvements
  • features/add-pdf-page
  • features/add-typed-table
  • features/fix-broken-calendar-categories
  • features/add-embed-to-articles
  • features/create-mastodon-feed-block
  • features/add-custom-numbering-for-candidates
  • features/add-timeline
  • features/create-wordcloud-from-article-page
  • features/create-collapsible-extra-legal-info
  • features/extend-hero-banner
21 results

utils.py

Blame
  • test_models.py 4.18 KiB
    import pytest
    import arrow
    from django.conf import settings
    from unittest.mock import patch
    
    from openlobby.core.models import Report, User, OpenIdClient, LoginAttempt
    from openlobby.core.documents import ReportDoc
    
    
    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__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},
        )
        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}
    
    
    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