def test_user_settings_email(): test_client = webapp.app.test_client() user = User() username = '******' password = '******' user.login(username,password) result = test_client.post('/login/',data={ 'username':username, 'password':password },follow_redirects=True) result = test_client.get('/settings/',follow_redirects=True) assert user.user.email in result.data # create an update call, then check data # remember to reauthenticate result = test_client.post('/settings/',data={ 'email':'*****@*****.**' },follow_redirects=True) user = User() user.login(username,password) assert user.user.email == '*****@*****.**' db = MongoModel(project=user.project,collection=user.collection) db.delete({'_id':user.user.id})
def test_get_multiple(): model = MongoModel() data = model.query({'type':'test'},fetch_all=True) assert data[0]['a'] == 1 assert data[1]['b'] == 2 assert data[2]['c'] == 3
def test_update(): user = User() user.login('test_user_api_update','test_pass') api_key = user.user.auth_token project = Project() project.find('test api update') entry_id = project.find_entry('test api entry') print user.get_project() print project.get_id() mongo = MongoModel(project='test_api_update',collection='test_api_entry') data = mongo.query({'a':1}) print data id = str(data['_id']) updated = {'a':2} url = '/api/db/%s/%s/%s/?api_key=%s' % (project.project.id,entry_id,id,api_key) client = webapp.app.test_client() response = client.put(url, data = json.dumps(updated), content_type='application/json') print response.data status = json.loads(response.data) assert status['status'] updated_data = mongo.query({'_id':objectid.ObjectId(id)}) assert updated_data['a'] == 2
def test_project_create(): # login user get token user = User() user.login('test_user','test_pass') api_key = user.user.auth_token # do a post url = '/api/project/?api_key=%s' % api_key # now check project in user test_client = webapp.app.test_client() data = {'name':'project create','description':'project content create'} result = test_client.post(url,data=json.dumps(data),content_type='application/json') status = json.loads(result.data) assert status['status'] project = ProjectList() test_user = User() test_user.login('test_user','test_pass') print test_user.user.project registered = False for i in project.all(): if i.get_id() in test_user.get_project(): registered = True assert registered, "project not in user project" exist = False for i in project.all(): if 'project create' == i.project.name: exist = True assert exist, "project created" # now delete it project = Project() model = MongoModel(project=project.project_,collection=project.collection_) model.delete({'name':'project create'})
def test_create_user(): user = model.User() test_username = '******' test_password = '******' test_email = '*****@*****.**' user.create(test_username,test_password,test_email) passwd = user.user.password assert user.user.username == test_username assert bcrypt.hashpw(test_password,passwd) == passwd assert user.user.email == test_email auth_token = hashlib.sha224('%s%s' % (test_username,test_password)) assert user.user.auth_token == auth_token.hexdigest() assert user.get_auth_token() == auth_token.hexdigest() db = MongoModel(project='internal',collection='user') test_result = db.query({'username':test_username}) assert test_result['username'] == test_username assert test_result['email'] == test_email assert bcrypt.hashpw(test_password,test_result['password']) == test_result['password'] assert test_result['auth_token'] == auth_token.hexdigest() db.delete({'username':test_username})
def test_update_add(): model = MongoModel() model.update({'a':1},{'c':3}) data = model.query({'a':1}) print data assert 'c' in data assert data['c'] == 3
def test_project_update(): project = Project() project.find('test project update') project.project.description = 'project updated' project.save() db = MongoModel(project='internal',collection='project') temp = db.query({'name':'test project update'}) assert temp['description'] == 'project updated'
def setup_test_update(): mongo = MongoModel(project='test_api_update',collection='test_api_entry') mongo.insert({'a':1}) user = User() user.create('test_user_api_update','test_pass','*****@*****.**') project = Project() project.create('test api update','scraped') project.add_entry('test api entry','entry','localhost') user.add_project(project.get_id())
def teardown_test_load_data(): project = Project() project.find('test load data') fs = gridfs.GridFS(project.get_db()) for entry in project.project.input_file: for file_id in project.project.input_file[entry]: fs.delete(ObjectId(file_id)) db = MongoModel(project='internal',collection='project') db.delete({'name':'test load data'}) db.conn.drop_database('test_load_data')
def teardown_user_project_list(): user = User() model = MongoModel(project=user.project,collection=user.collection) model.delete({'username':'******'}) project = Project() model = MongoModel(project=project.project_,collection=project.collection_) model.delete({'name':'project list 1'}) model.conn.drop_database('project_list_1') model.delete({'name':'project list 2'}) model.conn.drop_database('project_list_2') model.delete({'name':'project list 3'}) model.conn.drop_database('project_list_3')
def teardown_project(): data = ( ('project 1','project content 1'), ('project 2','project content 2'), ('project 3','project content 3') ) for d in data: project = Project() project.find(d[0]) model = MongoModel(project=project.project_,collection=project.collection_) model.delete({'_id':ObjectId(str(project.project.id))}) model.conn.drop_database(d[0].replace(' ','_'))
def test_update_user_email(): user = model.User() test_user = user.login('test_user','test_password') test_user.update(email='*****@*****.**') assert test_user.user.email == '*****@*****.**' db = MongoModel(project='internal',collection='user') test_result = db.query({'username':'******'}) assert test_result['email'] == '*****@*****.**'
def test_project_entries(): project = Project() project.find('test project entries') # add_entries now should have a description and name file # there should be a short name field, for field name # We should have a source entry_id = project.add_entry('test entries','test data','test_entries','test_entries') db = MongoModel(project='internal',collection='project') temp = db.query({'name':'test project entries'}) assert entry_id in temp['stats']
def teardown_test_update(): mongo = MongoModel(project='test_api_update',collection='test_api_entry') mongo.delete({'a':2}) user = User() user.login('test_user_api_update','test_pass') model = MongoModel(project=user.project,collection=user.collection) model.delete({'_id':objectid.ObjectId(str(user.user.id))}) model = MongoModel(project='internal',collection='project') model.delete({'name':'test api update'})
def test_project_create(): project = Project() test_project_name = 'test project db' test_project_desc = 'test_project_desc' project.create(test_project_name,test_project_desc) assert project.project.name == test_project_name assert project.project.description == test_project_desc assert project.project.entries == [] db = MongoModel(project='internal',collection='project') test_data = db.query({'name':test_project_name}) assert test_data['name'] == test_project_name assert test_data['description'] == test_project_desc db.delete({'name':test_project_name})
def test_get(): mongo = MongoModel(project='scraped',collection='entry') client = webapp.app.test_client() data = mongo.all() id = str(data[0]['_id']) project = Project() project.find('scraped') entry_id = project.find_entry('entry') response = client.get('/api/db/%s/%s/%s/' % (project.project.id,entry_id,id)) result = json.loads(response.data) assert result['a'] == 1
def delete(self,project_id): api_key = request.args.get('api_key') if not authorized(api_key,project_id): return jsonify({'status':False}) user = User() user.api_login(api_key) project = Project() project.get(project_id) if not project.get_id() in user.user.project: return jsonify({'status':False}) user.remove_project(project.get_id()) model = MongoModel(project=project.project_,collection=project.collection_) model.delete({'_id':objectid.ObjectId(str(project_id))}) return jsonify({'status':True})
def test_update_user_password(): user = model.User() test_user = user.login('test_user','test_password') test_user.update(password='******') auth_token = hashlib.sha224('%s%s' % ('test_user','test_pass')) assert bcrypt.hashpw('test_pass',test_user.user.password) == test_user.user.password assert test_user.user.auth_token == auth_token.hexdigest() db = MongoModel(project='internal',collection='user') test_result = db.query({'username':'******'}) assert bcrypt.hashpw('test_pass',test_result['password']) == test_result['password'] assert test_result['auth_token'] == auth_token.hexdigest() test_user = user.login('test_user','test_pass') assert user.is_authenticated()
def test_insert_remove(): model = MongoModel() model.insert({'a':1,'b':2}) data = model.query({'a':1}) assert data['b'] == 2 model.delete({'a':1}) data = model.query({'a':1}) assert not data
def test_insert(): user = User() user.login('test_user','test_pass') api_key = user.user.auth_token client = webapp.app.test_client() data = {'a':1} project = Project() project.find('scraped') entry_id = project.find_entry('entry') url = '/api/db/%s/%s/?api_key=%s' % (project.project.id,entry_id,api_key) response = client.post(url,data=json.dumps(data), content_type='application/json') status = json.loads(response.data) assert status['status'] mongo = MongoModel(project='scraped',collection='entry') check = mongo.all() assert check[0]['a'] == 1 mongo.delete(check[0])
def teardown_project_update(): user = User() user.login('test_update_user','test_password') db = MongoModel(project=user.project,collection=user.collection) db.delete({'username':'******'}) db = MongoModel(project='internal',collection='project') db.delete({'name':'project update'})
def teardown_user(): user = User() user.login('test_user','test_pass') model = MongoModel(project=user.project,collection=user.collection) model.delete({'_id':objectid.ObjectId(str(user.user.id))}) model = MongoModel(project='internal',collection='project') model.delete({'name':'scraped'})
def test_delete(): user = User() user.login('test_user','test_pass') api_key = user.user.auth_token mongo = MongoModel(project='scraped',collection='entry') client = webapp.app.test_client() mongo.insert({'a':1}) data = mongo.query({'a':1}) id = str(data['_id']) project = Project() project.find('scraped') entry_id = project.find_entry('entry') url = '/api/db/%s/%s/%s/?api_key=%s' % (project.project.id,entry_id,id,api_key) response = client.delete(url) status = json.loads(response.data) assert status['status'] check = mongo.query({'_id':objectid.ObjectId(id)}) assert not check
def teardown_user_project(): user = User() model = MongoModel(project=user.project,collection=user.collection) model.delete({'username':'******'}) project = Project() model = MongoModel(project=project.project_,collection=project.collection_) model.delete({'name':'project update'}) model.conn.drop_database('project_update')
def test_project_delete(): # login user get token user = User() user.login('test_user_delete_api_project','test_pass') api_key = user.user.auth_token print api_key project = Project() project.find('project 1') project_id = project.get_id() # do a delete test_client = webapp.app.test_client() url = '/api/project/%s/?api_key=%s' % (project.project.id,api_key) result = test_client.delete(url) status = json.loads(result.data) # now check user don't exist project = Project() model = MongoModel(project=project.project_,collection=project.collection_) data = model.query({'name':'project 1'}) assert not data test_user = User() test_user.login('test_user_delete','test_pass') assert project_id not in test_user.user.project
def teardown_project_delete(): user = User() user.login('test_user_delete_api_project','test_pass') project = Project() model = MongoModel(project=user.project,collection=user.collection) model.delete({'_id':ObjectId(user.user.id)}) project.find('project 1') model = MongoModel(project=project.project_,collection=project.collection_) model.delete({'name':'project 1'}) model.conn.drop_database('project_1')
def test_update(): model = MongoModel() model.update({'a':1},{'b':3}) data = model.query({'a':1}) assert data['b'] == 3
def teardown_test_update(): model = MongoModel() model.delete({'a':1})
def setup_test_update(): model = MongoModel() model.insert({'a':1,'b':2})
def test_get_all(): model = MongoModel() data = model.all() assert data[0]['a'] == 1 assert data[1]['b'] == 2 assert data[2]['c'] == 3