147 lines
5.6 KiB
Python
147 lines
5.6 KiB
Python
from .statements import *
|
|
|
|
@override_settings(TESTING=True)
|
|
class PermissionsViewTests(TestCase):
|
|
def setUp(self):
|
|
self.c = Client()
|
|
## Users - Pro, Basic, Coach & Self Coach
|
|
|
|
self.ucoach = UserFactory(username='coachuser')
|
|
self.rcoach = Rower.objects.create(user=self.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()
|
|
|
|
self.uplan = UserFactory(username='planuser')
|
|
self.rplan = Rower.objects.create(user=self.uplan,
|
|
birthdate=faker.profile()['birthdate'],
|
|
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
|
rowerplan='plan')
|
|
|
|
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()
|
|
|
|
self.upro = UserFactory(username='prouser')
|
|
self.rpro = Rower.objects.create(user=self.upro,
|
|
birthdate=faker.profile()['birthdate'],
|
|
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
|
rowerplan='pro')
|
|
|
|
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()
|
|
|
|
self.uplan2 = UserFactory(username='planuser2')
|
|
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
|
birthdate=faker.profile()['birthdate'],
|
|
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
|
rowerplan='plan')
|
|
|
|
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()
|
|
|
|
self.upro2 = UserFactory(username='prouser2')
|
|
self.rpro2 = Rower.objects.create(user=self.upro2,
|
|
birthdate=faker.profile()['birthdate'],
|
|
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
|
rowerplan='pro')
|
|
|
|
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()
|
|
|
|
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()
|
|
|
|
|
|
|
|
## TeamPro, TeamCoach, TeamSelfCoach
|
|
|
|
self.teampro = Team.objects.create(
|
|
name=faker.word(),
|
|
notes=faker.text(),
|
|
manager=self.upro2)
|
|
|
|
self.teamplan = Team.objects.create(
|
|
name=faker.word()+'2',
|
|
notes=faker.text(),
|
|
manager=self.uplan2)
|
|
|
|
self.teamcoach = Team.objects.create(
|
|
name=faker.word()+'3',
|
|
notes=faker.text(),
|
|
manager=self.ucoach)
|
|
|
|
viewstotest = [
|
|
('workout_view',
|
|
{
|
|
'anonymous': True,
|
|
'anonymous_response':200,
|
|
'own': 'basic',
|
|
'own_response': 200,
|
|
'member': 'basic',
|
|
'member_response': 200,
|
|
'coachee': 'coach',
|
|
'coachee_response': 200,
|
|
'workoutid': False,
|
|
'userid': True,
|
|
}
|
|
)
|
|
]
|
|
|
|
|
|
@parameterized.expand(viewstotest)
|
|
@patch('rowers.dataprep.create_engine')
|
|
@patch('rowers.dataprep.read_df_sql')
|
|
@patch('rowers.dataprep.getsmallrowdata_db')
|
|
@patch('requests.get',side_effect=mocked_requests)
|
|
@patch('requests.post',side_effect=mocked_requests)
|
|
@patch('rowers.dataprep.get_video_data',side_effect=mocked_get_video_data)
|
|
def test_permissions_generator(
|
|
self,view,permissions,
|
|
mocked_sqlalchemy,
|
|
mocked_read_df_sql,
|
|
mocked_getsmallrowdata_db,
|
|
mock_get,
|
|
mock_post,
|
|
mocked_get_video_data,
|
|
):
|
|
|
|
for p in permissions:
|
|
url = reverse(view,kwargs=p['kwargs'])
|
|
if p['login']:
|
|
login = self.c.login(kwargs=p['login'])
|
|
|
|
response = self.c.get(url,follow=True)
|
|
self.assertEqual(response.status_code,200)
|