def authentication(role, post_data): """ Register a patient in the system. The post data is in json format. :param post_data: dict :returns: a status, a str( patient's info on success, err info on failure) """ # print(post_data) auth_dict = {} try: logger.debug('in authentication') user = LoginModel.get(LoginModel.username==post_data['username'], LoginModel.role==role) except Exception as ex: logger.error('Exception: ', ex) return 0, 'auth failed' else: logger.debug("user.password:{}, post_data['password']:{}".format( user.password, post_data['password'])) if user.password==post_data['password']: try: # auth_dict['token'] = get_token(post_data['username'], role) token = get_token(post_data['username'], role) except Exception as ex: logger.error('Exception: ', ex) return 0, 'auth failed, get token failed' else: # auth_json = json.dumps(auth_dict) logger.debug(token) return 1, token else: return 0, 'auth failed, password not match'
def test_auth_success(self): logger.debug('in test_auth_success') adminid = 'admin_{}'.format(str(uuid.uuid4())) LoginModel.create( username=adminid, password='******', role='admin' ) adm_login = { 'username':adminid, 'password':'******', } success_token = mock.Mock(return_value='admintoken') auth.get_token = success_token self.assertEqual(auth.authentication('admin', adm_login)[0], 1) self.assertEqual(auth.authentication('admin', adm_login)[1], 'admintoken')
def test_auth_fail(self): logger.debug('in test_auth_success fail') adminid = 'admin_{}'.format(str(uuid.uuid4())) LoginModel.create( username=adminid, password='******', role='admin' ) adm_login = { 'username':adminid, 'password':'******', } fail_token = mock.Mock(return_value='admintoken') auth.get_token = fail_token self.assertEqual(auth.authentication('admin', adm_login)[0], 0) self.assertEqual(auth.authentication('admin', adm_login)[1], 'auth failed, password not match') self.assertEqual(auth.authentication('doctor', adm_login)[0], 0) self.assertEqual(auth.authentication('doctor', adm_login)[1], 'auth failed')
def register_doctor(post_data): """ Register a doctor in the system. The post data is a dict. :param post_data: dict :returns: a status, a str( doctor's info on success, err info on failure) """ # print(post_data) doctor = '' try: logger.debug('in register_doctor') with database.atomic(): doctor = DoctorModel.create_by_dict(post_data) logger.debug(doctor) logger.debug('in database.atomic') # except peewee.IntegrityError: # logger.warning('in doctor model create except') # # `username` is a unique column, so this username already exists, # # making it safe to call .get(). # old_user = AccountModel.get(AccountModel.username == username) # logger.warning('user exists...') # resp_dict['info'] = 'user exists, did not create user:%s' % username # resp.status = falcon.HTTP_409 # try: # change_user = AccountModel.get(AccountModel.username==username, # AccountModel.password==password) # except: # logger.debug('change user data failed...') except Exception as ex: logger.error('Exception: ', ex) q = DoctorModel.delete().where(DoctorModel.email==doctor) q.execute() return 0, 'create doctor failed, did not create doctor', '' try: with database.atomic(): user = LoginModel.create_by_dict('doctor', post_data) logger.debug(doctor) logger.debug('in database.atomic') # except peewee.IntegrityError: # logger.warning('in doctor model create except') # # `username` is a unique column, so this username already exists, # # making it safe to call .get(). # old_user = AccountModel.get(AccountModel.username == username) # logger.warning('user exists...') # resp_dict['info'] = 'user exists, did not create user:%s' % username # resp.status = falcon.HTTP_409 # try: # change_user = AccountModel.get(AccountModel.username==username, # AccountModel.password==password) # except: # logger.debug('change user data failed...') except Exception as ex: logger.error('Exception: ', ex) q = LoginModel.delete().where(LoginModel.username==doctor) q.execute() return 0, 'create doctor failed, did not create doctor', '' else: return 1, str(doctor), str(user.password)