コード例 #1
0
def test_literature_json_put_redirected_record(inspire_app):
    token = create_user_and_token()
    headers = {
        "Authorization": "BEARER " + token.access_token,
        "If-Match": '"2"'
    }
    record_redirected = create_record("lit")
    record = create_record(
        "lit", data={"deleted_records": [record_redirected["self"]]})

    data = dict(record_redirected)
    data["deleted"] = True

    with inspire_app.test_client() as client:
        response = client.put(
            "/literature/{}".format(record_redirected.control_number),
            headers=headers,
            json=data,
        )
    assert response.status_code == 200
    redirected_record_from_db = LiteratureRecord.get_record_by_pid_value(
        record_redirected.control_number, original_record=True)
    record_from_db = LiteratureRecord.get_record_by_pid_value(
        record.control_number)

    assert dict(redirected_record_from_db) == data
    assert dict(record_from_db) == dict(record)
コード例 #2
0
def test_restricted_file_attach(inspire_app, override_config):
    record = create_record(
        "lit",
        data={
            "documents": [{
                "source": "arxiv",
                "key": "arXiv:nucl-th_9310031.pdf",
                "url": "https://inspirehep.net/literature/863300",
                "original_url": "http://original-url.com/1",
                "filename": "fermilab.pdf",
            }],
        },
    )
    token = create_user_and_token()

    expected_status_code = 415
    expected_message = (
        "Attached file format is not supported (text/html), please attach a valid file."
    )
    headers = {
        "Authorization": "BEARER " + token.access_token,
        "If-Match": '"0"'
    }
    config = {"FEATURE_FLAG_ENABLE_FILES": True}

    with override_config(**config), inspire_app.test_client() as client:
        response = client.put(f"/literature/{record['control_number']}",
                              headers=headers,
                              json=record)

    assert expected_status_code == response.status_code
    assert expected_message == response.json["message"]
コード例 #3
0
ファイル: test_views.py プロジェクト: hanadikaleel/inspirehep
def test_view_disambiguate(disambiguate_signatures_mock, inspire_app,
                           override_config):
    token = create_user_and_token()
    headers = {"Authorization": "BEARER " + token.access_token}
    clusters = [{
        "signatures": [{
            "publication_id":
            374836,
            "signature_uuid":
            "94fc2b0a-dc17-42c2-bae3-ca0024079e51",
        }],
        "authors": [{
            "author_id": 100,
            "has_claims": True
        }],
    }]
    config = {"FEATURE_FLAG_ENABLE_DISAMBIGUATION": True}
    with override_config(**config), inspire_app.test_client() as client:
        response = client.post(
            "/disambiguation",
            content_type="application/json",
            data=orjson.dumps({"clusters": clusters}),
            headers=headers,
        )
    expected_message = "Disambiguation started."
    expected_status_code = 200

    result_message = response.json["message"]
    result_status_code = response.status_code

    assert expected_status_code == result_status_code
    assert expected_message == result_message
    disambiguate_signatures_mock.apply_async.assert_called_with(
        queue="disambiguation", kwargs={"clusters": clusters})
コード例 #4
0
ファイル: test_views.py プロジェクト: hanadikaleel/inspirehep
def test_view_disambiguate_with_disambiguation_disabled(
        disambiguate_signatures_mock, inspire_app):
    token = create_user_and_token()
    headers = {"Authorization": "BEARER " + token.access_token}
    clusters = [{
        "signatures": [{
            "publication_id":
            374836,
            "signature_uuid":
            "94fc2b0a-dc17-42c2-bae3-ca0024079e51",
        }],
        "authors": [{
            "author_id": 100,
            "has_claims": True
        }],
    }]
    with inspire_app.test_client() as client:
        response = client.post(
            "/disambiguation",
            content_type="application/json",
            data=orjson.dumps({"clusters": clusters}),
            headers=headers,
        )
    expected_message = "Disambiguation feature is disabled."
    expected_status_code = 200

    result_message = response.json["message"]
    result_status_code = response.status_code

    assert expected_status_code == result_status_code
    assert expected_message == result_message
    disambiguate_signatures_mock.apply_async.assert_not_called()
コード例 #5
0
ファイル: test_views.py プロジェクト: hanadikaleel/inspirehep
def test_view_disambiguate_with_missing_data(inspire_app):
    token = create_user_and_token()
    headers = {"Authorization": "BEARER " + token.access_token}
    clusters = [{"authors": [{"author_id": 100, "has_claims": True}]}]
    with inspire_app.test_client() as client:
        response = client.post(
            "/disambiguation",
            content_type="application/json",
            data=orjson.dumps({"clusters": clusters}),
            headers=headers,
        )
    expected_message = "Validation Error."
    expected_status_code = 400
    expected_errors = {
        "clusters": {
            "0": {
                "signatures": ["Missing data for required field."]
            }
        }
    }

    result_message = response.json["message"]
    result_status_code = response.status_code
    result_errors = response.json["errors"]

    assert expected_status_code == result_status_code
    assert expected_message == result_message
    assert expected_errors == result_errors
コード例 #6
0
def test_experiment_update_permission(inspire_app):
    record = create_record("exp")
    control_number = record["control_number"]
    token = create_user_and_token(user_role=Roles.cataloger.value)
    headers = {"Authorization": "BEARER " + token.access_token, "If-Match": '"0"'}
    with inspire_app.test_client() as client:
        response = client.put(
            f"/experiments/{control_number}", headers=headers, json=record
        )
        assert response.status_code == 200
コード例 #7
0
def test_literature_application_json_post_with_token(inspire_app):
    expected_status_code = 201
    token = create_user_and_token()
    headers = {"Authorization": "BEARER " + token.access_token}
    rec_data = faker.record("lit")

    with inspire_app.test_client() as client:
        response = client.post("/literature", headers=headers, json=rec_data)
    response_status_code = response.status_code

    assert expected_status_code == response_status_code
コード例 #8
0
def test_literature_application_json_delete_with_token(inspire_app):
    record = create_record("lit")
    record_control_number = record["control_number"]
    token = create_user_and_token()

    expected_status_code = 403

    headers = {"Authorization": "BEARER " + token.access_token}
    with inspire_app.test_client() as client:
        response = client.delete(
            "/literature/{}".format(record_control_number), headers=headers)
    response_status_code = response.status_code

    assert expected_status_code == response_status_code
コード例 #9
0
def test_literature_application_json_put_with_token_(inspire_app):
    expected_status_code = 200
    token = create_user_and_token("cataloger")
    headers = {"Authorization": "BEARER " + token.access_token, "If-Match": '"0"'}
    record = create_record("lit")
    record_control_number = record["control_number"]

    with inspire_app.test_client() as client:
        response = client.put(
            "/literature/{}".format(record_control_number), headers=headers, json=record
        )
    response_status_code = response.status_code

    assert expected_status_code == response_status_code
コード例 #10
0
def test_authors_application_json_put_with_token(inspire_app):
    record = create_record("aut")
    record_control_number = record["control_number"]
    token = create_user_and_token()

    expected_status_code = 200

    headers = {"Authorization": "BEARER " + token.access_token}
    with inspire_app.test_client() as client:
        response = client.put("/authors/{}".format(record_control_number),
                              headers=headers,
                              json=record)
    response_status_code = response.status_code

    assert expected_status_code == response_status_code
コード例 #11
0
def test_literature_search_permissions_private_collections_put(inspire_app):
    hidden_collection = "HEP Hidden"
    record = create_record("lit", data={"_collections": [hidden_collection]})
    token = create_user_and_token(user_role="user")
    headers = {
        "Authorization": "BEARER " + token.access_token,
        "If-Match": '"0"'
    }

    with inspire_app.test_client() as client:
        response = client.put(
            "/literature/{}".format(record["control_number"]),
            headers=headers,
            json=record,
        )
        assert response.status_code == 403
コード例 #12
0
def test_literature_search_permissions_private_collections_put_user_read_write(
    inspire_app, ):
    hidden_collection = "HEP Hidden"
    hidden_collection_role_prefix = hidden_collection.lower().replace(" ", "-")
    record = create_record("lit", data={"_collections": [hidden_collection]})
    token_readwrite = create_user_and_token(
        user_role=f"{hidden_collection_role_prefix}-read-write")
    headers_readwrite = {
        "Authorization": "BEARER " + token_readwrite.access_token,
        "If-Match": '"0"',
    }

    with inspire_app.test_client() as client:
        response = client.put(
            "/literature/{}".format(record["control_number"]),
            headers=headers_readwrite,
            json=record,
        )
        assert response.status_code == 200
コード例 #13
0
def test_error_message_on_pid_already_exists(inspire_app):
    create_record_factory("lit", data={"control_number": 666})
    token = create_user_and_token()
    headers = {"Authorization": "BEARER " + token.access_token}
    record = faker.record("lit", data={"control_number": 666})
    with inspire_app.test_client() as client:
        response = client.post(
            "/literature",
            headers=headers,
            content_type="application/json",
            data=orjson.dumps(record),
        )

    response_status_code = response.status_code
    response_message = response.json["message"]

    expected_status_code = 400
    expected_message = "PIDAlreadyExists: pid_type:'lit', pid_value:'666'."
    assert expected_status_code == response_status_code
    assert expected_message == response_message