Update email if user changed on hep
This commit is contained in:
parent
ffb330223c
commit
75e1597d6f
|
|
@ -54,6 +54,12 @@ class Login(relay.ClientIDMutation):
|
||||||
|
|
||||||
user, status_msg = handle_user_and_verify_products(user_data)
|
user, status_msg = handle_user_and_verify_products(user_data)
|
||||||
|
|
||||||
|
# sync email if user changed it on hep account
|
||||||
|
if user.email != user_data['email']:
|
||||||
|
user.email = user_data['email']
|
||||||
|
user.username = user_data['email']
|
||||||
|
user.save()
|
||||||
|
|
||||||
if user and status_msg != EMAIL_NOT_VERIFIED:
|
if user and status_msg != EMAIL_NOT_VERIFIED:
|
||||||
login(info.context, user)
|
login(info.context, user)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,9 @@ from users.models import Role, User, SchoolClass
|
||||||
TOKEN = 'abcd12345!'
|
TOKEN = 'abcd12345!'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class PasswordResetTests(TestCase):
|
class PasswordResetTests(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user = UserFactory(username='aschi@iterativ.ch', email='aschi@iterativ.ch')
|
self.user = UserFactory(username=ME_DATA['id'], email=ME_DATA['id'])
|
||||||
Role.objects.create_default_roles()
|
Role.objects.create_default_roles()
|
||||||
self.teacher_role = Role.objects.get_default_teacher_role()
|
self.teacher_role = Role.objects.get_default_teacher_role()
|
||||||
|
|
||||||
|
|
@ -80,6 +79,44 @@ class PasswordResetTests(TestCase):
|
||||||
self.assertTrue(result.get('data').get('login').get('success'))
|
self.assertTrue(result.get('data').get('login').get('success'))
|
||||||
self.assertTrue(self.user.is_authenticated)
|
self.assertTrue(self.user.is_authenticated)
|
||||||
|
|
||||||
|
@patch.object(HepClient, 'customer_me', return_value=ME_DATA)
|
||||||
|
def test_user_can_login_with_updated_email(self, me_mock):
|
||||||
|
|
||||||
|
old_mail = 'aschi@iterativ.ch'
|
||||||
|
|
||||||
|
self.user.hep_id = ME_DATA['id']
|
||||||
|
self.user.email = old_mail
|
||||||
|
self.user.username = old_mail
|
||||||
|
self.user.save()
|
||||||
|
|
||||||
|
now = timezone.now()
|
||||||
|
expiry_date = now + timedelta(365)
|
||||||
|
LicenseFactory(expire_date=expiry_date, licensee=self.user, for_role=self.teacher_role).save()
|
||||||
|
|
||||||
|
result = self.make_login_mutation(self.user.email, TOKEN)
|
||||||
|
|
||||||
|
user = User.objects.get(hep_id=self.user.hep_id)
|
||||||
|
|
||||||
|
self.assertEqual(user.username, ME_DATA['email'])
|
||||||
|
self.assertEqual(user.email, ME_DATA['email'])
|
||||||
|
self.assertTrue(result.get('data').get('login').get('success'))
|
||||||
|
self.assertTrue(self.user.is_authenticated)
|
||||||
|
|
||||||
|
@patch.object(HepClient, 'customer_me', return_value=ME_DATA)
|
||||||
|
def test_user_can_login_with_local_user_and_valid_local_license(self, me_mock):
|
||||||
|
|
||||||
|
self.user.hep_id = ME_DATA['id']
|
||||||
|
self.user.save()
|
||||||
|
|
||||||
|
now = timezone.now()
|
||||||
|
expiry_date = now + timedelta(365)
|
||||||
|
LicenseFactory(expire_date=expiry_date, licensee=self.user, for_role=self.teacher_role).save()
|
||||||
|
|
||||||
|
result = self.make_login_mutation(self.user.email, TOKEN)
|
||||||
|
|
||||||
|
self.assertTrue(result.get('data').get('login').get('success'))
|
||||||
|
self.assertTrue(self.user.is_authenticated)
|
||||||
|
|
||||||
@patch.object(HepClient, '_customer_orders', return_value=VALID_TEACHERS_ORDERS)
|
@patch.object(HepClient, '_customer_orders', return_value=VALID_TEACHERS_ORDERS)
|
||||||
@patch.object(HepClient, 'customer_me', return_value=ME_DATA)
|
@patch.object(HepClient, 'customer_me', return_value=ME_DATA)
|
||||||
@patch.object(HepClient, 'fetch_admin_token', return_value={'token': 'AABBCCDDEE**44566'})
|
@patch.object(HepClient, 'fetch_admin_token', return_value={'token': 'AABBCCDDEE**44566'})
|
||||||
|
|
@ -171,14 +208,3 @@ class PasswordResetTests(TestCase):
|
||||||
|
|
||||||
self.assertFalse(result.get('data').get('login').get('success'))
|
self.assertFalse(result.get('data').get('login').get('success'))
|
||||||
self.assertEqual(result.get('data').get('login').get('errors')[0].get('field'), 'unknown_error')
|
self.assertEqual(result.get('data').get('login').get('errors')[0].get('field'), 'unknown_error')
|
||||||
|
|
||||||
## can login with license and user
|
|
||||||
## can login with no user and license
|
|
||||||
# ?can login with no user and local license
|
|
||||||
## cannot login without user
|
|
||||||
## cannot login with user and not verfied
|
|
||||||
## cannot login with user and no license
|
|
||||||
## cannot login with user and expired license
|
|
||||||
## non 200 error
|
|
||||||
# if more than one valid license take correct
|
|
||||||
# if mulitple licenses and one correct take one test in own class
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ EMAIL_NOT_VERIFIED = 'email_not_verified'
|
||||||
UNKNOWN_ERROR = 'unknown_error'
|
UNKNOWN_ERROR = 'unknown_error'
|
||||||
NO_VALID_LICENSE = 'no_valid_license'
|
NO_VALID_LICENSE = 'no_valid_license'
|
||||||
|
|
||||||
|
|
||||||
def handle_user_and_verify_products(user_data):
|
def handle_user_and_verify_products(user_data):
|
||||||
|
|
||||||
hep_client = HepClient()
|
hep_client = HepClient()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue