Finally got authentication to somewhere I'm happy

This commit is contained in:
Tris Forster
2023-02-10 12:01:32 +11:00
parent bc9f292a2e
commit b85440d25c
20 changed files with 415 additions and 171 deletions
+11 -9
View File
@@ -10,7 +10,7 @@ class AccessTestCase(TestCase):
@classmethod
def setUpTestData(cls):
admin = User.objects.create_user(username='admin', password='foobar', is_superuser=True)
admin = User.objects.create_user(username='admin', password='foobar', is_superuser=True, is_staff=True)
homer = User.objects.create_user(username='homer', password='maggie')
now = timezone.now()
@@ -75,7 +75,7 @@ class AccessTestCase(TestCase):
'/ensembles/party-posse/new-project': False,
})
self.authorize('ensemble_detail', ensemble='bleeding-gums')
self.authorize(models.Ensemble, slug='bleeding-gums')
self.assertAccess({
'/ensembles/the-be-sharps': True,
'/ensembles/bleeding-gums': True,
@@ -105,7 +105,7 @@ class AccessTestCase(TestCase):
'/projects/4/resources/add': False,
})
self.client.get(utils.signed_url('project_detail', project=4))
self.authorize(models.Project, pk=4)
response = self.client.get('/projects')
self.assertObjectList(response, ['Open Mic Night', 'Baby on Board'])
response = self.client.get('/projects/4')
@@ -117,7 +117,8 @@ class AccessTestCase(TestCase):
self.assertContains(response, 'You don\'t currently have access to any ensembles')
def test_anon_authorized_ensemble(self):
response = self.client.get(utils.signed_url('ensemble_detail', ensemble='party-posse'))
self.authorize(models.Ensemble, slug='party-posse')
response = self.client.get('/ensembles/party-posse')
self.assertContains(response, 'Party Posse')
response = self.client.get('/ensembles')
@@ -133,9 +134,9 @@ class AccessTestCase(TestCase):
self.assertObjectList(response, ['Navy Recruitment Day'])
def test_anon_authorized_project(self):
self.authorize('project_detail', project=4)
self.authorize(models.Project, pk=4)
self.assertObjectList(self.client.get('/projects'), ['Open Mic Night'])
self.assertObjectList(self.client.get('/ensembles'), [])
self.assertObjectList(self.client.get('/ensembles'), ['Lisa and the Bleeding Gums'])
self.assertAccess({
'/projects/4': True,
@@ -153,9 +154,10 @@ class AccessTestCase(TestCase):
'/ensembles/unknown': False,
})
def authorize(self, url, **kwargs):
response = self.client.get(utils.signed_url(url, **kwargs))
self.assertEqual(response.status_code, 200)
def authorize(self, model, **kwargs):
object = model.objects.get(**kwargs)
response = self.client.get(f'{object.get_absolute_url()}?auth={object.auth()}')
self.assertEqual(response.status_code, 302)
def assertAccess(self, urls):
for url, expected in urls.items():