Exemplo n.º 1
0
    def test_confirm_webauthn_success(self):
        with mocker_context() as mocker:
            mocker.patch('django.http.request.HttpRequest.is_secure')
            self.client.post('/control/settings/2fa/add', {
                'devicetype': 'webauthn',
                'name': 'Foo'
            },
                             follow=True)

        m = self.monkeypatch
        m.setattr(
            "webauthn.WebAuthnRegistrationResponse.verify", lambda *args, **
            kwargs: WebAuthnCredential('', '', b'asd', b'foo', 1))

        d = WebAuthnDevice.objects.first()
        r = self.client.post(
            '/control/settings/2fa/webauthn/{}/confirm'.format(d.pk), {
                'token': '{}',
                'activate': 'on'
            },
            follow=True)
        d.refresh_from_db()
        assert d.confirmed
        assert 'alert-success' in r.content.decode()
        self.user.refresh_from_db()
        assert self.user.require_2fa
        m.undo()
Exemplo n.º 2
0
    def test_confirm_u2f_success(self):
        with mocker_context() as mocker:
            mocker.patch('django.http.request.HttpRequest.is_secure')
            self.client.post('/control/settings/2fa/add', {
                'devicetype': 'u2f',
                'name': 'Foo'
            },
                             follow=True)

        m = self.monkeypatch
        m.setattr("u2flib_server.u2f.complete_register",
                  lambda *args, **kwargs: (JSONDict({}), None))

        d = U2FDevice.objects.first()
        r = self.client.post('/control/settings/2fa/u2f/{}/confirm'.format(
            d.pk), {
                'token': 'FOO',
                'activate': 'on'
            },
                             follow=True)
        d.refresh_from_db()
        assert d.confirmed
        assert 'alert-success' in r.content.decode()
        self.user.refresh_from_db()
        assert self.user.require_2fa

        m.undo()
Exemplo n.º 3
0
def test_patch_settings(token_client, organizer):
    with mocker_context() as mocker:
        mocked = mocker.patch('pretix.presale.style.regenerate_organizer_css.apply_async')

        organizer.settings.event_list_type = 'week'
        resp = token_client.patch(
            '/api/v1/organizers/{}/settings/'.format(organizer.slug),
            {
                'event_list_type': 'list'
            },
            format='json'
        )
        assert resp.status_code == 200
        assert resp.data['event_list_type'] == "list"
        organizer.settings.flush()
        assert organizer.settings.event_list_type == 'list'

        resp = token_client.patch(
            '/api/v1/organizers/{}/settings/'.format(organizer.slug),
            {
                'event_list_type': None,
            },
            format='json'
        )
        assert resp.status_code == 200
        assert resp.data['event_list_type'] == "list"
        organizer.settings.flush()
        assert organizer.settings.event_list_type == 'list'
        mocked.assert_not_called()

        resp = token_client.put(
            '/api/v1/organizers/{}/settings/'.format(organizer.slug),
            {
                'event_list_type': 'put-not-allowed'
            },
            format='json'
        )
        assert resp.status_code == 405

        resp = token_client.patch(
            '/api/v1/organizers/{}/settings/'.format(organizer.slug),
            {
                'primary_color': 'invalid-color'
            },
            format='json'
        )
        assert resp.status_code == 400

        resp = token_client.patch(
            '/api/v1/organizers/{}/settings/'.format(organizer.slug),
            {
                'primary_color': '#ff0000'
            },
            format='json'
        )
        assert resp.status_code == 200
        mocked.assert_any_call(args=(organizer.pk,))
Exemplo n.º 4
0
 def test_create_webauthn(self):
     with mocker_context() as mocker:
         mocker.patch('django.http.request.HttpRequest.is_secure')
         self.client.post('/control/settings/2fa/add', {
             'devicetype': 'webauthn',
             'name': 'Foo'
         })
         d = WebAuthnDevice.objects.first()
         assert d.name == 'Foo'
         assert not d.confirmed
Exemplo n.º 5
0
 def test_create_u2f(self):
     with mocker_context() as mocker:
         mocker.patch('django.http.request.HttpRequest.is_secure')
         self.client.post('/control/settings/2fa/add', {
             'devicetype': 'u2f',
             'name': 'Foo'
         })
         d = U2FDevice.objects.first()
         assert d.name == 'Foo'
         assert not d.confirmed
Exemplo n.º 6
0
    def test_email_settings(self):
        with mocker_context() as mocker:
            mocked = mocker.patch('pretix.base.email.CustomSMTPBackend.test')

            doc = self.get_doc('/control/event/%s/%s/settings/email' % (self.orga1.slug, self.event1.slug))
            data = extract_form_fields(doc.select("form")[0])
            data['test'] = '1'
            doc = self.post_doc('/control/event/%s/%s/settings/email' % (self.orga1.slug, self.event1.slug),
                                data, follow=True)
            assert doc.select('.alert-success')
            self.event1.settings._flush()
            assert mocked.called
Exemplo n.º 7
0
    def test_email_settings(self):
        with mocker_context() as mocker:
            mocked = mocker.patch('pretix.base.email.CustomSMTPBackend.test')

            doc = self.get_doc('/control/event/%s/%s/settings/email' % (self.orga1.slug, self.event1.slug))
            data = extract_form_fields(doc.select("form")[0])
            data['test'] = '1'
            doc = self.post_doc('/control/event/%s/%s/settings/email' % (self.orga1.slug, self.event1.slug),
                                data, follow=True)
            assert doc.select('.alert-success')
            self.event1.settings._flush()
            assert mocked.called
Exemplo n.º 8
0
    def test_display_settings(self):
        with mocker_context() as mocker:
            mocked = mocker.patch('pretix.presale.style.regenerate_css.apply_async')

            doc = self.get_doc('/control/event/%s/%s/settings/display' % (self.orga1.slug, self.event1.slug))
            data = extract_form_fields(doc.select("form")[0])
            data['primary_color'] = '#FF0000'
            doc = self.post_doc('/control/event/%s/%s/settings/display' % (self.orga1.slug, self.event1.slug),
                                data, follow=True)
            assert doc.select('.alert-success')
            self.event1.settings._flush()
            assert self.event1.settings.get('primary_color') == '#FF0000'
            mocked.assert_any_call(args=(self.event1.pk,))
Exemplo n.º 9
0
    def test_display_settings(self):
        with mocker_context() as mocker:
            mocked = mocker.patch('pretix.presale.style.regenerate_css.apply_async')

            doc = self.get_doc('/control/event/%s/%s/settings/display' % (self.orga1.slug, self.event1.slug))
            data = extract_form_fields(doc.select("form")[0])
            data['primary_color'] = '#FF0000'
            doc = self.post_doc('/control/event/%s/%s/settings/display' % (self.orga1.slug, self.event1.slug),
                                data, follow=True)
            assert doc.select('.alert-success')
            self.event1.settings._flush()
            assert self.event1.settings.get('primary_color') == '#FF0000'
            mocked.assert_any_call(args=(self.event1.pk,))
Exemplo n.º 10
0
 def test_confirm_u2f_failed(self):
     with mocker_context() as mocker:
         mocker.patch('django.http.request.HttpRequest.is_secure')
         self.client.post('/control/settings/2fa/add', {
             'devicetype': 'u2f',
             'name': 'Foo'
         }, follow=True)
     d = U2FDevice.objects.first()
     r = self.client.post('/control/settings/2fa/u2f/{}/confirm'.format(d.pk), {
         'token': 'FOO'
     }, follow=True)
     assert 'alert-danger' in r.rendered_content
     d.refresh_from_db()
     assert not d.confirmed
Exemplo n.º 11
0
 def test_confirm_webauthn_failed(self):
     with mocker_context() as mocker:
         mocker.patch('django.http.request.HttpRequest.is_secure')
         self.client.post('/control/settings/2fa/add', {
             'devicetype': 'webauthn',
             'name': 'Foo'
         }, follow=True)
     d = WebAuthnDevice.objects.first()
     r = self.client.post('/control/settings/2fa/webauthn/{}/confirm'.format(d.pk), {
         'token': 'FOO'
     }, follow=True)
     assert 'alert-danger' in r.content.decode()
     d.refresh_from_db()
     assert not d.confirmed
Exemplo n.º 12
0
 def test_email_settings(self):
     with mocker_context() as mocker:
         mocked = mocker.patch(
             'pretix.control.views.organizer.test_custom_smtp_backend')
         doc = self.get_doc('/control/organizer/%s/settings/email' %
                            self.orga1.slug)
         data = extract_form_fields(doc.select("form")[0])
         data['test'] = '1'
         doc = self.post_doc('/control/organizer/%s/settings/email' %
                             self.orga1.slug,
                             data,
                             follow=True)
         assert doc.select('.alert-success')
         self.event1.settings.flush()
         assert mocked.called
Exemplo n.º 13
0
    def test_display_settings_do_not_override_parent(self):
        self.orga1.settings.primary_color = '#ff00ff'
        with mocker_context() as mocker:
            mocked = mocker.patch(
                'pretix.presale.style.regenerate_css.apply_async')

            doc = self.get_doc('/control/event/%s/%s/settings/display' %
                               (self.orga1.slug, self.event1.slug))
            data = extract_form_fields(doc.select("form")[0])
            doc = self.post_doc('/control/event/%s/%s/settings/display' %
                                (self.orga1.slug, self.event1.slug),
                                data,
                                follow=True)
            assert doc.select('.alert-success')
            self.event1.settings.flush()
            assert 'primary_color' not in self.event1.settings._cache()
            assert self.event1.settings.primary_color == self.orga1.settings.primary_color
            mocked.assert_any_call(args=(self.event1.pk, ))
Exemplo n.º 14
0
    def test_confirm_u2f_success(self):
        with mocker_context() as mocker:
            mocker.patch('django.http.request.HttpRequest.is_secure')
            self.client.post('/control/settings/2fa/add', {
                'devicetype': 'u2f',
                'name': 'Foo'
            }, follow=True)

        m = self.monkeypatch
        m.setattr("u2flib_server.u2f.complete_register", lambda *args, **kwargs: (JSONDict({}), None))

        d = U2FDevice.objects.first()
        r = self.client.post('/control/settings/2fa/u2f/{}/confirm'.format(d.pk), {
            'token': 'FOO'
        }, follow=True)
        d.refresh_from_db()
        assert d.confirmed
        assert 'alert-success' in r.rendered_content

        m.undo()
Exemplo n.º 15
0
def test_patch_event_settings(token_client, organizer, event):
    with mocker_context() as mocker:
        mocked = mocker.patch('pretix.presale.style.regenerate_css.apply_async')
        organizer.settings.imprint_url = 'https://example.org'
        resp = token_client.patch(
            '/api/v1/organizers/{}/events/{}/settings/'.format(organizer.slug, event.slug),
            {
                'imprint_url': 'https://example.com'
            },
            format='json'
        )
        assert resp.status_code == 200
        assert resp.data['imprint_url'] == "https://example.com"
        event.settings.flush()
        assert event.settings.imprint_url == 'https://example.com'
        mocked.assert_not_called()

        resp = token_client.patch(
            '/api/v1/organizers/{}/events/{}/settings/'.format(organizer.slug, event.slug),
            {
                'primary_color': '#ff0000'
            },
            format='json'
        )
        assert resp.status_code == 200
        mocked.assert_any_call(args=(event.pk,))

        resp = token_client.patch(
            '/api/v1/organizers/{}/events/{}/settings/'.format(organizer.slug, event.slug),
            {
                'imprint_url': None,
            },
            format='json'
        )
        assert resp.status_code == 200
        assert resp.data['imprint_url'] == "https://example.org"
        event.settings.flush()
        assert event.settings.imprint_url == 'https://example.org'

        resp = token_client.put(
            '/api/v1/organizers/{}/events/{}/settings/'.format(organizer.slug, event.slug),
            {
                'imprint_url': 'invalid'
            },
            format='json'
        )
        assert resp.status_code == 405

        locales = event.settings.locales

        resp = token_client.patch(
            '/api/v1/organizers/{}/events/{}/settings/'.format(organizer.slug, event.slug),
            {
                'locales': event.settings.locales + ['de', 'de-informal'],
            },
            format='json'
        )
        assert resp.status_code == 200
        assert set(resp.data['locales']) == set(locales + ['de', 'de-informal'])
        event.settings.flush()
        assert set(event.settings.locales) == set(locales + ['de', 'de-informal'])

        resp = token_client.patch(
            '/api/v1/organizers/{}/events/{}/settings/'.format(organizer.slug, event.slug),
            {
                'locales': locales,
            },
            format='json'
        )
        assert resp.status_code == 200
        assert set(resp.data['locales']) == set(locales)
        event.settings.flush()
        assert set(event.settings.locales) == set(locales)