def initialize(): if config['TESTING']: for k in debug_config.keys(): config[k] = debug_config[k] # initialize Data Storage userstore = UserStore() userstore.set_database_path(config.get('DATABASE_PATH')) # initialize loggers logger = logging.getLogger('auth') handler = logging.FileHandler(config.get('LOG_FILE')) formatter = logging.Formatter(config['LOG']['FORMAT']) handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.DEBUG) logger = logging.getLogger('service') handler = logging.FileHandler(config.get('LOG_FILE')) formatter = logging.Formatter(config['LOG']['FORMAT']) handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.DEBUG)
def add_user(): response = create_generic_response_dict() if request.method == 'POST' or request.method == 'PUT': # create user data = request.form username = data.get('username',None) password = data.get('password', None) if username == None or password == None: # Let the caller know that username or password can not be empty. logger.info("Caught add_user request["+request.method+"] with insufficient parameters.") response['error'] = True response['message'] = 'Username and password can not be empty' return jsonify(response) first_name = data.get('firstname','') last_name = data.get('lastname','') email = data.get('email','') # Create user and assign values user = User(username, password) user.first_name = first_name user.last_name = last_name user.email = email if user.validate(): datastore = UserStore() if not datastore.has_user(user) and not datastore.is_username_taken(user.username): # if doesn't exist then register user datastore.save_user(user); # success logger.info('Caught add_user request['+request.method+'] - User['+user.username+'] was successfully registered.') response['message'] = 'User was successfully created.' response['data'] = user.get_values_as_dict() else: # failed because it already exists? logger.info('Caught add_user request['+request.method+'] - User['+user.username+'] was already registered.') response['error'] = True response['message'] = 'User was not successfully created. User information is not unique.' pass else: # Not valid logger.info('Caught add_user request['+request.method+'] - User['+user.username+'] did not validate correctly.') response['error'] = True response['message'] = 'User information was not validated correctly' response['data'] = user.get_errors() pass return jsonify(response)
class DataStoreTestCase(unittest.TestCase): database_path = "temp.db" provider = None def setUp(self): # userprovider.initialize(self.database_path) self.provider = UserStore() self.provider.set_database_path(self.database_path) pass def tearDown(self): #os.remove(self.database_path) self.provider.close() self.provider = None os.unlink(self.database_path) pass def testInitialize(self): # Check DB was created self.assertTrue(os.path.isfile(self.database_path), 'Temporary db should\'ve been created') # Check user_table was created. query = "SELECT * FROM sqlite_master WHERE type='table' AND name='user_table'" cursor = self.provider.__get_cursor__() cursor.execute(query) list = cursor.fetchall() self.assertTrue(len(list) > 0, "User_table should've been created") def test_add_user(self): data = { 'username': '******', 'password': '******' } # Create user user = User(data['username'], data['password']) self.provider.save_user(user) # Get user back and check if the same saved_user = self.provider.get_user(data['username']) self.assertEqual(user, saved_user, "Users should've been same") self.assertTrue(self.provider.has_user(user), "User should already exists") self.assertTrue(self.provider.is_username_taken(user.username), "Username should already exists")
def get_user(user_id): response = create_generic_response_dict() logger.info('Caught get request for user_id:' + str(user_id)) if request.method == 'GET': # TODO need permission check datastore = UserStore() user = datastore.get_user_by_id(user_id) if user == None: response['error'] = True response['message'] = 'User with that ID does not exist.' else: response['message'] = 'User was successfully retrieved.' response['data'] = user.get_values_as_dict() return jsonify(response)
def logout_user(user_id): response = create_generic_response_dict() if request.method == 'POST': datastore = UserStore() user = datastore.get_user_by_id(user_id) if user == None: response['error'] = True response['message'] = 'User was not found.' else: token_store = AuthTokenStore() token_store.kill_user_token(user) response['message'] = 'User logged out successfully' logger.info('Caught logout request for user_id:' + str(user_id) + '->' + response['message']) return jsonify(response)
def delete_user(user_id): logger.info('Caught delete request for user_id:' + str(user_id)) response = create_generic_response_dict() if request.method == 'DELETE': # need permission check datastore = UserStore() user = datastore.get_user_by_id(user_id) if user == None: response['error'] = True response['message'] = "User does not exists." else: datastore.deactivate_user(user) response['message'] = "User was successfully deleted." logger.info('Caught delete request for user_id:' + str(user_id) + '->' + response['message']) return jsonify(response)
def login_user(user_id): response = create_generic_response_dict() if request.method == 'POST': data = request.form password = data.get("password", None) datastore = UserStore() user = datastore.get_user_by_id(user_id) if user == None or password == None or not security.validate_login(user, password): response['error'] = True response['message'] = 'User and password combination does not validate.' else: auth_token = AuthTokenStore().register(user) user_data = user.get_values_as_dict() user_data['token'] = auth_token.get_values_as_dict() response['data'] = user_data response['message'] = 'User successfully logged in' logger.info('Caught login request for user_id:' + str(user_id) + '->' + response['message']) return jsonify(response)
def setUp(self): # userprovider.initialize(self.database_path) self.provider = UserStore() self.provider.set_database_path(self.database_path) pass
def __init__(self, dbname=DEFAULT_DATABASE_NAME): self._db = connect(dbname) self.userstore = UserStore(self._db) self.messagestore = MessageStore(self._db)