Fix oauth tests

This commit is contained in:
Christian Cueni 2021-05-12 16:01:38 +02:00
parent 2c771e5a97
commit c71d8fd6e5
4 changed files with 9 additions and 36 deletions

View File

@ -73,7 +73,6 @@ class LoginTests(TestCase):
self.assertEqual(user.email, ME_DATA['email'])
self.assertTrue(self.user.is_authenticated)
@patch.object(HepClient, 'fetch_eorders', return_value=VALID_TEACHERS_ORDERS)
@patch.object(DjangoRemoteApp, 'authorize_access_token', return_value=TOKEN)
@patch.object(HepClient, 'user_details', return_value=ME_DATA)
@ -119,15 +118,15 @@ class LoginTests(TestCase):
self.assertEqual(response.url, '/login-success?state=success')
self.assertTrue(self.user.is_authenticated)
@patch.object(HepClient, 'fetch_eorders', return_value=VALID_STUDENT_ORDERS)
@patch.object(HepClient, 'is_email_verified', return_value=False)
@patch.object(DjangoRemoteApp, 'authorize_access_token', return_value=TOKEN)
@patch.object(HepClient, 'user_details', return_value=ME_DATA)
def test_user_with_unconfirmed_email_cannot_login(self, user_mock, authorize_mock, verified_mock):
response = self._login('/api/oauth/authorize?code=1234')
User.objects.get(email=ME_DATA['email'])
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, f'/login-success?state={EMAIL_NOT_VERIFIED}')
self.assertEqual(302, response.status_code)
self.assertEqual(f'/login-success?state={EMAIL_NOT_VERIFIED}', response.url)
@patch.object(HepClient, 'fetch_eorders', return_value=[])
@patch.object(DjangoRemoteApp, 'authorize_access_token', return_value=TOKEN)
@ -160,30 +159,6 @@ class LoginTests(TestCase):
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, f'/login-success?state={UNKNOWN_ERROR}')
def test_user_data_is_synced_on_login(self, user_mock, authorize_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()
response = self._login('/api/oauth/authorize?code=1234')
user = User.objects.get(hep_id=self.user.hep_id)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, '/login-success?state=success')
self.assertEqual(user.username, ME_DATA['email'])
self.assertEqual(user.email, ME_DATA['email'])
self.assertTrue(self.user.is_authenticated)
@patch.object(HepClient, 'fetch_eorders', return_value=VALID_TEACHERS_ORDERS)
@patch.object(DjangoRemoteApp, 'authorize_access_token', return_value=TOKEN)
@patch.object(HepClient, 'user_details', return_value=NEW_ME_DATA)

View File

@ -14,11 +14,11 @@ def handle_user_and_verify_products(user_data, token):
user = User.objects.get_or_create_hep_user(user_data)
# try:
# if not hep_client.is_email_verified(user_data):
# return user, EMAIL_NOT_VERIFIED
# except HepClientException:
# return user, UNKNOWN_ERROR
try:
if not hep_client.is_email_verified(user_data):
return user, EMAIL_NOT_VERIFIED
except HepClientException:
return user, UNKNOWN_ERROR
license = License.objects.get_active_license_for_user(user)

View File

@ -12,13 +12,11 @@ import json
from django.http import JsonResponse
from django.views import View
from core.hep_client import HepClient, HepClientException
class RegistrationProxyView(View):
def post(self, request, *args, **kwargs):
hep_client = HepClient()
data = json.loads(request.body)
if not self.terms_accepted(data):

View File

@ -1,7 +1,7 @@
{
"id": 5,
"email": "hans.meier@iterativ.ch",
"email_verified_at": null,
"email_verified_at": 123456789,
"salutation": null,
"company": null,
"first_name": "Hans",