def test_entity_tags(self): _, headers = self.login(is_admin=True) url = '/api/2/entities' data = { 'schema': 'Person', 'collection_id': self.col_id, 'properties': { 'name': "Blaaaa blubb", 'phone': '+491769817271' } } resa = self.client.post(url, data=json.dumps(data), headers=headers, content_type='application/json') data = { 'schema': 'Person', 'collection_id': self.col_id, 'properties': { 'name': "Nobody Man", 'phone': '+491769817271' } } resa = self.client.post(url, data=json.dumps(data), headers=headers, content_type='application/json') url = '/api/2/entities/%s/tags' % resa.json['id'] res = self.client.get(url, headers=headers) assert res.status_code == 200, (res.status_code, res.json) results = res.json['results'] assert len(results) == 1, results assert results[0]['value'] == '+491769817271', results validate(res.json['results'][0], 'EntityTag')
def test_create(self): data = {"query": "banana pumpkin"} jdata = json.dumps(data) res = self.client.post("/api/2/alerts", data=jdata, content_type="application/json") assert res.status_code == 403, res _, headers = self.login() res = self.client.post( "/api/2/alerts", data=jdata, headers=headers, content_type="application/json", ) assert res.status_code == 200, res.json validate(res.json, "Alert") assert "banana pumpkin" in res.json["query"], res.json for wrong_data in [{"query": 2}, {"quarry": "stone"}]: wdata = json.dumps(wrong_data) res = self.client.post( "/api/2/alerts", data=wdata, headers=headers, content_type="application/json", ) assert res.status_code == 400, res.json
def test_entityset_items_query(self): url = "/api/2/entitysets" res = self.client.post(url, json=self.input_data, headers=self.headers) assert res.status_code == 200, res entityset_id = res.json["id"] url = "/api/2/entitysets/%s/items" % entityset_id res = self.client.get(url, headers=self.headers) assert res.status_code == 200, res validate(res.json, "EntitySetItemResponse") assert len(res.json["results"]) == 7, len(res.json["results"]) fst = res.json["results"][0] fst["judgement"] = "negative" res = self.client.post(url, json=fst) assert res.status_code == 403, res res = self.client.post(url, json=fst, headers=self.headers) assert res.status_code == 200, res assert res.json["judgement"] == "negative", res res = self.client.get(url, headers=self.headers) assert len(res.json["results"]) == 7, len(res.json["results"]) fst["judgement"] = "no_judgement" res = self.client.post(url, json=fst, headers=self.headers) assert res.status_code == 204, res res = self.client.get(url, headers=self.headers) assert len(res.json["results"]) == 6, len(res.json["results"])
def test_match(self): _, headers = self.login(is_admin=True) data = { 'schema': 'Person', 'collection_id': self.col_id, 'properties': { 'name': "Osama bin Laden", } } res = self.client.post('/api/2/entities', data=json.dumps(data), headers=headers, content_type='application/json') data = { 'schema': 'Person', 'properties': { 'name': "Osama bin Laden", } } matches = self.client.post('/api/2/match', data=json.dumps(data), headers=headers, content_type='application/json') assert matches.status_code == 200, (matches.status_code, matches.json) data = matches.json assert len(data['results']) == 1, data assert 'Laden' in data['results'][0]['name'], data assert b'Pooh' not in res.data, res.data validate(data['results'][0], 'Entity')
def test_entity_tags(self): _, headers = self.login(is_admin=True) url = "/api/2/entities" data = { "schema": "Person", "collection_id": self.col_id, "properties": { "name": "Blaaaa blubb", "phone": ["+491769817271", "+491769817999"], }, } resa = self.client.post(url, data=json.dumps(data), headers=headers, content_type=JSON) data = { "schema": "Person", "collection_id": self.col_id, "properties": { "name": "Nobody Man", "phone": ["+491769817271", "+491769817777"], }, } resa = self.client.post(url, data=json.dumps(data), headers=headers, content_type=JSON) url = "/api/2/entities/%s/tags" % resa.json["id"] res = self.client.get(url, headers=headers) assert res.status_code == 200, (res.status_code, res.json) results = res.json["results"] assert len(results) == 1, results assert results[0]["value"] == "+491769817271", results validate(res.json["results"][0], "EntityTag")
def test_match(self): _, headers = self.login(is_admin=True) data = { "schema": "Person", "collection_id": self.col_id, "properties": { "name": "Osama bin Laden", }, } res = self.client.post( "/api/2/entities", data=json.dumps(data), headers=headers, content_type=JSON, ) data = { "schema": "Person", "properties": { "name": "Osama bin Laden", }, } matches = self.client.post( "/api/2/match", data=json.dumps(data), headers=headers, content_type=JSON, ) assert matches.status_code == 200, (matches.status_code, matches.json) data = matches.json assert len(data["results"]) == 1, data assert "Laden" in get_caption(data["results"][0]), data assert b"Pooh" not in res.data, res.data validate(data["results"][0], "Entity")
def test_summary(self): xref_collection(self.stage, self.residents) res = self.client.get('/api/2/collections/%s/xref' % self.obsidian.id) assert res.status_code == 403, res # Not logged in resi_url = '/api/2/collections/%s/xref' % self.residents.id res = self.client.get(resi_url) assert res.status_code == 200, res assert res.json['total'] == 1, res.json coll0 = res.json['results'][0]['collection'] assert 'Obsidian Order' not in coll0['label'], res.json assert 'Dabo Girls' in coll0['label'], res.json validate(coll0, 'XrefCollection') # Logged in as outsider (restricted access) _, headers = self.login(foreign_id='outsider') res = self.client.get(resi_url, headers=headers) assert res.status_code == 200, res assert res.json['total'] == 1, res.json coll0 = res.json['results'][0]['collection'] assert 'Obsidian Order' not in coll0['label'], res.json assert 'Dabo Girls' in coll0['label'], res.json validate(coll0, 'XrefCollection') # Logged in as creator (all access) _, headers = self.login(foreign_id='creator') res = self.client.get(resi_url, headers=headers) assert res.status_code == 200, res assert res.json['total'] == 2, res.json labels = [m['collection']['label'] for m in res.json['results']] assert 'Obsidian Order' in labels, res.json assert 'Dabo Girls' in labels, res.json
def test_index(self): res = self.client.get('/api/2/alerts') assert res.status_code == 403, res _, headers = self.login() res = self.client.get('/api/2/alerts', headers=headers) assert res.status_code == 200, res assert res.json.get('total') == 0, res.json validate(res.json, 'QueryResponse')
def test_index(self): res = self.client.get("/api/2/alerts") assert res.status_code == 403, res _, headers = self.login() res = self.client.get("/api/2/alerts", headers=headers) assert res.status_code == 200, res assert res.json.get("total") == 0, res.json validate(res.json, "QueryResponse")
def test_role_schema(self): data = { "name": "sunu", "is_muted": True, "password": "******", "current_password": "******", "locale": "en-us", } with self.assertRaises(BadRequest): validate(data, "RoleUpdate")
def test_view(self): url = "/api/2/entities/%s" % self.id res = self.client.get(url) assert res.status_code == 403, res _, headers = self.login(is_admin=True) res = self.client.get(url, headers=headers) assert res.status_code == 200, res assert "LegalEntity" in res.json["schema"], res.json assert "Winnie" in get_caption(res.json), res.json validate(res.json, "Entity")
def test_entity_references(self): _, headers = self.login(is_admin=True) url = "/api/2/entities/%s/references" % self.book_id res = self.client.get(url) assert res.status_code == 403, res.status_code res = self.client.get(url, headers=headers) results = res.json["results"] assert len(results) == 1, results assert results[0]["count"] == 2, results validate(res.json["results"][0], "EntityReference")
def test_entity_references(self): _, headers = self.login(is_admin=True) url = '/api/2/entities/%s/references' % self.book_id res = self.client.get(url) assert res.status_code == 403, res.status_code res = self.client.get(url, headers=headers) results = res.json['results'] assert len(results) == 1, results assert results[0]['count'] == 1, results validate(res.json['results'][0], 'EntityReference')
def test_view(self): url = '/api/2/entities/%s' % self.id res = self.client.get(url) assert res.status_code == 403, res _, headers = self.login(is_admin=True) res = self.client.get(url, headers=headers) assert res.status_code == 200, res assert 'LegalEntity' in res.json['schema'], res.json assert 'Winnie' in res.json['name'], res.json validate(res.json, 'Entity')
def test_create_with_query(self): data = {'query': 'putin'} jdata = json.dumps(data) _, headers = self.login() res = self.client.post('/api/2/alerts', data=jdata, headers=headers, content_type='application/json') assert res.status_code == 200, res.json validate(res.json, 'Alert') assert res.json['query'] == 'putin', res.json
def test_index(self): res = self.client.get("/api/2/status") assert res.status_code == 403, res _, headers = self.login() res = self.client.get("/api/2/status", headers=headers) assert res.status_code == 200, res assert res.json.get("total") == 0, res.json _, headers = self.login(is_admin=True) res = self.client.get("/api/2/status", headers=headers) assert res.status_code == 200, res assert res.json.get("total") == 0, res.json validate(res.json, "SystemStatusResponse")
def test_index(self): res = self.client.get("/api/2/groups") assert res.status_code == 403, res _, headers = self.login(foreign_id="user_1") res = self.client.get("/api/2/groups", headers=headers) assert res.status_code == 200, res assert res.json["total"] == 2, res.json validate(res.json["results"][0], "Role") _, headers = self.login(foreign_id="other") res = self.client.get("/api/2/groups", headers=headers) assert res.status_code == 200, res assert res.json["total"] == 0, res.json
def test_index(self): res = self.client.get('/api/2/groups') assert res.status_code == 403, res _, headers = self.login(foreign_id='user_1') res = self.client.get('/api/2/groups', headers=headers) assert res.status_code == 200, res assert res.json['total'] == 2, res.json validate(res.json['results'][0], 'Role') _, headers = self.login(foreign_id='other') res = self.client.get('/api/2/groups', headers=headers) assert res.status_code == 200, res assert res.json['total'] == 0, res.json
def test_create_with_query(self): data = {"query": "putin"} jdata = json.dumps(data) _, headers = self.login() res = self.client.post( "/api/2/alerts", data=jdata, headers=headers, content_type="application/json", ) assert res.status_code == 200, res.json validate(res.json, "Alert") assert res.json["query"] == "putin", res.json
def test_exports_index(self): res = self.client.get("/api/2/exports") assert res.status_code == 403, res _, headers = self.login() res = self.client.get("/api/2/exports", headers=headers) assert res.status_code == 200, res assert res.json["total"] == 0, res.json res = self.client.get("/api/2/exports", headers=self.headers) assert res.status_code == 200, res validate(res.json, "QueryResponse") assert res.json["total"] == 2, res.json results = res.json["results"] validate(results[0], "Export")
def test_view(self): data = {'query': 'putin'} jdata = json.dumps(data) _, headers = self.login() res = self.client.post('/api/2/alerts', data=jdata, headers=headers, content_type='application/json') url = '/api/2/alerts/%s' % res.json['id'] res2 = self.client.get(url, headers=headers) assert res2.json['id'] == res.json['id'], res2.json validate(res.json, 'Alert') res3 = self.client.get('/api/2/alerts/100000', headers=headers) assert res3.status_code == 404, res3
def test_notifications(self): _, headers = self.login(foreign_id="admin") res = self.client.get("/api/2/notifications", headers=headers) assert res.status_code == 200, res assert res.json["total"] == 0, res.json assert self.rolex.type == Role.USER, self.rolex.type _, headers = self.login(foreign_id=self.rolex.foreign_id) res = self.client.get("/api/2/notifications", headers=headers) assert res.status_code == 200, res assert res.json["total"] == 2, res.json not0 = res.json["results"][0] validate(not0, "Notification") role = not0["params"]["role"] assert isinstance(role, dict), not0 assert "actor" in not0["params"], not0["params"]
def _load_metadata(): """Unpack the common, pre-defined metadata for all the uploaded files.""" try: meta = json.loads(request.form.get("meta", "{}")) except Exception as ex: raise BadRequest(str(ex)) validate(meta, "DocumentIngest") foreign_id = stringify(meta.get("foreign_id")) if not len(request.files) and foreign_id is None: raise BadRequest( response=jsonify( {"status": "error", "message": "Directories need to have a foreign_id"}, status=400, ) ) return meta, foreign_id
def test_view(self): data = {"query": "putin"} jdata = json.dumps(data) _, headers = self.login() res = self.client.post( "/api/2/alerts", data=jdata, headers=headers, content_type="application/json", ) url = "/api/2/alerts/%s" % res.json["id"] res2 = self.client.get(url, headers=headers) assert res2.json["id"] == res.json["id"], res2.json validate(res.json, "Alert") res3 = self.client.get("/api/2/alerts/100000", headers=headers) assert res3.status_code == 404, res3
def test_notifications(self): _, headers = self.login(foreign_id='admin') res = self.client.get('/api/2/notifications', headers=headers) assert res.status_code == 200, res assert res.json['total'] == 0, res.json assert self.rolex.type == Role.USER, self.rolex.type _, headers = self.login(foreign_id=self.rolex.foreign_id) res = self.client.get('/api/2/notifications', headers=headers) assert res.status_code == 200, res assert res.json['total'] == 2, res.json not0 = res.json['results'][0] validate(not0, 'Notification') role = not0['params']['role'] assert isinstance(role, dict), not0 assert 'actor' in not0['params'], not0['params']
def _load_metadata(): """Unpack the common, pre-defined metadata for all the uploaded files.""" try: meta = json.loads(request.form.get('meta', '{}')) except Exception as ex: raise BadRequest(str(ex)) validate(meta, 'DocumentIngest') foreign_id = stringify(meta.get('foreign_id')) if not len(request.files) and foreign_id is None: raise BadRequest(response=jsonify( { 'status': 'error', 'message': 'Directories need to have a foreign_id' }, status=400)) return meta, foreign_id
def test_querylog_logged_in(self): _, headers = self.login() res = self.client.get('/api/2/querylog', headers=headers) assert res.json['total'] == 0, res res = self.client.get('/api/2/search?q=foo', headers=headers) res = self.client.get('/api/2/querylog', headers=headers) assert res.json['total'] == 1, res res = self.client.get('/api/2/search?q=foo', headers=headers) res = self.client.get('/api/2/querylog', headers=headers) assert res.json['total'] == 1, res res = self.client.get('/api/2/search?q=bar', headers=headers) res = self.client.get('/api/2/querylog', headers=headers) assert res.json['total'] == 2, res validate(res.json['results'][0], 'QueryLog') validate(res.json['results'][1], 'QueryLog')
def test_view(self): res = self.client.get("/api/2/collections/%s" % self.col.id) assert res.status_code == 403, res _, headers = self.login(is_admin=True) res = self.client.get("/api/2/collections/%s" % self.col.id, headers=headers) assert res.status_code == 200, res assert "test_coll" in res.json["foreign_id"], res.json assert "Winnie" not in res.json["label"], res.json assert validate(res.json, "Collection")
def test_querylog_logged_in(self): _, headers = self.login() res = self.client.get("/api/2/querylog", headers=headers) assert res.json["total"] == 0, res res = self.client.get("/api/2/search?q=foo", headers=headers) res = self.client.get("/api/2/querylog", headers=headers) assert res.json["total"] == 1, res res = self.client.get("/api/2/search?q=foo", headers=headers) res = self.client.get("/api/2/querylog", headers=headers) assert res.json["total"] == 1, res res = self.client.get("/api/2/search?q=bar", headers=headers) res = self.client.get("/api/2/querylog", headers=headers) assert res.json["total"] == 2, res validate(res.json["results"][0], "QueryLog") validate(res.json["results"][1], "QueryLog")
def test_create(self): _, headers = self.login(is_admin=True) url = '/api/2/entities' data = { 'schema': 'RealEstate', 'collection_id': self.col_id, 'properties': { 'name': "Our house", 'summary': "In the middle of our street" } } res = self.client.post(url, data=json.dumps(data), headers=headers, content_type='application/json') assert res.status_code == 200, res.json assert 'middle' in res.json['properties']['summary'][0], res.json validate(res.json, 'Entity')