From c13ed2a5b2fcf2abdecf3b5090630f92838246b1 Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Wed, 29 Jan 2020 09:52:31 +0100 Subject: [PATCH] Verify valid product, move default school creation --- server/users/models.py | 6 ++++++ server/users/mutations_public.py | 37 ++++---------------------------- server/users/tests/test_login.py | 16 ++++++++++++++ 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/server/users/models.py b/server/users/models.py index 22a99b28..24da0250 100644 --- a/server/users/models.py +++ b/server/users/models.py @@ -94,6 +94,12 @@ class SchoolClass(models.Model): return '{} {}'.format(prefix, index + 1) + @classmethod + def create_default_group_for_teacher(cls, user): + default_class_name = cls.generate_default_group_name() + default_class = cls.objects.create(name=default_class_name) + user.school_classes.add(default_class) + def is_user_in_schoolclass(self, user): return user.is_superuser or user.school_classes.filter(pk=self.id).count() > 0 diff --git a/server/users/mutations_public.py b/server/users/mutations_public.py index c22e9146..16c23eeb 100644 --- a/server/users/mutations_public.py +++ b/server/users/mutations_public.py @@ -66,6 +66,7 @@ class Login(relay.ClientIDMutation): try: license = License.objects.get(licensee=user) + # Todo how handle invalid license? Cron Job? How to select correct license? Save all licenses? History? except License.DoesNotExist: product = hep_client.myskillbox_product_for_customer(settings.HEP_ADMIN_TOKEN, user.hep_id) @@ -80,43 +81,13 @@ class Login(relay.ClientIDMutation): UserRole.objects.create_role_for_user(user, license.for_role.key) if license.for_role.key == Role.objects.TEACHER_KEY: - default_class_name = SchoolClass.generate_default_group_name() - default_class = SchoolClass.objects.create(name=default_class_name) - user.school_classes.add(default_class) - - # if teacher create class - # if student add to class if exists??? - - # no orders - # network errors - # Todo get orders from magento - # check items - # show buy or create license - - - - # check items - # show buy page + SchoolClass.create_default_group_for_teacher(user) if not license.is_valid(): - pass + error = LoginError(field='no_valid_license') + return cls(success=False, errors=[error]) - # show page - - # - - # user_license = None - # - # try: - # user_license = License.objects.get(licensee=user) - # except License.DoesNotExist: - # # current users have no license, allow them to login - # pass - # - # if user_license is not None and not user_license.license_type.active: - # error = LoginError(field='license_inactive') - # return cls(success=False, errors=[error]) login(info.context, user) return cls(success=True, errors=[]) diff --git a/server/users/tests/test_login.py b/server/users/tests/test_login.py index 2f67bbc5..5e18cdb9 100644 --- a/server/users/tests/test_login.py +++ b/server/users/tests/test_login.py @@ -190,6 +190,22 @@ class PasswordResetTests(TestCase): self.assertFalse(result.get('data').get('login').get('success')) self.assertEqual(result.get('data').get('login').get('errors')[0].get('field'), 'no_valid_license') + @patch.object(HepClient, 'customer_token', return_value={'token': FAKE_TOKEN}) + @patch.object(HepClient, 'customer_me', return_value=ME_DATA) + def test_user_cannot_login_local_license_invalid(self, me_mock, token_mock): + now = timezone.now() + expiry_date = now - timedelta(1) + LicenseFactory(expire_date=expiry_date, licensee=self.user, for_role=self.teacher_role).save() + + result = self.make_login_mutation(self.user.email, 'test123') + + token = MagentoToken.objects.get(user=self.user) + self.assertEqual(token.token, FAKE_TOKEN) + + self.assertFalse(result.get('data').get('login').get('success')) + self.assertEqual(result.get('data').get('login').get('errors')[0].get('field'), 'no_valid_license') + + ## can login with license and user ## can login with no user and license # ?can login with no user and local license