def test_get_specific_dataset_metadata(client, database, cleanup): new_role = create_role(*owner_role) database.session.add(new_role) new_role = create_role(*user_role) database.session.add(new_role) new_user = create_user(*user1) database.session.add(new_user) new_user = create_user(*user2) database.session.add(new_user) database.session.commit() storage = DiskObjectStore(database) df_metadata = create_dataset(dataset) token = jwt.encode({"id": 1}, app.config["SECRET_KEY"]) headers = { "token": token.decode("UTF-8"), } result = client.get( "/data-centric/datasets/{}".format(df_metadata["id"]), headers=headers, content_type="application/json", ) assert result.status_code == 200 assert result.get_json()["id"] == df_metadata["id"] assert result.get_json()["tags"] == df_metadata["tags"] assert result.get_json()["name"] == df_metadata["name"] assert result.get_json()["manifest"] == df_metadata["manifest"] assert result.get_json()["description"] == df_metadata["description"]
def test_get_all_datasets_metadata(client, database, cleanup): new_role = create_role(*owner_role) database.session.add(new_role) new_role = create_role(*user_role) database.session.add(new_role) new_user = create_user(*user1) database.session.add(new_user) new_user = create_user(*user2) database.session.add(new_user) database.session.commit() new_dataset = { "name": "Dummy Dataset 1", "description": "Lorem ipsum dolor", "manifest": "Etiam vestibulum velit a tellus aliquet varius", "tags": ["#hashtag", "#dummy"], "created_at": "05/12/2019", "tensors": { "train": tensor2.copy() }, } storage = DiskObjectStore(database) df_json1 = create_dataset(dataset) df_json2 = create_dataset(new_dataset) token = jwt.encode({"id": 1}, app.config["SECRET_KEY"]) headers = { "token": token.decode("UTF-8"), } result = client.get("/data-centric/datasets", headers=headers, content_type="application/json") assert result.status_code == 200 assert df_json1["id"] in [el["id"] for el in result.get_json()] assert df_json1["description"] in [ el["description"] for el in result.get_json() ] assert df_json1["manifest"] in [el["manifest"] for el in result.get_json()] assert df_json2["id"] in [el["id"] for el in result.get_json()] assert df_json2["description"] in [ el["description"] for el in result.get_json() ] assert df_json2["manifest"] in [el["manifest"] for el in result.get_json()]
def test_delete_dataset(client, database, cleanup): new_role = create_role(*owner_role) database.session.add(new_role) new_role = create_role(*user_role) database.session.add(new_role) new_user = create_user(*user1) database.session.add(new_user) new_user = create_user(*user2) database.session.add(new_user) database.session.commit() storage = DiskObjectStore(database) df_json1 = create_dataset(dataset) _id = df_json1["id"] token = jwt.encode({"id": 1}, app.config["SECRET_KEY"]) headers = { "token": token.decode("UTF-8"), } assert database.session.query(DatasetGroup).filter_by( dataset=_id).all() is not None storable_ids = (database.session.query( DatasetGroup.bin_object).filter_by(dataset=_id).all()) storable_ids = [x[0] for x in storable_ids] assert database.session.query(JsonObject).get(_id) is not None assert database.session.query(JsonObject).get(_id).binary is not None assert (database.session.query(JsonObject).get(_id).binary["description"] == dataset["description"]) assert database.session.query(JsonObject).get( _id).binary["tags"] == dataset["tags"] result = client.delete( "/data-centric/datasets/{}".format(_id), headers=headers, content_type="application/json", ) assert result.status_code == 204 for strbl_id in storable_ids: assert db.session.query(BinObject).filter_by( id=strbl_id).first() is None assert db.session.query(ObjectMetadata).filter_by( id=strbl_id).first() is None assert database.session.query(DatasetGroup).filter_by( dataset=_id).all() == [] assert database.session.query(JsonObject).get(_id) is None
def test_update_request(client, database, cleanup): new_role = create_role(*owner_role) database.session.add(new_role) new_user = create_user(*user1) database.session.add(new_user) database.session.commit() storage = DiskObjectStore(database) dataset_json = create_dataset(dataset) token = jwt.encode({"id": 1}, app.config["SECRET_KEY"]) headers = { "token": token.decode("UTF-8"), } object_id = dataset_json["tensors"]["train"]["id"] reason = "this is a sample reason" request_type = "budget" create = client.post( "/data-centric/requests", json={ "object_id": object_id, "reason": reason, "request_type": request_type, }, headers=headers, ) status = "accepted" request_id = create.get_json()["id"] client.put( "/data-centric/requests/" + request_id, json={"status": status}, headers=headers, content_type="application/json", ) result = client.get( "/data-centric/requests/" + request_id, headers=headers, content_type="application/json", ) response = result.get_json() assert result.status_code == 200 assert response["id"] == request_id assert response["status"] == "accepted"
def test_create_duplicate_fail(client, database, cleanup): new_role = create_role(*owner_role) database.session.add(new_role) new_user = create_user(*user1) database.session.add(new_user) database.session.commit() storage = DiskObjectStore(database) dataset_json = create_dataset(dataset) token = jwt.encode({"id": 1}, app.config["SECRET_KEY"]) headers = { "token": token.decode("UTF-8"), } object_id = dataset_json["tensors"]["train"]["id"] reason = "sample reason" request_type = "permissions" result1 = client.post( "/data-centric/requests", json={ "object_id": object_id, "reason": reason, "request_type": request_type, }, headers=headers, ) result1 = client.get("/data-centric/requests", headers=headers, content_type="application/json") result2 = client.post( "/data-centric/requests", json={ "object_id": object_id, "reason": reason, "request_type": request_type, }, headers=headers, ) assert result1.status_code == 200 assert object_id in [el["object_id"] for el in result1.get_json()] assert reason in [el["reason"] for el in result1.get_json()] assert request_type in [el["request_type"] for el in result1.get_json()] assert result2.status_code == 403
def test_update_dataset(client, database, cleanup): new_role = create_role(*owner_role) database.session.add(new_role) new_role = create_role(*user_role) database.session.add(new_role) new_user = create_user(*user1) database.session.add(new_user) new_user = create_user(*user2) database.session.add(new_user) database.session.commit() new_dataset = { "name": "Dummy Dataset 1", "description": "Lorem ipsum dolor", "manifest": "Etiam vestibulum velit a tellus aliquet varius", "tags": ["#tensor", "#dummy1"], "created_at": "19/06/1972", "tensors": { "train": tensor2.copy() }, } storage = DiskObjectStore(database) df_json1 = create_dataset(dataset) token = jwt.encode({"id": 1}, app.config["SECRET_KEY"]) headers = { "token": token.decode("UTF-8"), } assert (database.session.query(DatasetGroup).filter_by( dataset=df_json1["id"]).all() is not None) assert database.session.query(JsonObject).get(df_json1["id"]) is not None assert database.session.query(JsonObject).get( df_json1["id"]).binary == df_json1 result = client.put( "/data-centric/datasets/{}".format(df_json1["id"]), data=dumps(new_dataset), headers=headers, content_type="application/json", ) assert result.status_code == 200 assert result.get_json()["id"] == df_json1["id"] assert (database.session.query(DatasetGroup).filter_by( dataset=df_json1["id"]).all() is not None) assert (len( database.session.query(DatasetGroup).filter_by( dataset=df_json1["id"]).all()) == 1) assert database.session.query(JsonObject).get(df_json1["id"]) is not None metadata = database.session.query(JsonObject).get(df_json1["id"]) assert metadata is not None metadata = metadata.binary assert metadata["description"] == new_dataset["description"] assert metadata["manifest"] == new_dataset["manifest"] assert metadata["created_at"] == new_dataset["created_at"] assert metadata["tags"] == new_dataset["tags"] assert metadata["name"] == new_dataset["name"]