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_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 test_project_stats(): project = Project() project.find('test project db') entry_id = project.find_entry('test entries') print entry_id print project.project.entry databases = project.get_stats() for database in databases: assert database == entry_id
def test_get_all(): project = Project() project.find('scraped') entry_id = project.find_entry('entry') client = webapp.app.test_client() response = client.get('/api/db/%s/%s/' % (project.project.id,entry_id)) result = json.loads(response.data) assert result[0]['a'] == 1
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_project_view(): test_client = webapp.app.test_client() result = test_client.get('/') project = Project() project.find('project view') assert project.project.id in result.data result = test_client.get('/project/%s/'% project.project.id) assert 'project view' in result.data assert 'data' in result.data
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_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_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 test_load_data(): project = Project() project.find('test load data') entry_id = project.find_entry('test entries') datasource = project.project.input_file[entry_id] key = datasource.keys()[0] entry = project.get_entry_collection(entry_id) print key project.load_datafile(entry_id,key) test_data = entry.query({'a':'1'}) assert test_data['b'] == '2' assert test_data['c'] == '3'
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 get_entry(project_id,entry): form = EntryUpdateForm() edit = False # entry should be short_name if form.validate_on_submit(): project = Project() description = form.description.data source = form.source.data project.get(project_id) project.update_entry(entry,description,source) return redirect('/entry/%s/%s/' % (project_id,entry)) project = Project() project.find(project_name) return render_template('entry_view.html',project=project,entry=entry, edit=edit,form=form)
def test_project_update(): test_client = webapp.app.test_client() result = test_client.post('/login/',data={ 'username':'******', 'password':'******' },follow_redirects=True) project = Project() project.find('project update') project_ui = test_client.post('/project/%s/' % project.project.id,data={ 'description':'project updated', },follow_redirects=True) print project_ui.data assert 'project updated' in project_ui.data assert 'data' in project_ui.data
def test_project_file_download(): content = "a,b,c\n1,2,3\n4,5,6" project = Project() project.find('test project download') data = project.project.input_file entry_id = project.find_entry('test entries') files = data[entry_id] valid_flag = False for file_id in files: test_file = project.get_datafile(file_id) test_data = test_file.read() if test_data == content: valid_flag = True assert valid_flag
def get(self, *args, **kwargs): if not self.user.admin: self.add_message(u'您没有访问该页面的权限, 请联系管理员') return self.render('failed.html') ps = Project.find(status__no=Project._status_del) users = User.find(status=User._status_ok) return self.render('manager.html', ps=ps, users=users)
def test_user_project_join(): user = User() user.login('test_user_list','test_pass') api_key = user.user.auth_token test_client = webapp.app.test_client() project = Project() project.find('project list 3') url = '/api/project/%s/?api_key=%s' % (project.project.id,api_key) data = {'project':'project list 3','action':'join'} result = test_client.put(url,data=json.dumps(data),content_type='application/json') user.login('test_user_list','test_pass') print user.user.project assert str(project.get_id()) in user.user.project
def test_project_get(): # this do not require user auth data = ( ('project 1','project content 1'), ('project 2','project content 2'), ('project 3','project content 3') ) test_client = webapp.app.test_client() for d in data: project = Project() project.find(d[0]) url = '/api/project/%s/' % (project.project.id) result = test_client.get(url) assert d[0] in result.data assert d[1] in result.data
def test_project_update(): user = User() user.login('test_user_update_project','test_pass') api_key = user.user.auth_token project = Project() project.find('project update') test_client = webapp.app.test_client() url = '/api/project/%s/?api_key=%s' % (project.project.id,api_key) data = json.dumps({'description':'project updated content'}) result = test_client.put(url,data=data,content_type='application/json') status = json.loads(result.data) print status assert status['status'] project=Project() project.find('project update') assert project.project.description == 'project updated content'
def test_project_file_upload(): content = "a,b,c\n1,2,3\n4,5,6" test_data = cStringIO.StringIO(content) f = MockFile('test_data.csv',content) project = Project() project.find('test project upload') entry_id = project.find_entry('test entries') project.add_datafile(entry_id,f) input_file = project.project.input_file exist_flag = False for entry in input_file: for file_id in input_file[entry]: if input_file[entry][file_id]['filename'] == 'test_data.csv': exist_flag = True assert exist_flag
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 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 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 test_project_api(): project = Project() project.find('test project db') print project.get_api() assert '/api/db/test_project_db/test_entries/' in project.get_api()