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)
|
||||
|
||||
# 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:
|
||||
login(info.context, user)
|
||||
|
||||
|
|
|
|||
|
|
@ -30,10 +30,9 @@ from users.models import Role, User, SchoolClass
|
|||
TOKEN = 'abcd12345!'
|
||||
|
||||
|
||||
|
||||
class PasswordResetTests(TestCase):
|
||||
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()
|
||||
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(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_me', return_value=ME_DATA)
|
||||
@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.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'
|
||||
NO_VALID_LICENSE = 'no_valid_license'
|
||||
|
||||
|
||||
def handle_user_and_verify_products(user_data):
|
||||
|
||||
hep_client = HepClient()
|
||||
|
|
|
|||
Loading…
Reference in New Issue