Private
Public Access
1
0

working on one row

This commit is contained in:
Sander Roosendaal
2020-01-19 12:34:04 +01:00
parent 1e7253995b
commit 17f2b568ff
2 changed files with 451 additions and 378 deletions

View File

@@ -6,83 +6,107 @@ class PermissionsViewTests(TestCase):
self.c = Client()
## Users - Pro, Basic, Coach & Self Coach
self.ucoach = UserFactory(username='coachuser')
self.rcoach = Rower.objects.create(user=self.ucoach,
ucoach = UserFactory(username='coachuser')
rcoach = Rower.objects.create(user=ucoach,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='coach',clubsize=10)
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
self.coachinggroup = CoachingGroup.objects.create()
self.rcoach.mycoachgroup = self.coachinggroup
self.rcoach.save()
self.factory = RequestFactory()
self.ucoachpassword = faker.word()
self.ucoach.set_password(self.ucoachpassword)
self.ucoach.save()
ucoach_workouts = WorkoutFactory.create_batch(5, user=rcoach)
coachinggroup = CoachingGroup.objects.create()
rcoach.mycoachgroup = coachinggroup
rcoach.save()
self.uplan = UserFactory(username='planuser')
self.rplan = Rower.objects.create(user=self.uplan,
ucoachpassword = faker.word()
ucoach.set_password(ucoachpassword)
ucoach.save()
self.ucoach = {
'user': ucoach,
'password': ucoachpassword,
'username': ucoach.username,
'workouts': ucoach_workouts,
}
uplan = UserFactory(username='planuser')
rplan = Rower.objects.create(user=uplan,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan')
rowerplan='plan',clubsize=10)
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
self.factory = RequestFactory()
self.uplanpassword = faker.word()
self.uplan.set_password(self.uplanpassword)
self.uplan.save()
uplan_workouts = WorkoutFactory.create_batch(5, user=rplan)
rcoach.save()
self.upro = UserFactory(username='prouser')
self.rpro = Rower.objects.create(user=self.upro,
uplanpassword = faker.word()
uplan.set_password(uplanpassword)
uplan.save()
self.uplan = {
'user': uplan,
'password': uplanpassword,
'username': uplan.username,
'workouts': uplan_workouts,
}
uplan2 = UserFactory(username='plan2user')
rplan2 = Rower.objects.create(user=uplan2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro')
rowerplan='plan',clubsize=10)
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
self.factory = RequestFactory()
self.upropassword = faker.word()
self.upro.set_password(self.upropassword)
self.upro.save()
uplan2_workouts = WorkoutFactory.create_batch(5, user=rplan2)
rcoach.save()
self.uplan2 = UserFactory(username='planuser2')
self.rplan2 = Rower.objects.create(user=self.uplan2,
uplan2password = faker.word()
uplan2.set_password(uplan2password)
uplan2.save()
self.uplan2 = {
'user': uplan2,
'password': uplan2password,
'username': uplan2.username,
'workouts': uplan2_workouts,
}
upro = UserFactory(username='prouser')
rpro = Rower.objects.create(user=upro,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan')
rowerplan='pro',clubsize=10)
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
self.factory = RequestFactory()
self.uplan2password = faker.word()
self.uplan2.set_password(self.uplan2password)
self.uplan2.save()
upro_workouts = WorkoutFactory.create_batch(5, user=rpro)
rcoach.save()
self.upro2 = UserFactory(username='prouser2')
self.rpro2 = Rower.objects.create(user=self.upro2,
upropassword = faker.word()
upro.set_password(upropassword)
upro.save()
self.upro = {
'user': upro,
'password': upropassword,
'username': upro.username,
'workouts': upro_workouts,
}
ubasic = UserFactory(username='basicuser')
rbasic = Rower.objects.create(user=ubasic,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro')
rowerplan='basic',clubsize=10)
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
self.factory = RequestFactory()
self.upro2password = faker.word()
self.upro2.set_password(self.upro2password)
self.upro2.save()
ubasic_workouts = WorkoutFactory.create_batch(5, user=rbasic)
rcoach.save()
self.ubasic = UserFactory(username='basicuser')
self.rbasic = Rower.objects.create(user=self.ubasic,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='basic')
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
self.ubasic_workouts[0].privacy == 'private'
self.factory = RequestFactory()
self.ubasicpassword = faker.word()
self.ubasic.set_password(self.ubasicpassword)
self.ubasic.save()
ubasicpassword = faker.word()
ubasic.set_password(ubasicpassword)
ubasic.save()
self.ubasic = {
'user': ubasic,
'password': ubasicpassword,
'username': ubasic.username,
'workouts': ubasic_workouts,
}
## TeamPro, TeamCoach, TeamSelfCoach
@@ -90,17 +114,17 @@ class PermissionsViewTests(TestCase):
self.teampro = Team.objects.create(
name=faker.word(),
notes=faker.text(),
manager=self.upro2)
manager=self.upro['user'])
self.teamplan = Team.objects.create(
name=faker.word()+'2',
notes=faker.text(),
manager=self.uplan2)
manager=self.uplan2['user'])
self.teamcoach = Team.objects.create(
name=faker.word()+'3',
notes=faker.text(),
manager=self.ucoach)
manager=self.ucoach['user'])
viewstotest = [
('workout_view',
@@ -109,17 +133,23 @@ class PermissionsViewTests(TestCase):
'anonymous_response':200,
'own': 'basic',
'own_response': 200,
'own_nonperm': 302,
'member': 'basic',
'member_response': 200,
'member_nonperm': 404,
'coachee': 'coach',
'coachee_response': 200,
'workoutid': False,
'userid': True,
'coachee_nonperm': 404,
'is_staff': False,
'workoutid': True,
'userid': False,
}
)
]
@parameterized.expand(viewstotest)
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.read_df_sql')
@@ -137,10 +167,53 @@ class PermissionsViewTests(TestCase):
mocked_get_video_data,
):
for p in permissions:
url = reverse(view,kwargs=p['kwargs'])
if p['login']:
login = self.c.login(kwargs=p['login'])
if permissions['anonymous'] and not permissions['is_staff']:
urlstotest = []
if permissions['workoutid']:
url = reverse(view,kwargs={'id':encoder.encode_hex(self.ucoach['workouts'][0].id)})
urlstotest.append(url)
else:
url = reverse(view)
response = self.c.get(url,follow=True)
self.assertEqual(response.status_code,200)
for url in urlstotest:
print(url)
result = self.c.get(url)
self.assertEqual(result.status_code,permissions['anonymous_response'])
if permissions['own'] and not permissions['is_staff']:
urlstotest = []
falseurlstotest = []
if permissions['own'] == 'basic':
thisuser = self.ubasic
notuser = None
elif permissions['own'] == 'pro':
thisuser = self.upro
notuser = self.ubasic
elif permissions['own'] == 'plan':
thisuser = self.uplan
notuser = self.upro
elif permissions['own'] == 'coach':
thisuser = self.ucoach
notuser = self.uplan
if permissions['workoutid']:
workouts = thisuser['workouts']
url = reverse(view,kwargs={'id':encoder.encode_hex(workouts[0].id)})
urlstotest.append(url)
if notuser:
workouts = notuser['workouts']
url = reverse(view,kwargs={'id':encoder.encode_hex(workouts[0].id)})
falseurlstotest.append(url)
for url in urlstotest:
print(url)
login = self.c.login(username = thisuser['username'],password = thisuser['password'])
result = self.c.get(url)
self.assertEqual(result.status_code, permissions['own_response'])
for url in falseurlstotest:
print(url)
login = self.c.login(username = notuser['username'],password = notuser['password'])
result = self.c.get(url)
self.assertEqual(result.status_code, permissions['own_response'])