diff --git a/rowers/tests/test_permissions2.py b/rowers/tests/test_permissions2.py new file mode 100644 index 00000000..64dee035 --- /dev/null +++ b/rowers/tests/test_permissions2.py @@ -0,0 +1,139 @@ +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', + [ + { + 'login': False, + 'kwargs': {'id': encoded1} + } + ]) + ] + + + @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)