Update registration mutation with user id and hep calls
This commit is contained in:
parent
909f7337ac
commit
7a532463a6
|
|
@ -66,7 +66,6 @@ class HepClient:
|
|||
elif response.status_code != 200:
|
||||
raise HepClientException(response.status_code, response.json())
|
||||
|
||||
logger.info(response.json())
|
||||
return response
|
||||
|
||||
def fetch_admin_token(self, admin_user, password):
|
||||
|
|
@ -111,15 +110,14 @@ class HepClient:
|
|||
response = self._call('/rest/V1/customers/me', additional_headers={'authorization': 'Bearer {}'.format(token)})
|
||||
return response.json()
|
||||
|
||||
def customer_activate(self, confirmation_key):
|
||||
response = self._call("/customer/account/confirm/?back_url=&id=58862&key=f62319366a5ecdd1e3dede5fd1a5c236", method='put', data={
|
||||
'confirmationKey': confirmation_key
|
||||
})
|
||||
return response.json()
|
||||
def customer_activate(self, confirmation_key, user_id):
|
||||
response = self._call("/customer/account/confirm/?back_url=&id={}&key={}"
|
||||
.format(user_id, confirmation_key), method='get')
|
||||
return response
|
||||
|
||||
def customers_search(self, admin_token, email):
|
||||
response = self._call("/rest/V1/customers/search?searchCriteria[filterGroups][0][filters][0][field]="
|
||||
"email&searchCriteria[filterGroups][0][filters][0][value]={}".format(email), method='get',
|
||||
"email&searchCriteria[filterGroups][0][filters][0][value]={}".format(email),
|
||||
additional_headers={'authorization': 'Bearer {}'.format(admin_token)})
|
||||
|
||||
json_data = response.json()
|
||||
|
|
@ -127,6 +125,11 @@ class HepClient:
|
|||
return json_data['items'][0]
|
||||
return None
|
||||
|
||||
def customers_by_id(self, admin_token, user_id):
|
||||
response = self._call('/rest/V1/customers/{}'.format(user_id),
|
||||
additional_headers={'authorization': 'Bearer {}'.format(admin_token)})
|
||||
return response.json()
|
||||
|
||||
def _customer_orders(self, admin_token, customer_id):
|
||||
url = ("/rest/V1/orders/?searchCriteria[filterGroups][0][filters][0]["
|
||||
"field]=customer_id&searchCriteria[filterGroups][0][filters][0][value]={}".format(customer_id))
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ from django.contrib.auth import login
|
|||
from graphene import relay
|
||||
|
||||
from core.hep_client import HepClient, HepClientException, HepClientUnauthorizedException
|
||||
from core.models import AdminData
|
||||
from users.user_signup_login_handler import handle_user_and_verify_products, UNKNOWN_ERROR
|
||||
|
||||
|
||||
|
|
@ -22,6 +23,7 @@ class RegistrationError(graphene.ObjectType):
|
|||
class Registration(relay.ClientIDMutation):
|
||||
class Input:
|
||||
confirmation_key_input = graphene.String()
|
||||
user_id_input = graphene.Int()
|
||||
|
||||
success = graphene.Boolean()
|
||||
message = graphene.String()
|
||||
|
|
@ -30,13 +32,16 @@ class Registration(relay.ClientIDMutation):
|
|||
@classmethod
|
||||
def mutate_and_get_payload(cls, root, info, **kwargs):
|
||||
confirmation_key = kwargs.get('confirmation_key_input')
|
||||
user_id = kwargs.get('user_id_input')
|
||||
|
||||
hep_client = HepClient()
|
||||
admin_token = AdminData.objects.get_admin_token()
|
||||
|
||||
try:
|
||||
user_data = hep_client.customer_activate(confirmation_key)
|
||||
except HepClientUnauthorizedException:
|
||||
return cls.return_registration_msg('invalid_key')
|
||||
hep_client.customer_activate(confirmation_key, user_id)
|
||||
user_data = hep_client.customers_by_id(admin_token)
|
||||
if 'confirmation' in user_data:
|
||||
return cls.return_registration_msg('invalid_key')
|
||||
except HepClientException:
|
||||
return cls.return_registration_msg('unknown_error')
|
||||
|
||||
|
|
|
|||
|
|
@ -16,10 +16,14 @@ from graphene.test import Client
|
|||
|
||||
from api.schema import schema
|
||||
from core.hep_client import HepClient
|
||||
from core.tests.mock_hep_data_factory import MockResponse, ME_DATA, VALID_TEACHERS_ORDERS
|
||||
from core.tests.mock_hep_data_factory import ME_DATA, VALID_TEACHERS_ORDERS
|
||||
from registration.models import License
|
||||
from users.models import User, Role, SchoolClass
|
||||
|
||||
INVALID_KEY_ME = dict(ME_DATA)
|
||||
|
||||
INVALID_KEY_ME['confirmation'] = 'abddddddd'
|
||||
|
||||
|
||||
class RegistrationTests(TestCase):
|
||||
def setUp(self):
|
||||
|
|
@ -37,7 +41,7 @@ class RegistrationTests(TestCase):
|
|||
request.session.save()
|
||||
self.client = Client(schema=schema, context_value=request)
|
||||
|
||||
def make_register_mutation(self, confirmation_key):
|
||||
def make_register_mutation(self, confirmation_key, user_id):
|
||||
mutation = '''
|
||||
mutation Registration($input: RegistrationInput!){
|
||||
registration(input: $input) {
|
||||
|
|
@ -52,33 +56,38 @@ class RegistrationTests(TestCase):
|
|||
|
||||
return self.client.execute(mutation, variables={
|
||||
'input': {
|
||||
'confirmationKeyInput': confirmation_key
|
||||
'confirmationKeyInput': confirmation_key,
|
||||
'userIdInput': user_id
|
||||
}
|
||||
})
|
||||
|
||||
@patch.object(HepClient, 'customer_activate', return_value=ME_DATA)
|
||||
@patch.object(HepClient, 'customer_activate', return_value="Response")
|
||||
@patch.object(HepClient, 'customers_by_id', return_value=ME_DATA)
|
||||
@patch.object(HepClient, 'myskillbox_product_for_customer', return_value=None)
|
||||
@patch.object(HepClient, 'fetch_admin_token', return_value={'token': 'AABBCCDDEE**44566'})
|
||||
def test_user_can_register_with_valid_confirmation_key_and_no_license(self, admin_mock, product_mock, customer_mock):
|
||||
@patch.object(HepClient, 'fetch_admin_token', return_value=b'"AABBCCDDEE**44566"')
|
||||
def test_user_can_register_with_valid_confirmation_key_and_no_license(self, admin_mock, customer_by_id_mock,
|
||||
product_mock, customer_mock):
|
||||
|
||||
result = self.make_register_mutation('CONFIRMATION_KEY')
|
||||
result = self.make_register_mutation('CONFIRMATION_KEY', 1)
|
||||
|
||||
self.assertTrue(result.get('data').get('registration').get('success'))
|
||||
self.assertEqual(result.get('data').get('registration').get('message'), 'no_valid_license')
|
||||
|
||||
@patch.object(requests, 'post', return_value=MockResponse(401))
|
||||
def test_user_cannot_register_with_invalid_key(self, confirmation_mock):
|
||||
@patch.object(HepClient, 'customers_by_id', return_value=INVALID_KEY_ME)
|
||||
@patch.object(HepClient, 'customer_activate', return_value="Response")
|
||||
def test_user_cannot_register_with_invalid_key(self, id_mock, confirmation_mock):
|
||||
|
||||
result = self.make_register_mutation('CONFIRMATION_KEY')
|
||||
result = self.make_register_mutation('CONFIRMATION_KEY', 1)
|
||||
|
||||
self.assertTrue(result.get('data').get('registration').get('success'))
|
||||
self.assertEqual(result.get('data').get('registration').get('message'), 'invalid_key')
|
||||
|
||||
@patch.object(HepClient, '_customer_orders', return_value=VALID_TEACHERS_ORDERS)
|
||||
@patch.object(HepClient, 'customer_activate', return_value=ME_DATA)
|
||||
@patch.object(HepClient, 'fetch_admin_token', return_value={'token': 'AABBCCDDEE**44566'})
|
||||
def test_teacher_can_register_with_remote_license(self, order_mock, me_mock, admin_token_mock):
|
||||
result = self.make_register_mutation('CONFIRMATION_KEY')
|
||||
@patch.object(HepClient, 'customer_activate', return_value="Response")
|
||||
@patch.object(HepClient, 'customers_by_id', return_value=ME_DATA)
|
||||
@patch.object(HepClient, 'fetch_admin_token', return_value=b'"AABBCCDDEE**44566"')
|
||||
def test_teacher_can_register_with_remote_license(self, admin_mock, id_mock, activate_mock, orders_mock):
|
||||
result = self.make_register_mutation('CONFIRMATION_KEY', 1)
|
||||
|
||||
user = User.objects.get(email=ME_DATA['email'])
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue