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()
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()
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,))
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
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
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
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,))
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
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
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
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, ))
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()
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)