class Database(object): """ Handle both databases. """ def __init__(self): self.user_database = UserDatabase() self.site_database = SiteDatabase() def push(self, userid, url): """ Push data to databases. """ self.site_database.push(url) url_idx = self.site_database.ch_url_to_idx(url) self.user_database.push(userid, url_idx)
def setUp(self): connection = pymongo.MongoClient('mongodb://localhost:27017/') self.database = connection.test self.collection = self.database.user self.collection.drop() self.user = UserDatabase() # monkey patch the mongodb handler to use the test database of user from mongodbhandler import MongoDatabaseHandler MongoDatabaseHandler.get_users_collection = self.get_user_collection
class BasicHandler(SessionHandler): __lock__ = threading.Lock() __database__ = UserDatabase("user.db") __oauth__ = FangcloudOAuth2FlowBase() def get_login_user(self): return self.get_session_obj("login_user") def set_login_user(self, username): self.set_session_obj("login_user", username) def user_logout(self): self.del_session_obj("login_user") def set_state(self, value): self.set_session_obj("state", value) def get_state(self): return self.get_session_obj("state")
class TestUser(unittest.TestCase): def get_user_collection(self): return self.collection def setUp(self): connection = pymongo.MongoClient('mongodb://localhost:27017/') self.database = connection.test self.collection = self.database.user self.collection.drop() self.user = UserDatabase() # monkey patch the mongodb handler to use the test database of user from mongodbhandler import MongoDatabaseHandler MongoDatabaseHandler.get_users_collection = self.get_user_collection def test_insert_user(self): """save a valid user to the database """ user = '******' password = '******' result = self.user.save_user(user, password) self.assertEqual(result, True) # read the user from database doc = self.collection.find_one({'_id': user}) self.assertEqual(doc['_id'], user) self.assertEqual(doc['password'], password) self.collection.delete_one({'_id': user}) def test_insert_duplicateuser(self): """" save the user twice and that we return a false""" user = '******' password = '******' password2 = 'duplicatetestuserpassword2' self.user.save_user(user, password) result = self.user.save_user(user, password2) self.assertEqual(result, False) self.collection.delete_one({'_id': user}) def test_remove_user(self): user = '******' password = '******' self.user.save_user(user, password) result = self.user.delete_user(user) self.assertEqual(result, True) doc = self.collection.find_one({'_id': user}) self.assertEqual(doc, None) def test_remove_non_existing_user(self): user = '******' result = self.user.delete_user(user) self.assertEqual(result, False) def test_get_user(self): user = '******' password = '******' self.user.save_user(user, password) result = self.user.get_password(user) self.assertEqual(result, password) self.collection.delete_one({'_id': user}) def test_get_user_non_existing(self): result = self.user.get_password('nonExistingUser') self.assertEqual(result, None)
def __init__(self): self.user_database = UserDatabase() self.site_database = SiteDatabase()