Refs #96 -- Completely removed local users

This commit is contained in:
Raphael Michel
2015-09-17 00:52:36 +02:00
parent 0dccdcb0f7
commit 7def097dcd
37 changed files with 367 additions and 707 deletions

View File

@@ -15,7 +15,7 @@ def env():
organizer=o, name='Dummy', slug='dummy',
date_from=now(), plugins='pretix.plugins.banktransfer'
)
user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy')
user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
user.email = 'dummy@dummy.dummy'
user.save()
return event, user, o

View File

@@ -19,7 +19,7 @@ class LocaleDeterminationTest(TestCase):
)
cls.TEST_LOCALE = 'de' if settings.LANGUAGE_CODE == 'en' else 'en'
cls.TEST_LOCALE_LONG = 'de-AT' if settings.LANGUAGE_CODE == 'en' else 'en-NZ'
cls.user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy')
cls.user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
def test_global_default(self):
c = Client()

View File

@@ -160,31 +160,8 @@ class VersionableTestCase(TestCase):
class UserTestCase(TestCase):
def test_identifier_local(self):
o = Organizer.objects.create(name='Dummy', slug='dummy')
event = Event.objects.create(
organizer=o, name='Dummy', slug='dummy',
date_from=now(),
)
u = User(event=event, username='tester')
u.set_password("test")
u.save()
self.assertEqual(u.identifier, "%s@%s.event.pretix" % (u.username.lower(), event.id))
def test_identifier_global(self):
u = User(email='test@example.com')
u.set_password("test")
u.save()
self.assertEqual(u.identifier, "test@example.com")
def test_name(self):
o = Organizer.objects.create(name='Dummy', slug='dummy')
event = Event.objects.create(
organizer=o, name='Dummy', slug='dummy',
date_from=now(),
)
u = User.objects.create_local_user(event, 'test', 'test')
self.assertEqual(u.get_local_name(), 'test')
u = User.objects.create_user('test@foo.bar', 'test')
u.givenname = "Christopher"
u.familyname = "Nolan"
u.set_password("test")
@@ -202,8 +179,8 @@ class UserTestCase(TestCase):
self.assertEqual(u.get_short_name(), 'Christopher')
u.givenname = None
u.save()
self.assertEqual(u.get_full_name(), 'test')
self.assertEqual(u.get_short_name(), 'test')
self.assertEqual(u.get_full_name(), 'test@foo.bar')
self.assertEqual(u.get_short_name(), 'test@foo.bar')
class BaseQuotaTestCase(TestCase):
@@ -330,7 +307,7 @@ class OrderTestCase(BaseQuotaTestCase):
def setUp(self):
super().setUp()
self.user = User.objects.create_local_user(self.event, 'dummy', 'dummy')
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
self.order = Order.objects.create(
status=Order.STATUS_PENDING, event=self.event,
user=self.user, datetime=now() - timedelta(days=5),

View File

@@ -152,7 +152,7 @@ class SettingsTestCase(TestCase):
self._test_serialization(self.event, Event)
def test_serialize_model(self):
self._test_serialization(User.objects.create_local_user(self.event, 'dummy', 'dummy'), User)
self._test_serialization(User.objects.create_user('dummy@dummy.dummy', 'dummy'), User)
def test_serialize_unknown(self):
class Type:

View File

@@ -8,7 +8,7 @@ class LoginFormBrowserTest(BrowserTest):
def setUp(self):
super().setUp()
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy')
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
def test_login(self):
self.driver.implicitly_wait(10)
@@ -38,7 +38,7 @@ class LoginFormTest(TestCase):
"""
def setUp(self):
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy')
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
def test_wrong_credentials(self):
c = Client()

View File

@@ -11,7 +11,7 @@ class EventsTest(BrowserTest):
def setUp(self):
super().setUp()
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy')
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
self.orga1 = Organizer.objects.create(name='CCC', slug='ccc')
self.orga2 = Organizer.objects.create(name='MRM', slug='mrm')
self.event1 = Event.objects.create(

View File

@@ -16,7 +16,7 @@ from pretix.base.models import (
class ItemFormTest(BrowserTest):
def setUp(self):
super().setUp()
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy')
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
self.orga1 = Organizer.objects.create(name='CCC', slug='ccc')
self.orga2 = Organizer.objects.create(name='MRM', slug='mrm')
self.event1 = Event.objects.create(

View File

@@ -17,7 +17,7 @@ def env():
organizer=o, name='Dummy', slug='dummy',
date_from=now(), plugins='pretix.plugins.banktransfer'
)
user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy')
user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
EventPermission.objects.create(
event=event,
user=user,
@@ -46,7 +46,7 @@ def env():
@pytest.mark.django_db
def test_order_list(client, env):
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/event/dummy/dummy/orders/')
assert 'FOO' in response.rendered_content
response = client.get('/control/event/dummy/dummy/orders/?user=peter')
@@ -61,7 +61,7 @@ def test_order_list(client, env):
@pytest.mark.django_db
def test_order_detail(client, env):
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/event/dummy/dummy/orders/FOO/')
assert 'Early-bird' in response.rendered_content
assert 'Peter' in response.rendered_content
@@ -69,7 +69,7 @@ def test_order_detail(client, env):
@pytest.mark.django_db
def test_order_transition_cancel(client, env):
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
client.post('/control/event/dummy/dummy/orders/FOO/transition', {
'status': 'c'
})
@@ -79,7 +79,7 @@ def test_order_transition_cancel(client, env):
@pytest.mark.django_db
def test_order_transition_to_paid_success(client, env):
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
client.post('/control/event/dummy/dummy/orders/FOO/transition', {
'status': 'p'
})
@@ -92,7 +92,7 @@ def test_order_transition_to_unpaid_success(client, env):
o = Order.objects.current.get(identity=env[2].identity)
o.status = Order.STATUS_PAID
o.save()
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
client.post('/control/event/dummy/dummy/orders/FOO/transition', {
'status': 'n'
})

View File

@@ -15,7 +15,7 @@ def env():
organizer=o, name='Dummy', slug='dummy',
date_from=now(), plugins='pretix.plugins.banktransfer'
)
user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy')
user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
Order.objects.create(
code='FOO', event=event,
user=user, status=Order.STATUS_PENDING,
@@ -86,7 +86,7 @@ def test_logged_out(client, env, url):
@pytest.mark.django_db
@pytest.mark.parametrize("url", event_urls)
def test_wrong_event(client, env, url):
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/event/dummy/dummy/' + url)
# These permission violations do not yield a 403 error, but
# a 404 error to prevent information leakage
@@ -136,7 +136,7 @@ def test_wrong_event_permission(client, env, perm, url, code):
)
setattr(ep, perm, False)
ep.save()
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/event/dummy/dummy/' + url)
assert response.status_code == 403
@@ -148,7 +148,7 @@ def test_current_permission(client, env):
)
setattr(ep, 'can_change_settings', True)
ep.save()
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/event/dummy/dummy/settings/')
assert response.status_code == 200
ep = ep.clone()
@@ -166,7 +166,7 @@ def test_correct_event_permission(client, env, perm, url, code):
)
setattr(ep, perm, True)
ep.save()
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/event/dummy/dummy/' + url)
assert response.status_code == code
@@ -174,7 +174,7 @@ def test_correct_event_permission(client, env, perm, url, code):
@pytest.mark.django_db
@pytest.mark.parametrize("url", organizer_urls)
def test_wrong_organizer(client, env, url):
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/' + url)
# These permission violations do not yield a 403 error, but
# a 404 error to prevent information leakage
@@ -195,7 +195,7 @@ def test_wrong_organizer_permission(client, env, perm, url, code):
)
setattr(op, perm, False)
op.save()
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/' + url)
assert response.status_code == 403
@@ -209,6 +209,6 @@ def test_correct_organizer_permission(client, env, perm, url, code):
if perm:
setattr(op, perm, True)
op.save()
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/' + url)
assert response.status_code == code

View File

@@ -6,7 +6,7 @@ from pretix.base.models import User
class UserSettingsTest(BrowserTest):
def setUp(self):
super().setUp()
self.user = User.objects.create_global_user('dummy@dummy.dummy', 'dummy')
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
self.driver.implicitly_wait(10)
self.driver.get('%s%s' % (self.live_server_url, '/control/login'))
username_input = self.driver.find_element_by_name("email")
@@ -47,7 +47,7 @@ class UserSettingsTest(BrowserTest):
assert self.user.email == 'foo@example.com'
def test_change_email_no_duplicates(self):
User.objects.create_global_user('foo@example.com', 'foo')
User.objects.create_user('foo@example.com', 'foo')
self.driver.find_element_by_name("email").clear()
self.driver.find_element_by_name("email").send_keys("foo@example.com")
self.driver.find_element_by_name("old_pw").clear()

View File

@@ -17,7 +17,7 @@ def env():
organizer=o, name='Dummy', slug='dummy',
date_from=now(), plugins='pretix.plugins.banktransfer'
)
user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy')
user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
EventPermission.objects.create(user=user, event=event)
o1 = Order.objects.create(
code='1234S', event=event,
@@ -40,7 +40,7 @@ def env():
@pytest.mark.django_db
def test_import_csv_file(client, env):
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
r = client.get('/control/event/dummy/dummy/banktransfer/import/')
assert r.status_code == 200

View File

@@ -17,7 +17,7 @@ def env():
organizer=o, name='Dummy', slug='dummy',
date_from=now(), plugins='pretix.plugins.banktransfer'
)
user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy')
user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
EventPermission.objects.create(user=user, event=event)
shirt = Item.objects.create(event=event, name='T-Shirt', default_price=12)
prop1 = Property.objects.create(event=event, name="Color")
@@ -48,7 +48,7 @@ def env():
@pytest.mark.django_db
def test_pretixdroid(client, env):
client.login(identifier='dummy@dummy.dummy', password='dummy')
client.login(email='dummy@dummy.dummy', password='dummy')
client.get('/control/event/%s/%s/pretixdroid/' % (env[0].organizer.slug, env[0].slug))
key1 = env[0].settings.get('pretixdroid_key')
assert key1

View File

@@ -9,14 +9,14 @@ from pretix.base.models import User
class UserSettingsTest(EventTestMixin, BrowserTest):
def setUp(self):
super().setUp()
self.user = User.objects.create_global_user('dummy@dummy.dummy', 'dummy')
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
self.driver.implicitly_wait(10)
self.driver.get('%s/%s/%s/login' % (self.live_server_url, self.orga.slug, self.event.slug))
# open the login accordion
self.scroll_and_click(self.driver.find_element_by_css_selector('a[href*=loginForm]'))
time.sleep(1)
# enter login details
self.driver.find_element_by_css_selector('#loginForm input[name=username]').send_keys('dummy@dummy.dummy')
self.driver.find_element_by_css_selector('#loginForm input[name=email]').send_keys('dummy@dummy.dummy')
self.driver.find_element_by_css_selector('#loginForm input[name=password]').send_keys('dummy')
self.scroll_and_click(self.driver.find_element_by_css_selector('#loginForm button.btn-primary'))
self.driver.find_element_by_partial_link_text('Your account')
@@ -51,19 +51,8 @@ class UserSettingsTest(EventTestMixin, BrowserTest):
self.user = User.objects.get(pk=self.user.pk)
assert self.user.email == 'foo@example.com'
def test_change_email_allow_local_duplicates(self):
User.objects.create_local_user(event=self.event, username='test', email='foo@example.com', password='foo')
self.driver.find_element_by_name("email").clear()
self.driver.find_element_by_name("email").send_keys("foo@example.com")
self.driver.find_element_by_name("old_pw").clear()
self.driver.find_element_by_name("old_pw").send_keys("dummy")
self.scroll_and_click(self.driver.find_element_by_class_name('btn-save'))
self.driver.find_element_by_class_name("alert-success")
self.user = User.objects.get(pk=self.user.pk)
assert self.user.email == 'foo@example.com'
def test_change_email_no_global_duplicates(self):
User.objects.create_global_user('foo@example.com', 'foo')
def test_change_email_no_duplicates(self):
User.objects.create_user('foo@example.com', 'foo')
self.driver.find_element_by_name("email").clear()
self.driver.find_element_by_name("email").send_keys("foo@example.com")
self.driver.find_element_by_name("old_pw").clear()

View File

@@ -22,7 +22,7 @@ class CartTestMixin:
organizer=self.orga, name='30C3', slug='30c3',
date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc)
)
self.user = User.objects.create_local_user(self.event, 'demo', 'demo')
self.user = User.objects.create_user('dummy@dummy.dummy', 'demo')
self.category = ItemCategory.objects.create(event=self.event, name="Everything", position=0)
self.quota_shirts = Quota.objects.create(event=self.event, name='Shirts', size=2)
self.shirt = Item.objects.create(event=self.event, name='T-Shirt', category=self.category, default_price=12)
@@ -51,7 +51,7 @@ class CartBrowserTest(CartTestMixin, BrowserTest):
self.driver.find_element_by_css_selector('input[type=number][name=item_%s]' % self.ticket.identity).send_keys('1')
self.scroll_and_click(self.driver.find_element_by_css_selector('.checkout-button-row button'))
# should redirect to login page
self.driver.find_element_by_name('username')
self.driver.find_element_by_name('email')
def test_simple_login(self):
self.driver.get('%s/%s/%s/' % (self.live_server_url, self.orga.slug, self.event.slug))
@@ -63,44 +63,26 @@ class CartBrowserTest(CartTestMixin, BrowserTest):
self.scroll_and_click(self.driver.find_element_by_css_selector('a[href*=loginForm]'))
time.sleep(1)
# enter login details
self.driver.find_element_by_css_selector('#loginForm input[name=username]').send_keys('demo')
self.driver.find_element_by_css_selector('#loginForm input[name=email]').send_keys('dummy@dummy.dummy')
self.driver.find_element_by_css_selector('#loginForm input[name=password]').send_keys('demo')
self.scroll_and_click(self.driver.find_element_by_css_selector('#loginForm button.btn-primary'))
# should display our ticket
self.assertIn('Early-bird', self.driver.find_element_by_css_selector('.cart-row:first-child').text)
def test_local_registration(self):
def test_registration(self):
self.driver.get('%s/%s/%s/' % (self.live_server_url, self.orga.slug, self.event.slug))
# add the entry ticket to cart
self.driver.find_element_by_css_selector('input[type=number][name=item_%s]' % self.ticket.identity).send_keys('1')
self.scroll_and_click(self.driver.find_element_by_css_selector('.checkout-button-row button'))
# should redirect to login page
# open the login accordion
self.scroll_and_click(self.driver.find_element_by_css_selector('a[href*=localRegistrationForm]'))
self.scroll_and_click(self.driver.find_element_by_css_selector('a[href*=registrationForm]'))
time.sleep(1)
# enter login details
self.driver.find_element_by_css_selector('#localRegistrationForm input[name=username]').send_keys('demo2')
self.driver.find_element_by_css_selector('#localRegistrationForm input[name=email]').send_keys('demo@demo.demo')
self.driver.find_element_by_css_selector('#localRegistrationForm input[name=password]').send_keys('demo')
self.driver.find_element_by_css_selector('#localRegistrationForm input[name=password_repeat]').send_keys('demo')
self.scroll_and_click(self.driver.find_element_by_css_selector('#localRegistrationForm button.btn-primary'))
# should display our ticket
self.assertIn('Early-bird', self.driver.find_element_by_css_selector('.cart-row:first-child').text)
def test_global_registration(self):
self.driver.get('%s/%s/%s/' % (self.live_server_url, self.orga.slug, self.event.slug))
# add the entry ticket to cart
self.driver.find_element_by_css_selector('input[type=number][name=item_%s]' % self.ticket.identity).send_keys('1')
self.scroll_and_click(self.driver.find_element_by_css_selector('.checkout-button-row button'))
# should redirect to login page
# open the login accordion
self.scroll_and_click(self.driver.find_element_by_css_selector('a[href*=globalRegistrationForm]'))
time.sleep(1)
# enter login details
self.driver.find_element_by_css_selector('#globalRegistrationForm input[name=email]').send_keys('demo@example.com')
self.driver.find_element_by_css_selector('#globalRegistrationForm input[name=password]').send_keys('demo')
self.driver.find_element_by_css_selector('#globalRegistrationForm input[name=password_repeat]').send_keys('demo')
self.scroll_and_click(self.driver.find_element_by_css_selector('#globalRegistrationForm button.btn-primary'))
self.driver.find_element_by_css_selector('#registrationForm input[name=email]').send_keys('demo@example.com')
self.driver.find_element_by_css_selector('#registrationForm input[name=password]').send_keys('demo')
self.driver.find_element_by_css_selector('#registrationForm input[name=password_repeat]').send_keys('demo')
self.scroll_and_click(self.driver.find_element_by_css_selector('#registrationForm button.btn-primary'))
# should display our ticket
self.assertIn('Early-bird', self.driver.find_element_by_css_selector('.cart-row:first-child').text)
@@ -109,7 +91,7 @@ class CartTest(CartTestMixin, TestCase):
def setUp(self):
super().setUp()
self.assertTrue(self.client.login(username='demo@%s.event.pretix' % self.event.identity, password='demo'))
self.assertTrue(self.client.login(email='dummy@dummy.dummy', password='demo'))
def test_simple(self):
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {

View File

@@ -21,13 +21,13 @@ class CheckoutTestCase(TestCase):
date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc),
plugins='pretix.plugins.stripe,pretix.plugins.banktransfer'
)
self.user = User.objects.create_local_user(self.event, 'demo', 'demo')
self.user = User.objects.create_user('dummy@dummy.dummy', 'demo')
self.category = ItemCategory.objects.create(event=self.event, name="Everything", position=0)
self.quota_tickets = Quota.objects.create(event=self.event, name='Tickets', size=5)
self.ticket = Item.objects.create(event=self.event, name='Early-bird ticket',
category=self.category, default_price=23, admission=True)
self.quota_tickets.items.add(self.ticket)
self.assertTrue(self.client.login(username='demo@%s.event.pretix' % self.event.identity, password='demo'))
self.assertTrue(self.client.login(email='dummy@dummy.dummy', password='demo'))
self.event.settings.set('attendee_names_asked', False)
self.event.settings.set('payment_banktransfer__enabled', True)

View File

@@ -144,52 +144,40 @@ class LoginTest(EventTestMixin, TestCase):
def setUp(self):
super().setUp()
self.local_user = User.objects.create_local_user(self.event, 'demo', 'foo')
self.global_user = User.objects.create_global_user('demo@demo.dummy', 'demo')
self.user = User.objects.create_user('demo@demo.dummy', 'demo')
def test_login_invalid(self):
response = self.client.post(
'/%s/%s/login' % (self.orga.slug, self.event.slug),
{
'form': 'login',
'username': 'demo',
'email': 'demo@demo.foo',
'password': 'bar'
}
)
self.assertEqual(response.status_code, 200)
self.assertIn('alert-danger', response.rendered_content)
def test_login_local(self):
def test_login_valid(self):
response = self.client.post(
'/%s/%s/login' % (self.orga.slug, self.event.slug),
{
'form': 'login',
'username': 'demo',
'password': 'foo'
}
)
self.assertEqual(response.status_code, 302)
def test_login_global(self):
response = self.client.post(
'/%s/%s/login' % (self.orga.slug, self.event.slug),
{
'form': 'login',
'username': 'demo@demo.dummy',
'email': 'demo@demo.dummy',
'password': 'demo'
}
)
self.assertEqual(response.status_code, 302)
def test_login_already_logged_in(self):
self.assertTrue(self.client.login(username='demo@%s.event.pretix' % self.event.identity, password='foo'))
self.assertTrue(self.client.login(email='demo@demo.dummy', password='demo'))
response = self.client.get(
'/%s/%s/login' % (self.orga.slug, self.event.slug),
)
self.assertEqual(response.status_code, 302)
def test_logout(self):
self.assertTrue(self.client.login(username='demo@%s.event.pretix' % self.event.identity, password='foo'))
self.assertTrue(self.client.login(email='demo@demo.dummy', password='demo'))
response = self.client.get(
'/%s/%s/logout' % (self.orga.slug, self.event.slug),
)

View File

@@ -23,9 +23,9 @@ class OrdersTest(TestCase):
)
self.event.settings.set('payment_banktransfer__enabled', True)
self.event.settings.set('ticketoutput_testdummy__enabled', True)
self.user = User.objects.create_local_user(self.event, 'demo', 'foo')
self.user2 = User.objects.create_local_user(self.event, 'bar', 'foo')
self.assertTrue(self.client.login(username='demo@%s.event.pretix' % self.event.identity, password='foo'))
self.user = User.objects.create_user('dummy@dummy.dummy', 'foo')
self.user2 = User.objects.create_user('bar@dummy.dummy', 'foo')
self.assertTrue(self.client.login(email='dummy@dummy.dummy', password='foo'))
self.category = ItemCategory.objects.create(event=self.event, name="Everything", position=0)
self.quota_shirts = Quota.objects.create(event=self.event, name='Shirts', size=2)