コード例 #1
0
ファイル: test_dataset.py プロジェクト: yangchenghuang/PyGrid
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"]
コード例 #2
0
ファイル: test_dataset.py プロジェクト: yangchenghuang/PyGrid
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()]
コード例 #3
0
ファイル: test_dataset.py プロジェクト: yangchenghuang/PyGrid
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
コード例 #4
0
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"
コード例 #5
0
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
コード例 #6
0
ファイル: test_dataset.py プロジェクト: yangchenghuang/PyGrid
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"]