def demo_login(guid): """ Login to a demo as a specific user :param { "userId": "123" } :return: { "token": "eyJhbGciOi...WT2aGgjY5JHvCsbA" } """ data = request.get_json() user_id = data.get('userId') web_utils.check_null_input((user_id, 'username when logging in'), (guid, 'demo guid when logging in')) # Login through the ERP system and create a JWT valid for 2 weeks auth_data = user_service.login(guid, user_id) auth_data['exp'] = datetime.utcnow() + timedelta(days=14) token = web_utils.tokenize(auth_data) resp = Response(json.dumps({'token': token}), status=200, mimetype='application/json') resp.set_cookie('auth_token', token, httponly=True) return resp
def test_tokenize_and_detokenize(self): """Is auth data correctly tokenized and later detokenized?""" # Create demo demo = test_utils.create_demo() demo_json = loads(demo) demo_guid = demo_json.get('guid') demo_user_id = demo_json.get('users')[0].get('id') # Log in user and tokenize auth data auth_data = user_service.login(demo_guid, demo_user_id) auth_data['exp'] = datetime.utcnow() + timedelta(days=14) token = web_utils.tokenize(auth_data) # Detokenize auth data decrypted_auth_data = web_utils.detokenize(token) # Check that decrypted data is equivalent to auth data self.assertTrue(auth_data.get('loopback_token') == decrypted_auth_data.get('loopback_token')) self.assertTrue(auth_data.get('exp') == decrypted_auth_data.get('exp')) self.assertTrue(auth_data.get('user').get('id') == decrypted_auth_data.get('user').get('id')) # Destroy demo test_utils.delete_demo(demo_guid)
def test_user_login_success(self): """With correct values, is a valid user logged in?""" # Log in user demo_json = loads(self.demo) auth_data = user_service.login(demo_json.get('guid'), demo_json.get('users')[0].get('id')) # TODO: Update to use assertIsInstance(a,b) # Check all expected object values are present self.assertTrue(auth_data.get('loopback_token')) self.assertTrue(auth_data.get('user')) user_json = auth_data.get('user') self.assertTrue(user_json.get('id')) self.assertTrue(user_json.get('demoId')) self.assertTrue(user_json.get('username')) self.assertTrue(user_json.get('email')) if user_json.get('roles'): for role_json in user_json.get('roles'): self.assertTrue(role_json.get('id')) self.assertTrue(role_json.get('name')) self.assertTrue(role_json.get('created')) self.assertTrue(role_json.get('modified'))
def test_user_login_success(self): """With correct values, is a valid user logged in?""" # Log in user demo_json = loads(self.demo) auth_data = user_service.login(demo_json.get('guid'), demo_json.get('users')[0].get('id')) # TODO: Update to use assertIsInstance(a,b) # Check all expected object values are present self.assertTrue(auth_data.get('loopback_token')) self.assertTrue(auth_data.get('user')) user_json = auth_data.get('user') self.assertTrue(user_json.get('id')) self.assertTrue(user_json.get('demoId')) self.assertTrue(user_json.get('username')) self.assertTrue(user_json.get('email')) if user_json.get('roles'): for role_json in user_json.get('roles'): self.assertTrue(role_json.get('id')) self.assertTrue(role_json.get('name')) self.assertTrue(role_json.get('created')) self.assertTrue(role_json.get('modified'))
def test_tokenize_and_detokenize(self): """Is auth data correctly tokenized and later detokenized?""" # Create demo demo = test_utils.create_demo() demo_json = loads(demo) demo_guid = demo_json.get('guid') demo_user_id = demo_json.get('users')[0].get('id') # Log in user and tokenize auth data auth_data = user_service.login(demo_guid, demo_user_id) auth_data['exp'] = datetime.utcnow() + timedelta(days=14) token = web_utils.tokenize(auth_data) # Detokenize auth data decrypted_auth_data = web_utils.detokenize(token) # Check that decrypted data is equivalent to auth data self.assertTrue( auth_data.get('loopback_token') == decrypted_auth_data.get( 'loopback_token')) self.assertTrue(auth_data.get('exp') == decrypted_auth_data.get('exp')) self.assertTrue( auth_data.get('user').get('id') == decrypted_auth_data.get( 'user').get('id')) # Destroy demo test_utils.delete_demo(demo_guid)
def test_user_login_success(self): """With correct values, is a valid user logged in?""" # Log in user demo_json = loads(self.demo) test_utils.mock_with_file( httpretty.POST, "http://0.0.0.0:3000/api/v1/Demos/DemoGUID/loginAs", "server/tests/mocks/POST_api_v1_Demos_DemoGUID_loginAs_200.json", 200) auth_data = user_service.login(demo_json.get('guid'), demo_json.get('users')[0].get('id')) # TODO: Update to use assertIsInstance(a,b) # Check all expected object values are present self.assertTrue(auth_data.get('loopback_token')) self.assertTrue(auth_data.get('user')) user_json = auth_data.get('user') self.assertTrue(user_json.get('id')) self.assertTrue(user_json.get('demoId')) self.assertTrue(user_json.get('username')) self.assertTrue(user_json.get('email')) if user_json.get('roles'): for role_json in user_json.get('roles'): self.assertTrue(role_json.get('id')) self.assertTrue(role_json.get('name')) self.assertTrue(role_json.get('created')) self.assertTrue(role_json.get('modified'))
def demo_login(guid): """ Login to a demo as a specific user :param { "userId": "123" } :return: { "token": "eyJhbGciOi...WT2aGgjY5JHvCsbA" } """ data = request.get_json() user_id = data.get('userId') web_utils.check_null_input((user_id, 'username when logging in'), (guid, 'demo guid when logging in')) # Login through the ERP system and create a JWT valid for 2 weeks auth_data = user_service.login(guid, user_id) auth_data['exp'] = datetime.utcnow() + timedelta(days=14) token = web_utils.tokenize(auth_data) resp = Response(json.dumps({'token': token}), status=200, mimetype='application/json') resp.set_cookie('auth_token', token, httponly=True) return resp
def setUp(self): # Create demo self.demo = utils.create_demo() demo_json = loads(self.demo) demo_guid = demo_json.get('guid') demo_user_id = demo_json.get('users')[0].get('id') # Log in user auth_data = user_service.login(demo_guid, demo_user_id) self.loopback_token = auth_data.get('loopback_token')
def setUp(self): # Create demo self.demo = demo_service.create_demo() demo_json = loads(self.demo) demo_guid = demo_json.get('guid') demo_user_id = demo_json.get('users')[0].get('id') # Log in user auth_data = user_service.login(demo_guid, demo_user_id) self.loopback_token = auth_data.get('loopback_token')
def setUp(self): # Create demo test_utils.mock_with_file( httpretty.POST, "http://0.0.0.0:3000/api/v1/Demos", "server/tests/mocks/POST_api_v1_Demos_200.json", 200) self.demo = test_utils.create_demo() demo_json = loads(self.demo) demo_guid = demo_json.get('guid') demo_user_id = demo_json.get('users')[0].get('id') # Log in user auth_data = user_service.login(demo_guid, demo_user_id) self.loopback_token = auth_data.get('loopback_token')