Move methods to manager, add tests

This commit is contained in:
Christian Cueni 2021-05-06 11:12:22 +02:00
parent 549bf1ef28
commit bfdd743afd
8 changed files with 80 additions and 19 deletions

View File

@ -9,13 +9,10 @@ UNKNOWN_ERROR = 'unknown_error'
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()
try:
user = User.objects.get(hep_id=user_data['id'])
except User.DoesNotExist:
user = User.objects.create_user_from_hep(user_data)
user = User.objects.get_or_create_hep_user(user_data) # todo: test
try:
if not hep_client.is_email_verified(user_data):
@ -23,18 +20,18 @@ def handle_user_and_verify_products(user_data, ):
except HepClientException:
return user, UNKNOWN_ERROR
license = License.objects.get_active_license_for_user(user)
if not license:
license, error_msg = check_and_create_licenses(hep_client, user)
if error_msg:
return user, error_msg
create_role_for_user(user, license.for_role.key)
if not license.is_valid():
return user, NO_VALID_LICENSE
# license = License.objects.get_active_license_for_user(user)
#
# if not license:
# license, error_msg = check_and_create_licenses(hep_client, user)
#
# if error_msg:
# return user, error_msg
#
# create_role_for_user(user, license.for_role.key)
#
# if not license.is_valid():
# return user, NO_VALID_LICENSE
return user, None

View File

@ -126,6 +126,15 @@ class UserManager(DjangoUserManager):
return user
def get_or_create_hep_user(self, user_data):
try:
user = self.get(hep_id=user_data['id'])
except self.model.DoesNotExist:
user = self.create_user_from_hep(user_data)
return user
class LicenseManager(models.Manager):

View File

@ -7,8 +7,8 @@
"updated_at": "2019-11-26 17:04:29",
"created_in": "hep verlag",
"email": "1heptest19072018@mailinator.com",
"firstname": "Test",
"lastname": "Test",
"first_name": "Test",
"last_name": "Test",
"prefix": "Frau",
"gender": 2,
"store_id": 1,

View File

@ -0,0 +1,55 @@
from datetime import timedelta
from unittest.mock import patch
import requests
from django.conf import settings
from django.contrib.sessions.middleware import SessionMiddleware
from django.test import TestCase, RequestFactory
from django.utils import timezone
from graphene.test import Client
from api.schema_public import schema
from core.factories import UserFactory
from users.tests.mock_hep_data_factory import MockResponse, ME_DATA, VALID_STUDENT_ORDERS, VALID_TEACHERS_ORDERS, \
NOT_CONFIRMED_ME
from users.factories import LicenseFactory
from users.models import Role, User, SchoolClass, License, UserData
TOKEN = 'abcd12345!'
MYSKILLBOX_GROUP_ID_ME_DATA = ME_DATA.copy()
MYSKILLBOX_GROUP_ID_ME_DATA['group_id'] = settings.HEP_MYSKILLBOX_GROUP_ID
class UserManagerTests(TestCase):
def setUp(self):
self.user = UserFactory(username=ME_DATA['email'], email=ME_DATA['email'], hep_id=ME_DATA['id'])
def test_get_existing_user(self):
user_data = {
'id': ME_DATA['id']
}
user = User.objects.get_or_create_hep_user(user_data)
self.assertEqual(user.id, self.user.id)
def test_create_new_user(self):
new_hep_id = ME_DATA['id'] + 1
try:
User.objects.get(hep_id=new_hep_id)
self.fail('UserManagerTests.test_create_new_user failed: User already exists!')
except User.DoesNotExist:
pass
user_data = {
'id': new_hep_id,
'first_name': ME_DATA['first_name'],
'last_name': ME_DATA['last_name'],
'email': ME_DATA['email'],
}
user = User.objects.get_or_create_hep_user(user_data)
self.assertEqual(user.hep_id, new_hep_id)