From cb39c7d950091dddc0b7a3ade32784a27fe46774 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Thu, 30 Jan 2025 18:45:48 -0500 Subject: [PATCH 01/22] feature(neh; import): Work in progress on import API endpoint; basic endpoint responding to test --- .../invenio-record-importer-kcworks | 2 +- site/tests/api/test_api_import.py | 182 ++++++++++++++---- site/tests/conftest.py | 4 + site/tests/helpers/sample_files/sample.jpg | Bin 0 -> 1174188 bytes 4 files changed, 154 insertions(+), 34 deletions(-) create mode 100644 site/tests/helpers/sample_files/sample.jpg diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index 4fa418ba7..8efe0d131 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit 4fa418ba7d801928c63f9f9670bc9013ed7ad074 +Subproject commit 8efe0d131ca0d8737853c934c63c20dfc3a6715d diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index 25bc3ecc6..4ca14cb79 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -1,14 +1,78 @@ +from flask_login import login_user from invenio_access.permissions import authenticated_user from invenio_access.utils import get_identity +from invenio_record_importer_kcworks.proxies import current_record_importer_service +from invenio_record_importer_kcworks.record_loader import RecordLoader import json from pathlib import Path from pprint import pformat -def test_import_records( +def test_record_loader_load( + running_app, + db, + minimal_community_factory, + user_factory, + minimal_record_metadata, + search_clear, + mock_send_remote_api_update_fixture, + celery_worker, +): + app = running_app.app + u = user_factory(email="test@example.com", token=True, saml_id=None) + identity = get_identity(u.user) + identity.provides.add(authenticated_user) + login_user(u.user) + + community_record = minimal_community_factory(owner=u.user.id) + community = community_record.to_dict() + + result = RecordLoader(community_id=community["id"]).load(minimal_record_metadata) + assert result.get("status") == "success" + assert result.get("data") is not None + assert result.get("data").get("record_id") is not None + assert result.get("data").get("record_url") is not None + + +def test_import_records_service_load( + running_app, + db, + minimal_community_factory, + user_factory, + minimal_record_metadata, + search_clear, + mock_send_remote_api_update_fixture, +): + app = running_app.app + u = user_factory(email="test@example.com", token=True, saml_id=None) + identity = get_identity(u.user) + identity.provides.add(authenticated_user) + login_user(u.user) + + community_record = minimal_community_factory(owner=u.user.id) + community = community_record.to_dict() + + minimal_record_metadata["metadata"].get("identifiers", []).append( + {"identifier": "1234567890", "scheme": "import_id"} + ) + + service = current_record_importer_service + import_results = service.import_records( + file_data=[], + import_data=[minimal_record_metadata], + user_id=u.user.id, + community_id=community["id"], + ) + assert import_results.get("status") == "success" + assert import_results.get("data") is not None + assert import_results.get("data").get("records") is not None + assert import_results.get("data").get("records")[0].get("record_id") is not None + assert import_results.get("data").get("records")[0].get("record_url") is not None + + +def test_import_records_api_metadata_only( running_app, db, - client_with_login, minimal_community_factory, user_factory, minimal_record_metadata, @@ -16,48 +80,100 @@ def test_import_records( mock_send_remote_api_update_fixture, ): app = running_app.app - community = minimal_community_factory() u = user_factory(email="test@example.com", token=True, saml_id=None) token = u.allowed_token identity = get_identity(u.user) identity.provides.add(authenticated_user) - file_path = ( - Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.pdf" + community_record = minimal_community_factory(owner=u.user.id) + community = community_record.to_dict() + + minimal_record_metadata["metadata"].get("identifiers", []).append( + {"identifier": "1234567890", "scheme": "import_id"} ) - file_list = [{"key": "sample.pdf"}] + + with app.test_client() as client: + response = client.post( + f"{app.config['SITE_API_URL']}/import/{community['slug']}", + content_type="multipart/form-data", + data={ + "metadata": json.dumps([minimal_record_metadata]), + "id_scheme": "import_id", + "review_required": "true", + "strict_validation": "true", + "all_or_none": "true", + "files": [], + }, + headers={ + "Content-Type": "multipart/form-data", + "Authorization": f"Bearer {token}", + }, + ) + assert response.status_code == 201 + assert response.json["status"] == "success" + for record_result in response.json["data"]: + assert record_result.get("collection_id") in [ + community["id"], + community["slug"], + ] + assert record_result.get("record_id") is not None + assert record_result.get("record_url") is not None + assert record_result.get("files") == [] + assert record_result.get("errors") == [] + + +def test_import_records_api_with_files( + running_app, + db, + minimal_community_factory, + user_factory, + minimal_record_metadata, + search_clear, + mock_send_remote_api_update_fixture, +): + app = running_app.app + community_record = minimal_community_factory() + community = community_record.to_dict() + u = user_factory(email="test@example.com", token=True, saml_id=None) + token = u.allowed_token + identity = get_identity(u.user) + identity.provides.add(authenticated_user) + + file_paths = [ + Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.pdf", + Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.jpg", + ] + file_list = [{"key": "sample.pdf"}, {"key": "sample.jpg"}] minimal_record_metadata["files"] = {"enabled": True, "entries": file_list} with app.test_client() as client: - with open( - file_path, - "rb", - ) as binary_file_data: - binary_file_data.seek(0) - response = client.post( - f"{app.config['SITE_API_URL']}/import/{community.to_dict()['slug']}", - content_type="multipart/form-data", - data={ - "metadata": json.dumps(minimal_record_metadata), - "review_required": "true", - "strict_validation": "true", - "all_or_none": "true", - "files": [ - ( - file_path, - "sample.pdf", - "application/pdf", - ) - ], - }, - headers={ - "Content-Type": "multipart/form-data", - "Authorization": f"Bearer {token}", - }, - ) + response = client.post( + f"{app.config['SITE_API_URL']}/import/{community['slug']}", + content_type="multipart/form-data", + data={ + "metadata": [minimal_record_metadata], + "review_required": "true", + "strict_validation": "true", + "all_or_none": "true", + "files": [open(file_path, "rb") for file_path in file_paths], + }, + headers={ + "Content-Type": "multipart/form-data", + "Authorization": f"Bearer {token}", + }, + ) print(response.text) assert response.status_code == 201 - assert response.json == {"status": "success", "data": []} + assert response.json["status"] == "success" + for record_result in response.json["data"]: + assert record_result.get("collection_id") in [ + community["id"], + community["slug"], + ] + assert record_result.get("record_id") is not None + assert record_result.get("record_url") is not None + assert record_result.get("files") == file_list + assert record_result.get("errors") == [] # import requests diff --git a/site/tests/conftest.py b/site/tests/conftest.py index 91f2b0b42..de51322ac 100644 --- a/site/tests/conftest.py +++ b/site/tests/conftest.py @@ -113,6 +113,10 @@ def _(x): test_config["LOGGING_FS_LEVEL"] = "DEBUG" test_config["LOGGING_FS_LOGFILE"] = str(log_file_path) test_config["CELERY_LOGFILE"] = str(log_folder_path / "celery.log") +test_config["RECORD_IMPORTER_DATA_DIR"] = str( + parent_path / "helpers" / "sample_import_data" +) +test_config["RECORD_IMPORTER_LOGS_LOCATION"] = log_folder_path # enable DataCite DOI provider test_config["DATACITE_ENABLED"] = True diff --git a/site/tests/helpers/sample_files/sample.jpg b/site/tests/helpers/sample_files/sample.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04ef15be2d244f7a788064e82a6c30c96e8cfaca GIT binary patch literal 1174188 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 z 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

is$s$H@Y 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�eM>6J{j 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

m4e5T4QuXhb`8HY&28y(i2$Ec-6s+=8)#S|Uw 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%0Di+LiXAgR9F_PS%C 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

66C! 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%0DGP4okA2dZSwqTIktm)1(V$bvN0*^7~g2O1}(? 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 z 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 literal 0 HcmV?d00001 From d2a86dd58f52428b5c498b5c94846a5a33d5c070 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Thu, 30 Jan 2025 18:46:31 -0500 Subject: [PATCH 02/22] fix(importer): Adding new identifier schemes to support importer api --- invenio.cfg | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/invenio.cfg b/invenio.cfg index 1a738d7d9..0f9c810da 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -1250,6 +1250,16 @@ RDM_RECORDS_IDENTIFIERS_SCHEMES.update( "validator": idutils.is_doi, "datacite": "Other", }, + "import_id": { + "label": _("Import ID"), + "validator": always_valid, + "datacite": "Other", + }, + "neh_id": { + "label": _("NEH ID"), + "validator": always_valid, + "datacite": "Other", + }, } ) From 0e377553cfe4ccc47e80e9fb9aeb55d65e720299 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Thu, 6 Feb 2025 09:36:54 -0500 Subject: [PATCH 03/22] fix(docs): Updates to streamlined import api docs --- docs/source/api.md | 139 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 117 insertions(+), 22 deletions(-) diff --git a/docs/source/api.md b/docs/source/api.md index adac6b9b6..310f263e9 100644 --- a/docs/source/api.md +++ b/docs/source/api.md @@ -103,9 +103,10 @@ Why is this API needed? The InvenioRDM REST API can be fragile and difficult to ### Who can use the import API? -The import API is available to any registered active user who has obtained an OAuth token for API operations. +The import API is available to authorized organizations who have obtained an OAuth token for API operations. -If the import is to include placing the work directly in a collection, without passing through the review process, the user must have sufficient permissions to publish directly in the collection. Exactly what role they must have in the collection ("owner", "manager", "curator", "reader") depends on the collection's review policy. +If the import is to include placing the work directly in a collection, without passing through the review process, the user to whom +the token is issued must also have sufficient permissions to publish directly in the collection. Exactly what role they must have in the collection ("owner", "manager", "curator", "reader") depends on the collection's review policy. The exception to this rule is for collection owners, who may override the collection's review policy and import works directly into the collection without review. @@ -130,8 +131,8 @@ This request must be made with a multipart/form-data request. The request body m | Name | Required | Content Type | Description | |-------|----------|--------------|-------------| | `files` | yes | `application/octet-stream` | The (binary) file content to be uploaded. If multiple files are being uploaded, a body part with this same name ("files") must be provided for each file. If more than three or four files are being uploaded, it is recommended to provide a single zip archive containing all of the files. The files will be assigned to the appropriate work based on filename, so where multiple files are provided these **must be unique**. If a zip archive is provided, the files must be contained in a single compressed folder with no subfolders. | -| `metadata` | yes | `application/json` | An array of JSON metadata objects, each of which will be used to create a new work. Each must following the KCWorks implementation of the InvenioRDM metadata schema described {ref}`here `. In addition, an array of owners for the work may optionally be provided by adding an `access.owned_by` property to each metadata object. | -| `collection` | no | `text/plain` | The ID (either the url slug or the UUID) of the collection to which the work should be published. If this value is provided, the work will be submitted to the collection immediately after import. If the collection requires review, the work will be placed in the collection's review queue. | +| `metadata` | yes | `application/json` | An array of JSON metadata objects, each of which will be used to create a new work. Each must following the KCWorks implementation of the InvenioRDM metadata schema described {ref}`here `. In addition, an array of owners for the work may optionally be provided by adding an `access.owned_by` property to each metadata object. Note that if no owners are provided, the work will be created with the organizational account that issued the OAuth token as the owner. | +| `collection` | no | `text/plain` | The ID (either the url slug or the UUID) of the collection to which the work should be published. If this value is provided, the work will be submitted to the collection immediately after import. If the collection requires review, and the `review_required` parameter is set to "true", the work will be placed in the collection's review queue. | | `review_required` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the work should be reviewed before publication. This setting is only relevant if the work is intended for publication in a collection that requires review. It will override the collection's usual review policy, since the work is being uploaded by a collection administrator. (Default: "true") | | `strict_validation` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the import request should be rejected if any validation errors are encountered. If this value is "false", the imported work will be created in KCWorks even if some of the provided metadata does not conform to the KCWorks metadata schema, provided these are not required fields. If this value is "true", the import request will be rejected if any validation errors are encountered. (Default: "true") | | `all_or_none` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the entire import request should be rejected if any of the works fail to be created (whether for validation errors, upload errors, or other reasons). If this value is "false", the import request will be accepted even if some of the works cannot be created. The response in this case will include a list of works that were successfully created and a list of errors for the works that failed to be created. (Default: "true") | @@ -142,7 +143,7 @@ The array of owners, if provided in a metadata object's `access.owned_by` proper |-----|----------|------|-------------| | `full_name` | yes | `string` | The full name of the user. | | `email` | yes | `string` | The email address of the user. | -| `identifiers` | no | `array` | An array of identifiers for the user. Any identifier schemes supported by KCWorks will be accepted. | +| `identifiers` | no | `array` | An array of identifiers for the user. Any identifier schemes supported by KCWorks will be accepted. If the user already has a KCWorks account, the `kc_username` scheme should be used and the user's username provided as the identifier. | The resulting `owners` list should be shaped like this: @@ -176,16 +177,21 @@ Content-Type: application/json This response will include a JSON object with the following fields: - `status`: The status of the import request, which will be "success" if the import request was successful. -- `data`: An array of JSON objects with the following fields: +- `data`: An array of JSON objects, one for each record that was created in the operation +- `errors`: An array of JSON objects, one for each record that failed to be created. (In a successful import, this array will be empty.) +- `message`: A message describing the import request. (In a successful import, this will be "All records were successfully imported".) + +Each object in the `data` array will have the following fields: | key | type | description | |-----|------|-------------| -| `record_id` | `string` | The ID of the new work. | -| `record_url` | `string` | The URL of the new work. | -| `files` | `array` | A list of the filenames for the files that were successfully uploaded. This is for convenience. Details about the files, including their size and checksum, are available in the `files` property of the `metadata` object. | +| `item_index` | `integer` | The index of the record in the import request. (Starting with 0 for the first record.) | +| `record_id` | `string` | The KCWorks ID of the new work. | +| `record_url` | `string` | The URL of the new work. This is the URL of the work's landing page on KCWorks. Other URLs for the work, including the endpoints for API operations, are available in the `links` property of the record's `metadata` object. | +| `files` | `object` | An object whose keys are the filenames for the files that were successfully uploaded and whose values are 2 member arrays. The first member is a string representing the status of the file upload operation. The second member is an array of string error messages if any errors occurred during the upload. Further details about the files, including their size and checksum, are available in the `files` property of the `metadata` object. | | `collection_id` | `string` | The ID of the collection to which the work was published, if any. This is provided for convenience. Details about the collection are available in the `parent.communities` property of the `metadata` object. | -| `errors` | `array` | A list of errors that occurred during the import process. These might include validation errors for certain fields in the provided metadata that did not prevent creation of the work. (Only provided if the request was made with `strict_validation` set to "false".) | -| `metadata` | `object` | The metadata for the created work, in JSON format, following the KCWorks implementation of the InvenioRDM metadata schema described {ref}`here `. | +| `errors` | `array` | A list of objects, each of which describes an error that occurred during the import process. These might include validation errors for certain fields in the provided metadata that did not prevent creation of the work. | +| `metadata` | `object` | The metadata for the created work, in JSON format, following the KCWorks implementation of the InvenioRDM metadata schema described {ref}`here `. The returned metadata will include internal KCWorks system fields such as `created`, `updated`, `revision_id`, `id`, etc. It is identical to the metadata that would be returned by a GET request to the records API endpoint on KCWorks. | The response object will be shaped like this: @@ -197,7 +203,10 @@ The response object will be shaped like this: "item_index": 0, "record_id": "1234567890", "record_url": "https://works.hcommons.org/records/1234567890", - "files": ["file1.pdf", "file2.pdf"], + "files": { + "file1.pdf": ["success", []], + "file2.pdf": ["success", []] + }, "collection_id": "1234567890", "errors": [], "metadata": { @@ -208,14 +217,19 @@ The response object will be shaped like this: "item_index": 1, "record_id": "1234567891", "record_url": "https://works.hcommons.org/records/1234567891", - "files": ["file1.pdf", "file2.pdf"], + "files": { + "file1.pdf": ["success", []], + "file2.pdf": ["success", []] + }, "collection_id": "1234567890", "errors": [], "metadata": { /* ... */ } } - ] + ], + "errors": [], + "message": "All records were successfully imported." } ``` @@ -228,7 +242,7 @@ HTTP/1.1 403 Forbidden Content-Type: application/json ``` -This response will include a JSON object: +This response will include a JSON object with the following fields: ```json { @@ -249,24 +263,38 @@ a. the `strict_validation` request parameter was set to "true" and all of the su b. the `strict_validation` parameter is set to "false", but the validation errors affected fields that are required for the works to be created. c. the `all_or_none` request parameter is set to "true" and some of the supplied metadata objects raise validation errors. -The response will include a JSON object with the following fields: +The response will include a JSON object with the same shape as the successful response, but with the following differences: + +- The `status` field will be "error". +- The `data` field will be an empty array. +- The `errors` field will be an array of objects, each of which describes a work that failed to be created. In each object the `record_id` and `record_url` fields will be `null`, since the work was not created. The `errors` field will be an array of objects, each of which describes an error that occurred during the attempt to create the work. The `metadata` field will still contain the metadata that was provided in the request for reference. ```json { "status": "error", "message": "The request metadata is malformed or invalid.", + "data": [], "errors": [ { "item_index": 0, + "record_id": null, + "record_url": null, "errors": [ { "field": "title", "message": "Required field missing." } - ] + ], + "files": {}, + "collection_id": "1234567890", + "metadata": { + /* ... */ + } }, { "item_index": 1, + "record_id": null, + "record_url": null, "errors": [ { "field": "metadata.creators.0.occupation", @@ -276,13 +304,63 @@ The response will include a JSON object with the following fields: "field": "metadata.publication_date", "message": "Date is not in Extended Date Time Format (EDTF)." } - ] + ], + "files": {}, + "collection_id": "1234567890", + "metadata": { + /* ... */ + } } ] } ``` -If only some of the works to be imported are malformed or invalid, and the `all_or_none` request parameter is set to "false", the response will be `207 Multi-Status`. +### A partially successful import response + +If only some of the works to be imported are malformed or invalid, and the `all_or_none` request parameter is set to "false", the response will be `207 Multi-Status`. In this case the response will be shaped much like the successful and unsuccessful responses described above, but there will be items in *both* the `data` and `errors` arrays. The items in the `data` array will be works that were successfully created, and the items in the `errors` array will be works that failed to be created. + +The response will be shaped like this: + +```json +{ + "status": "multi_status", + "message": "The request metadata is malformed or invalid.", + "data": [ + { + "item_index": 1, + "record_id": "1234567891", + "record_url": "https://works.hcommons.org/records/1234567891", + "files": { + "file1.pdf": ["success", []], + "file2.pdf": ["success", []] + }, + "collection_id": "1234567890", + "errors": [], + "metadata": { + /* ... */ + } + } + ], + "errors": [ + { + "item_index": 0, + "record_id": null, + "record_url": null, + "errors": [ + { + "field": "title", + "message": "Required field missing." + } + ], + "files": {}, + "collection_id": "1234567890", + "metadata": { + /* ... */ + } + }, + ] +} +``` #### The request file upload failed @@ -344,7 +422,10 @@ If the `all_or_none` request parameter is set to "false", it is possible that so "item_index": 0, "record_id": "1234567890", "record_url": "https://works.hcommons.org/records/1234567890", - "files": ["file1.pdf", "file2.pdf"], + "files": { + "file1.pdf": ["success", []], + "file2.pdf": ["success", []] + }, "collection_id": "1234567890", "errors": [], "metadata": { @@ -355,23 +436,37 @@ If the `all_or_none` request parameter is set to "false", it is possible that so "failed": [ { "item_index": 1, + "record_id": null, + "record_url": null, "message": "The request metadata is malformed or invalid.", "errors": [ { "field": "title", "message": "Required field missing.", } - ] + ], + "files": {}, + "collection_id": "1234567890", + "metadata": { + /* ... */ + } }, { "item_index": 2, + "record_id": null, + "record_url": null, "message": "The file content is corrupted or invalid.", "errors": [ { "file": "file3.pdf", "message": "The file exceeds the maximum file size." } - ] + ], + "files": {}, + "collection_id": "1234567890", + "metadata": { + /* ... */ + } } ] } From 74d4819e0978a144a370f01635ee21a3a85b2a72 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Thu, 6 Feb 2025 09:37:10 -0500 Subject: [PATCH 04/22] feature(neh; import): Work in progress on import API endpoint; basic endpoint responding to test --- Pipfile | 1 + Pipfile.lock | 125 +++- invenio.cfg | 1 + site/tests/api/test_api_import.py | 710 ++++++++++++++++++++- site/tests/api/test_api_notifications.py | 34 +- site/tests/api/test_api_record_ops.py | 60 +- site/tests/api/test_search_provisioning.py | 9 +- site/tests/api/test_stats.py | 8 +- site/tests/conftest.py | 1 + site/tests/fixtures/files.py | 21 +- site/tests/fixtures/records.py | 326 +++++++++- 11 files changed, 1211 insertions(+), 85 deletions(-) diff --git a/Pipfile b/Pipfile index f498f383c..abf710389 100644 --- a/Pipfile +++ b/Pipfile @@ -63,6 +63,7 @@ xmlsec = "<1.3.14" kcworks = {file = "site", editable = true} flask-iiif = "*" sentry-sdk = "*" +pydantic = "*" [requires] python_version = "3.9" diff --git a/Pipfile.lock b/Pipfile.lock index d69257138..b7d9545f7 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "6f4a6f66fc846912f8bac226f2deff7633cae1a41e5a27c843f025c85c269b2a" + "sha256": "19b3aa2106ee0e1f8da0e521ffba267e03cc75a35557cd63e1a8c3bdd4117998" }, "pipfile-spec": 6, "requires": { @@ -146,6 +146,14 @@ ], "version": "==10.0.0" }, + "annotated-types": { + "hashes": [ + "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", + "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89" + ], + "markers": "python_version >= '3.8'", + "version": "==0.7.0" + }, "appdirs": { "hashes": [ "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", @@ -3202,6 +3210,121 @@ "markers": "python_version >= '3.8'", "version": "==2.22" }, + "pydantic": { + "hashes": [ + "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", + "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==2.10.6" + }, + "pydantic-core": { + "hashes": [ + "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278", + "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", + "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", + "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f", + "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", + "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", + "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54", + "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630", + "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", + "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", + "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", + "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", + "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", + "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", + "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", + "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", + "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", + "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd", + "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", + "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", + "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", + "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", + "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", + "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", + "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", + "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", + "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", + "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", + "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", + "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", + "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", + "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf", + "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", + "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", + "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76", + "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362", + "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", + "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", + "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320", + "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118", + "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96", + "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", + "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046", + "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", + "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", + "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", + "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", + "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67", + "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", + "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", + "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35", + "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", + "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", + "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b", + "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", + "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", + "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", + "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145", + "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", + "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", + "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", + "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", + "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", + "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", + "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5", + "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", + "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", + "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", + "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", + "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da", + "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", + "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", + "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993", + "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656", + "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4", + "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", + "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb", + "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d", + "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", + "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e", + "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", + "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc", + "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a", + "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9", + "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506", + "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b", + "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1", + "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", + "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", + "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", + "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", + "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", + "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", + "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", + "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308", + "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2", + "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228", + "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b", + "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", + "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad" + ], + "markers": "python_version >= '3.8'", + "version": "==2.27.2" + }, "pydash": { "hashes": [ "sha256:35caa588e01d293713655e0870544d25128cd414c5e19477a0d63adc2b2ca03e", diff --git a/invenio.cfg b/invenio.cfg index 0f9c810da..aa8b3e2b6 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -5682,6 +5682,7 @@ class CustomUserProfileSchema(Schema): identifier_email = fields.String() identifier_orcid = fields.String() identifier_kc_username = fields.String() + identifier_other = fields.String() unread_notifications = fields.String() diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index 4ca14cb79..7df927dbe 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -1,11 +1,21 @@ +import arrow +import datetime from flask_login import login_user -from invenio_access.permissions import authenticated_user +from invenio_access.permissions import authenticated_user, system_identity from invenio_access.utils import get_identity +from invenio_rdm_records.proxies import current_rdm_records_service as records_service from invenio_record_importer_kcworks.proxies import current_record_importer_service from invenio_record_importer_kcworks.record_loader import RecordLoader +from invenio_record_importer_kcworks.types import ( + APIResponsePayload, + FileData, + LoaderResult, +) import json from pathlib import Path from pprint import pformat +import re +import sys def test_record_loader_load( @@ -17,21 +27,484 @@ def test_record_loader_load( search_clear, mock_send_remote_api_update_fixture, celery_worker, + build_published_record_links, ): app = running_app.app u = user_factory(email="test@example.com", token=True, saml_id=None) + user_id = u.user.id identity = get_identity(u.user) identity.provides.add(authenticated_user) login_user(u.user) - community_record = minimal_community_factory(owner=u.user.id) + community_record = minimal_community_factory(owner=user_id) + community = community_record.to_dict() + + result: LoaderResult = RecordLoader( + user_id=user_id, community_id=community["id"] + ).load(index=0, import_data=minimal_record_metadata["in"]) + + record_created_id = result.record_created["record_data"]["id"] + + assert result.status == "new_record" + + # result.primary_community + assert result.primary_community["id"] == community["id"] + assert result.primary_community["metadata"]["title"] == "My Community" + assert result.primary_community["slug"] == "my-community" + + # result.record_created + assert result.record_created["record_data"]["access"] == { + "embargo": {"active": False, "reason": None}, + "files": "public", + "record": "public", + "status": "metadata-only", + } + assert arrow.utcnow() - arrow.get( + result.record_created["record_data"]["created"] + ) < datetime.timedelta(seconds=1) + assert result.record_created["record_data"]["custom_fields"] == {} + assert "expires_at" not in result.record_created["record_data"].keys() + assert result.record_created["record_data"]["files"] == { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + } + assert not result.record_created["record_data"]["is_draft"] + assert result.record_created["record_data"]["is_published"] + assert result.record_created["record_data"][ + "links" + ] == build_published_record_links( + record_created_id, + app.config["SITE_API_URL"], + app.config["SITE_UI_URL"], + result.record_created["record_data"]["parent"]["id"], + ) + assert result.record_created["record_data"]["media_files"] == { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + } + assert result.record_created["record_data"]["metadata"] == { + "creators": [ + { + "person_or_org": { + "family_name": "Brown", + "given_name": "Troy", + "name": "Brown, Troy", + "type": "personal", + } + }, + { + "person_or_org": { + "name": "Troy Inc.", + "type": "organizational", + } + }, + ], + "publication_date": "2020-06-01", + "publisher": "Acme Inc", + "resource_type": { + "id": "image-photograph", + "title": {"en": "Photo"}, + }, + "title": "A Romans story", + } + assert result.record_created["record_data"]["parent"]["access"] == { + "grants": [], + "links": [], + "owned_by": {"user": "1"}, + "settings": { + "accept_conditions_text": None, + "allow_guest_requests": False, + "allow_user_requests": False, + "secret_link_expiration": 0, + }, + } + assert result.record_created["record_data"]["parent"]["communities"] == { + "default": community["id"], + "entries": [ + { + "access": { + "member_policy": "open", + "members_visibility": "public", + "record_policy": "open", + "review_policy": "open", + "visibility": "public", + }, + "children": {"allow": False}, + "created": community["created"], + "custom_fields": {}, + "deletion_status": {"is_deleted": False, "status": "P"}, + "id": community["id"], + "links": {}, + "metadata": { + "curation_policy": "Curation policy", + "description": "A description", + "organizations": [{"name": "Organization 1"}], + "page": "Information for my community", + "title": "My Community", + "type": {"id": "event"}, + "website": "https://my-community.com", + }, + "revision_id": 2, + "slug": "my-community", + "updated": community["updated"], + }, + ], + "ids": [community["id"]], + } + assert result.record_created["record_data"]["parent"]["id"] + assert result.record_created["record_data"]["parent"]["pids"] == { + "doi": { + "client": "datacite", + "identifier": ( + f"10.17613/{result.record_created['record_data']['parent']['id']}" + ), + "provider": "datacite", + }, + } + assert result.record_created["record_data"]["pids"] == { + "doi": { + "client": "datacite", + "identifier": f"10.17613/{record_created_id}", + "provider": "datacite", + }, + "oai": { + "identifier": f"oai:https://localhost:{record_created_id}", + "provider": "oai", + }, + } + assert result.record_created["record_data"]["revision_id"] == 3 + assert result.record_created["record_data"]["status"] == "published" + assert arrow.utcnow() - arrow.get( + result.record_created["record_data"]["updated"] + ) < datetime.timedelta(seconds=1) + assert result.record_created["record_data"]["versions"] == { + "index": 1, + "is_latest": True, + "is_latest_draft": True, # FIXME: Should this be False? + } + assert re.match( + r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + str(result.record_created["record_uuid"]), + ) + assert result.record_created["status"] == "new_record" + + # result.existing_record + assert result.existing_record == {} + + # result.uploaded_files + assert result.uploaded_files == {} + + # result.community_review_result + assert result.community_review_result["is_closed"] + assert not result.community_review_result["is_expired"] + assert not result.community_review_result["is_open"] + assert result.community_review_result["receiver"]["community"] == community["id"] + assert result.community_review_result["revision_id"] == 4 + assert result.community_review_result["status"] == "accepted" + assert result.community_review_result["title"] == "A Romans story" + assert result.community_review_result["topic"]["record"] == record_created_id + assert result.community_review_result["type"] == "community-submission" + + # result.assigned_owners + assert result.assigned_owners == { + "owner_id": user_id, + "owner_type": "user", + "access_grants": [], + } + + # result.added_to_collections + assert result.added_to_collections == [] + + +def test_record_loader_load_with_files( + running_app, + db, + minimal_community_factory, + user_factory, + minimal_record_metadata, + search_clear, + mock_send_remote_api_update_fixture, + celery_worker, + build_published_record_links, + build_file_links, + file_md5, +): + app = running_app.app + u = user_factory(email="test@example.com", token=True, saml_id=None) + user_id = u.user.id + identity = get_identity(u.user) + identity.provides.add(authenticated_user) + login_user(u.user) + + community_record = minimal_community_factory(owner=user_id) community = community_record.to_dict() - result = RecordLoader(community_id=community["id"]).load(minimal_record_metadata) - assert result.get("status") == "success" - assert result.get("data") is not None - assert result.get("data").get("record_id") is not None - assert result.get("data").get("record_url") is not None + file_paths = [ + Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.pdf", + Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.jpg", + ] + file1 = open(file_paths[0], "rb") + file2 = open(file_paths[1], "rb") + files = [ + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf" + ), + stream=file1, + content_type="application/pdf", + mimetype="application/pdf", + mimetype_params={}, + ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg" + ), + stream=file2, + content_type="image/jpeg", + mimetype="image/jpeg", + mimetype_params={}, + ), + ] + file_list = [ + { + "key": "sample.pdf", + "mimetype": "application/pdf", + "size": 13264, # FIXME: Check reporting of mismatch + }, + { + "key": "sample.jpg", + "mimetype": "image/jpeg", + "size": 1174188, + }, + ] + minimal_record_metadata["in"]["files"] = {"enabled": True, "entries": file_list} + + result: LoaderResult = RecordLoader( + user_id=user_id, community_id=community["id"] + ).load( + index=0, + import_data=minimal_record_metadata["in"], + files=files, + ) + file1.close() + file2.close() + + record_created_id = result.record_created["record_data"]["id"] + + assert result.status == "new_record" + + # result.primary_community + assert result.primary_community["id"] == community["id"] + assert result.primary_community["metadata"]["title"] == "My Community" + assert result.primary_community["slug"] == "my-community" + + # result.record_created + minimal_metadata = minimal_record_metadata["published"] + assert result.record_created["record_data"]["access"] == minimal_metadata["access"] + assert arrow.utcnow() - arrow.get( + result.record_created["record_data"]["created"] + ) < datetime.timedelta(seconds=1) + assert result.record_created["record_data"]["custom_fields"] == {} + assert "expires_at" not in result.record_created["record_data"].keys() + assert result.record_created["record_data"]["files"]["count"] == 2 + assert result.record_created["record_data"]["files"]["enabled"] + assert result.record_created["record_data"]["files"]["entries"] == { + "sample.jpg": { + "access": {"hidden": False}, + "checksum": result.record_created["record_data"]["files"]["entries"][ + "sample.jpg" + ][ + "checksum" + ], # TODO: Fix this + "ext": "jpg", + "id": result.record_created["record_data"]["files"]["entries"][ + "sample.jpg" + ][ + "id" + ], # TODO: Fix this + "key": "sample.jpg", + "links": build_file_links( + record_created_id, app.config["SITE_API_URL"], "sample.jpg" + ), + "metadata": {}, + "mimetype": "image/jpeg", + "size": 1174188, + "storage_class": "L", + }, + "sample.pdf": { + "access": {"hidden": False}, + "checksum": result.record_created["record_data"]["files"]["entries"][ + "sample.pdf" + ][ + "checksum" + ], # TODO: Fix this + "ext": "pdf", + "id": result.record_created["record_data"]["files"]["entries"][ + "sample.pdf" + ][ + "id" + ], # TODO: Fix this + "key": "sample.pdf", + "links": build_file_links( + record_created_id, app.config["SITE_API_URL"], "sample.pdf" + ), + "metadata": {}, + "mimetype": "application/pdf", + "size": 13264, + "storage_class": "L", + }, + } + assert ( + result.record_created["record_data"]["files"]["order"] == [] + ) # FIXME: Why no order list? + assert ( + result.record_created["record_data"]["files"]["total_bytes"] == 1174188 + 13264 + ) + + assert not result.record_created["record_data"]["is_draft"] + assert result.record_created["record_data"]["is_published"] + assert result.record_created["record_data"][ + "links" + ] == build_published_record_links( + record_created_id, + app.config["SITE_API_URL"], + app.config["SITE_UI_URL"], + result.record_created["record_data"]["parent"]["id"], + ) + assert ( + result.record_created["record_data"]["media_files"] + == minimal_metadata["media_files"] + ) + assert ( + result.record_created["record_data"]["metadata"] == minimal_metadata["metadata"] + ) + + # result.uploaded_files + assert result.uploaded_files == { + "sample.jpg": ["uploaded", []], + "sample.pdf": ["uploaded", []], + } + + # result.community_review_result + assert result.community_review_result["is_closed"] + assert not result.community_review_result["is_expired"] + assert not result.community_review_result["is_open"] + assert result.community_review_result["receiver"]["community"] == community["id"] + + # result.assigned_owners + assert result.assigned_owners == { + "owner_id": user_id, + "owner_type": "user", + "access_grants": [], + } + + # result.added_to_collections + assert result.added_to_collections == [] + + # now check the record in the database/search + rdm_record = records_service.read(system_identity, id_=record_created_id).to_dict() + assert rdm_record["files"]["entries"] == { + "sample.jpg": { + "access": {"hidden": False}, + "checksum": result.record_created["record_data"]["files"]["entries"][ + "sample.jpg" + ][ + "checksum" + ], # TODO: Fix this + "ext": "jpg", + "key": "sample.jpg", + "id": result.record_created["record_data"]["files"]["entries"][ + "sample.jpg" + ][ + "id" + ], # TODO: Fix this + "links": build_file_links( + record_created_id, app.config["SITE_API_URL"], "sample.jpg" + ), + "metadata": {}, + "mimetype": "image/jpeg", + "size": 1174188, + "storage_class": "L", + }, + "sample.pdf": { + "access": {"hidden": False}, + "checksum": result.record_created["record_data"]["files"]["entries"][ + "sample.pdf" + ][ + "checksum" + ], # TODO: Fix this + "ext": "pdf", + "key": "sample.pdf", + "id": result.record_created["record_data"]["files"]["entries"][ + "sample.pdf" + ][ + "id" + ], # TODO: Fix this + "links": build_file_links( + record_created_id, app.config["SITE_API_URL"], "sample.pdf" + ), + "metadata": {}, + "mimetype": "application/pdf", + "size": 13264, + "storage_class": "L", + }, + } + assert rdm_record["files"]["order"] == [] + assert rdm_record["files"]["total_bytes"] == 1174188 + 13264 + assert rdm_record["files"]["enabled"] + assert rdm_record["files"]["count"] == 2 + + # Ensure the files can be downloaded + with app.test_client() as client: + with open(file_paths[1], "rb") as file2: + file_bytes = file2.read() + file_response2 = client.get( + f"{app.config['SITE_API_URL']}/records/{record_created_id}/files/" + "sample.jpg/content" + ) + assert file_response2.status_code == 200 + app.logger.debug(file_response2.headers) + assert ( + "inline" in file_response2.headers["Content-Disposition"] + ) # FIXME: why not attachment? + assert file_response2.headers["Content-MD5"] == file_md5( + file_response2.data + ) + assert file_response2.headers["Content-MD5"] == file_md5(file_bytes) + assert file_response2.content_type == "image/jpeg" + assert file_response2.content_length == 1174188 + assert sys.getsizeof(file_response2.data) == sys.getsizeof(file_bytes) + # assert file_response2.data == file2.read() + + with open(file_paths[0], "rb") as file1: + file_bytes = file1.read() + file_response1 = client.get( + f"{app.config['SITE_API_URL']}/records/{record_created_id}/files/" + "sample.pdf/content" + ) + assert file_response1.status_code == 200 + assert file_response1.headers["Content-MD5"] == file_md5( + file_response1.data + ) + assert file_response1.headers["Content-MD5"] == file_md5(file_bytes) + assert "sample.pdf" in file_response1.headers["Content-Disposition"] + assert ( + file_response1.content_type == "application/octet-stream" + ) # FIXME: why not application/pdf? + assert file_response1.content_length == 13264 + assert sys.getsizeof(file_response1.data) == sys.getsizeof(file_bytes) + # assert file_response1.data == file1.read() + + file1.close() + file2.close() def test_import_records_service_load( @@ -42,6 +515,7 @@ def test_import_records_service_load( minimal_record_metadata, search_clear, mock_send_remote_api_update_fixture, + build_published_record_links, ): app = running_app.app u = user_factory(email="test@example.com", token=True, saml_id=None) @@ -49,25 +523,129 @@ def test_import_records_service_load( identity.provides.add(authenticated_user) login_user(u.user) + # FIXME: We need to actually create a KC account for the users + # assigned as owners, not just a KCWorks account. Or maybe send + # them an email with a link to create a KC account with the same + # email address? + community_record = minimal_community_factory(owner=u.user.id) community = community_record.to_dict() - minimal_record_metadata["metadata"].get("identifiers", []).append( + minimal_record_metadata["in"]["metadata"].get("identifiers", []).append( {"identifier": "1234567890", "scheme": "import_id"} ) + file_paths = [ + Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.pdf", + Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.jpg", + ] + file1 = open(file_paths[0], "rb") + file2 = open(file_paths[1], "rb") + files = [ + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf" + ), + stream=file1, + content_type="application/pdf", + mimetype="application/pdf", + mimetype_params={}, + ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg" + ), + stream=file2, + content_type="image/jpeg", + mimetype="image/jpeg", + mimetype_params={}, + ), + ] + file_list = [ + { + "key": "sample.pdf", + "mimetype": "application/pdf", + "size": 13264, # FIXME: Check reporting of mismatch + }, + { + "key": "sample.jpg", + "mimetype": "image/jpeg", + "size": 1174188, + }, + ] + minimal_record_metadata["in"]["files"] = {"enabled": True, "entries": file_list} + service = current_record_importer_service import_results = service.import_records( - file_data=[], - import_data=[minimal_record_metadata], + file_data=files, + metadata=[minimal_record_metadata["in"]], user_id=u.user.id, community_id=community["id"], ) + + file1.close() + file2.close() + assert import_results.get("status") == "success" - assert import_results.get("data") is not None - assert import_results.get("data").get("records") is not None - assert import_results.get("data").get("records")[0].get("record_id") is not None - assert import_results.get("data").get("records")[0].get("record_url") is not None + assert len(import_results["data"]) == 1 + assert import_results.get("message") == "All records were successfully imported" + assert import_results.get("errors") == [] + + record_result1 = import_results["data"][0] + record_id1 = record_result1.get("record_id") + assert record_id1 + assert ( + record_result1.get("record_url") + == f"{app.config['SITE_UI_URL']}/records/{record_id1}" + ) + assert record_result1.get("files") == { + "sample.jpg": ("uploaded", []), + "sample.pdf": ("uploaded", []), + } + assert record_result1.get("errors") == [] + assert record_result1.get("collection_id") == community["id"] + result_metadata1 = record_result1.get("metadata") + minimal_record_metadata["in"]["access"].update( + { + "embargo": {"active": False, "reason": None}, + "status": "open", + } + ) + assert result_metadata1["access"] == minimal_record_metadata["in"]["access"] + assert result_metadata1["custom_fields"] == {} + assert result_metadata1["deletion_status"] == {"is_deleted": False, "status": "P"} + assert result_metadata1["id"] == record_id1 + assert not result_metadata1["is_draft"] + assert result_metadata1["is_published"] + assert result_metadata1["links"] == build_published_record_links( + record_id1, + app.config["SITE_API_URL"], + app.config["SITE_UI_URL"], + result_metadata1["parent"]["id"], + ) + assert result_metadata1["media_files"] == { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + } + assert result_metadata1["metadata"] == minimal_record_metadata["in"]["metadata"] + assert result_metadata1["parent"]["access"]["owned_by"]["user"] == str( + u.user.id + ) # FIXME: Why is this a string? + assert len(result_metadata1["parent"]["communities"]["entries"]) == 1 + assert ( + result_metadata1["parent"]["communities"]["entries"][0]["id"] == community["id"] + ) + assert result_metadata1["status"] == "published" + assert result_metadata1["versions"] == { + "index": 1, + "is_latest": True, + "is_latest_draft": True, + } def test_import_records_api_metadata_only( @@ -76,19 +654,22 @@ def test_import_records_api_metadata_only( minimal_community_factory, user_factory, minimal_record_metadata, + compare_metadata_published, search_clear, mock_send_remote_api_update_fixture, + celery_worker, ): app = running_app.app u = user_factory(email="test@example.com", token=True, saml_id=None) token = u.allowed_token + user_id = u.user.id identity = get_identity(u.user) identity.provides.add(authenticated_user) - community_record = minimal_community_factory(owner=u.user.id) + community_record = minimal_community_factory(owner=user_id) community = community_record.to_dict() - minimal_record_metadata["metadata"].get("identifiers", []).append( + minimal_record_metadata["in"]["metadata"].get("identifiers", []).append( {"identifier": "1234567890", "scheme": "import_id"} ) @@ -97,7 +678,7 @@ def test_import_records_api_metadata_only( f"{app.config['SITE_API_URL']}/import/{community['slug']}", content_type="multipart/form-data", data={ - "metadata": json.dumps([minimal_record_metadata]), + "metadata": json.dumps([minimal_record_metadata["in"]]), "id_scheme": "import_id", "review_required": "true", "strict_validation": "true", @@ -111,15 +692,41 @@ def test_import_records_api_metadata_only( ) assert response.status_code == 201 assert response.json["status"] == "success" - for record_result in response.json["data"]: + assert response.json["message"] == "All records were successfully imported" + assert response.json["errors"] == [] + assert len(response.json["data"]) == 1 + for index, record_result in enumerate(response.json["data"]): + assert record_result.get("item_index") == index + assert record_result.get("record_id") is not None + assert record_result.get("record_url") is not None assert record_result.get("collection_id") in [ community["id"], community["slug"], ] - assert record_result.get("record_id") is not None - assert record_result.get("record_url") is not None - assert record_result.get("files") == [] + assert record_result.get("files") == {} assert record_result.get("errors") == [] + community.update( + { + "links": {}, + "metadata": { + **community["metadata"], + "type": {"id": "event"}, + }, + } + ) # FIXME: Why are links not expanded but title is? + assert compare_metadata_published( + record_result.get("metadata"), + minimal_record_metadata["published"], + community_list=[community], + ) + + # Check the record in the database + record_id1 = record_result.get("record_id") + rdm_record = records_service.read(system_identity, id_=record_id1).to_dict() + assert rdm_record["files"]["entries"] == {} + assert rdm_record["files"]["order"] == [] + assert rdm_record["files"]["total_bytes"] == 0 + assert not rdm_record["files"]["enabled"] def test_import_records_api_with_files( @@ -127,7 +734,8 @@ def test_import_records_api_with_files( db, minimal_community_factory, user_factory, - minimal_record_metadata, + minimal_record_metadata_with_files, + compare_metadata_published, search_clear, mock_send_remote_api_update_fixture, ): @@ -144,14 +752,27 @@ def test_import_records_api_with_files( Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.jpg", ] file_list = [{"key": "sample.pdf"}, {"key": "sample.jpg"}] - minimal_record_metadata["files"] = {"enabled": True, "entries": file_list} + expected_metadata = minimal_record_metadata_with_files( + { + "sample.pdf": { + "key": "sample.pdf", + "size": 13264, + "mimetype": "application/pdf", + }, + "sample.jpg": { + "key": "sample.jpg", + "size": 1174188, + "mimetype": "image/jpeg", + }, + }, + ) with app.test_client() as client: response = client.post( f"{app.config['SITE_API_URL']}/import/{community['slug']}", content_type="multipart/form-data", data={ - "metadata": [minimal_record_metadata], + "metadata": json.dumps([expected_metadata["in"]]), "review_required": "true", "strict_validation": "true", "all_or_none": "true", @@ -165,16 +786,49 @@ def test_import_records_api_with_files( print(response.text) assert response.status_code == 201 assert response.json["status"] == "success" - for record_result in response.json["data"]: + assert response.json["message"] == "All records were successfully imported" + assert response.json["errors"] == [] + assert len(response.json["data"]) == 1 + for index, record_result in enumerate(response.json["data"]): + assert record_result.get("item_index") == index + assert record_result.get("record_id") is not None + assert ( + record_result.get("record_url") + == f"{app.config['SITE_UI_URL']}/records/{record_result.get('record_id')}" + ) assert record_result.get("collection_id") in [ community["id"], community["slug"], ] - assert record_result.get("record_id") is not None - assert record_result.get("record_url") is not None - assert record_result.get("files") == file_list + assert record_result.get("files") == { + f["key"]: ["uploaded", []] for f in file_list + } assert record_result.get("errors") == [] + community.update( + { + "links": {}, + "metadata": { + **community["metadata"], + "type": {"id": "event"}, + }, + } + ) # FIXME: Why are links not expanded but title is? + assert compare_metadata_published( + record_result.get("metadata"), + expected_metadata["published"], + community_list=[community], + owner_id=u.user.id, + ) + + # Check the record in the database + record_id1 = record_result.get("record_id") + rdm_record = records_service.read(system_identity, id_=record_id1).to_dict() + assert len(rdm_record["files"]["entries"].keys()) == 2 + assert rdm_record["files"]["order"] == ["sample.jpg", "sample.pdf"] + assert rdm_record["files"]["total_bytes"] == 1187452 + assert rdm_record["files"]["enabled"] + # import requests diff --git a/site/tests/api/test_api_notifications.py b/site/tests/api/test_api_notifications.py index 56d352d25..0c328ee3b 100644 --- a/site/tests/api/test_api_notifications.py +++ b/site/tests/api/test_api_notifications.py @@ -82,7 +82,7 @@ def test_notify_for_request_acceptance( logged_in_client = client response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata), + data=json.dumps(minimal_record_metadata["in"]["in"]), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -294,7 +294,7 @@ def test_notify_for_request_decline( logged_in_client = client response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata), + data=json.dumps(minimal_record_metadata["in"]), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -494,7 +494,7 @@ def test_notify_for_request_cancellation( logged_in_client = client response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata), + data=json.dumps(minimal_record_metadata["in"]), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -670,7 +670,7 @@ def test_notify_for_new_request_comment( with app.test_client() as client: response = client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata), + data=json.dumps(minimal_record_metadata["in"]), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -1459,7 +1459,7 @@ def test_notification_on_first_upload( # Create the first draft draft1_response = client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata), + data=json.dumps(minimal_record_metadata["in"]), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert draft1_response.status_code == 201 @@ -1484,9 +1484,15 @@ def test_notification_on_first_upload( f"'{app.config.get('SITE_UI_URL')}/records/{first_draft_id}'>" f"View draft)" in email.html ) - assert f"Draft title: {minimal_record_metadata['metadata']['title']}" in email.body - assert f"Draft title: {minimal_record_metadata['metadata']['title']}" in email.html - # assert f"Full metadata: {minimal_record_metadata}" in email.body + assert ( + f"Draft title: {minimal_record_metadata['in']['metadata']['title']}" + in email.body + ) + assert ( + f"Draft title: {minimal_record_metadata['in']['metadata']['title']}" + in email.html + ) + # assert f"Full metadata: {minimal_record_metadata["in"]}" in email.body assert f"User ID: {user_id}" in email.body assert f"User ID: {user_id}" in email.html assert f"User email: {user_email}" in email.body @@ -1499,7 +1505,7 @@ def test_notification_on_first_upload( # Create a second draft work (different work) draft2_response = client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata), + data=json.dumps(minimal_record_metadata["in"]), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert draft2_response.status_code == 201 @@ -1527,8 +1533,14 @@ def test_notification_on_first_upload( app.logger.debug(f"email.body: {pformat(email.body)}") assert f"Work ID: {first_draft_id}" in email.body assert f"Work ID: {first_draft_id}" in email.html - assert f"Work title: {minimal_record_metadata['metadata']['title']}" in email.body - assert f"Work title: {minimal_record_metadata['metadata']['title']}" in email.html + assert ( + f"Work title: {minimal_record_metadata['in']['metadata']['title']}" + in email.body + ) + assert ( + f"Work title: {minimal_record_metadata['in']['metadata']['title']}" + in email.html + ) assert f"User ID: {user_id}" in email.body assert f"User ID: {user_id}" in email.html assert f"User email: {user_email}" in email.body diff --git a/site/tests/api/test_api_record_ops.py b/site/tests/api/test_api_record_ops.py index 3fccb8117..d9f792f02 100644 --- a/site/tests/api/test_api_record_ops.py +++ b/site/tests/api/test_api_record_ops.py @@ -34,12 +34,12 @@ def test_draft_creation_api( user = u.user token = u.allowed_token - minimal_record_metadata.update({"files": {"enabled": False}}) + minimal_record_metadata["in"].update({"files": {"enabled": False}}) with app.test_client() as client: logged_in_client = client_with_login(client, user) response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata), + data=json.dumps(minimal_record_metadata["in"]), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -208,7 +208,7 @@ def test_draft_creation_service( minimal_draft_record_factory, ): app = running_app.app - result = minimal_draft_record_factory(metadata=minimal_record_metadata) + result = minimal_draft_record_factory(metadata=minimal_record_metadata["in"]) actual_draft = result.to_dict() app.logger.debug(f"actual_draft: {pformat(actual_draft)}") assert actual_draft["is_draft"] @@ -221,23 +221,23 @@ def test_draft_creation_service( assert actual_draft["files"]["entries"] == {} assert ( actual_draft["metadata"]["creators"] - == minimal_record_metadata["metadata"]["creators"] + == minimal_record_metadata["in"]["metadata"]["creators"] ) assert ( actual_draft["metadata"]["publisher"] - == minimal_record_metadata["metadata"]["publisher"] + == minimal_record_metadata["in"]["metadata"]["publisher"] ) assert ( actual_draft["metadata"]["publication_date"] - == minimal_record_metadata["metadata"]["publication_date"] + == minimal_record_metadata["in"]["metadata"]["publication_date"] ) assert ( actual_draft["metadata"]["resource_type"]["id"] - == minimal_record_metadata["metadata"]["resource_type"]["id"] + == minimal_record_metadata["in"]["metadata"]["resource_type"]["id"] ) assert ( actual_draft["metadata"]["title"] - == minimal_record_metadata["metadata"]["title"] + == minimal_record_metadata["in"]["metadata"]["title"] ) read_result = records_service.read_draft(system_identity, actual_draft["id"]) @@ -272,10 +272,10 @@ def test_record_publication_api( with app.test_client() as client: logged_in_client = client_with_login(client, user) - minimal_record_metadata.update({"files": {"enabled": False}}) + minimal_record_metadata["in"].update({"files": {"enabled": False}}) response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata), + data=json.dumps(minimal_record_metadata["in"]), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -314,8 +314,8 @@ def test_record_publication_service( ): """Test that a system user can create a draft record internally.""" - minimal_record_metadata.update({"files": {"enabled": False}}) - result = minimal_draft_record_factory(metadata=minimal_record_metadata) + minimal_record_metadata["in"].update({"files": {"enabled": False}}) + result = minimal_draft_record_factory(metadata=minimal_record_metadata["in"]) actual_draft = result.to_dict() actual_draft_id = actual_draft["id"] @@ -360,12 +360,12 @@ def test_record_draft_update_api( user = u.user token = u.allowed_token - minimal_record_metadata.update({"files": {"enabled": False}}) + minimal_record_metadata["in"].update({"files": {"enabled": False}}) with app.test_client() as client: logged_in_client = client_with_login(client, user) creation_response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata), + data=json.dumps(minimal_record_metadata["in"]), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert creation_response.status_code == 201 @@ -373,10 +373,10 @@ def test_record_draft_update_api( actual_draft = creation_response.json actual_draft_id = actual_draft["id"] - minimal_record_metadata["metadata"]["title"] = "A Romans Story 2" + minimal_record_metadata["in"]["metadata"]["title"] = "A Romans Story 2" update_response = logged_in_client.put( f"{app.config['SITE_API_URL']}/records/{actual_draft_id}/draft", - data=json.dumps(minimal_record_metadata), + data=json.dumps(minimal_record_metadata["in"]), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert update_response.status_code == 200 @@ -418,11 +418,11 @@ def test_record_draft_update_service( celery_worker, mock_send_remote_api_update_fixture, ): - minimal_record_metadata.update({"files": {"enabled": False}}) - draft_result = minimal_draft_record_factory(metadata=minimal_record_metadata) - minimal_record_metadata["metadata"]["title"] = "A Romans Story 2" + minimal_record_metadata["in"].update({"files": {"enabled": False}}) + draft_result = minimal_draft_record_factory(metadata=minimal_record_metadata["in"]) + minimal_record_metadata["in"]["metadata"]["title"] = "A Romans Story 2" edited_draft_result = records_service.update_draft( - system_identity, draft_result.id, minimal_record_metadata + system_identity, draft_result.id, minimal_record_metadata["in"] ) actual_edited = edited_draft_result.to_dict() assert actual_edited["id"] == draft_result.id @@ -491,9 +491,9 @@ def test_record_file_upload_api_not_enabled( file_list = [{"key": "sample.pdf"}] with app.test_client() as client: - minimal_record_metadata["files"] = {"enabled": False} + minimal_record_metadata["in"]["files"] = {"enabled": False} draft_result = minimal_draft_record_factory( - identity=identity, metadata=minimal_record_metadata + identity=identity, metadata=minimal_record_metadata["in"] ) draft_id = draft_result.id @@ -546,9 +546,9 @@ def test_record_file_upload_api( file_list = [{"key": "sample.pdf"}] with app.test_client() as client: - minimal_record_metadata["files"] = {"enabled": True} + minimal_record_metadata["in"]["files"] = {"enabled": True} draft_result = minimal_draft_record_factory( - identity=identity, metadata=minimal_record_metadata + identity=identity, metadata=minimal_record_metadata["in"] ) draft_id = draft_result.id @@ -830,21 +830,23 @@ def test_record_view_api( } assert ( record["metadata"]["creators"] - == minimal_record_metadata["metadata"]["creators"] + == minimal_record_metadata["in"]["metadata"]["creators"] ) assert ( record["metadata"]["publication_date"] - == minimal_record_metadata["metadata"]["publication_date"] + == minimal_record_metadata["in"]["metadata"]["publication_date"] ) assert ( record["metadata"]["publisher"] - == minimal_record_metadata["metadata"]["publisher"] + == minimal_record_metadata["in"]["metadata"]["publisher"] ) # Add title to resource type (updated by system after draft creation) - minimal_record_metadata["metadata"]["resource_type"]["title"] = {"en": "Photo"} + minimal_record_metadata["in"]["metadata"]["resource_type"]["title"] = { + "en": "Photo" + } assert ( record["metadata"]["resource_type"] - == minimal_record_metadata["metadata"]["resource_type"] + == minimal_record_metadata["in"]["metadata"]["resource_type"] ) assert not record["is_draft"] assert record["is_published"] diff --git a/site/tests/api/test_search_provisioning.py b/site/tests/api/test_search_provisioning.py index 67dd18127..6ac8131d4 100644 --- a/site/tests/api/test_search_provisioning.py +++ b/site/tests/api/test_search_provisioning.py @@ -54,13 +54,13 @@ def test_trigger_search_provisioning( service = current_rdm_records.records_service # Draft creation, no remote API operations should be prompted - draft = service.create(system_identity, minimal_record_metadata) + draft = service.create(system_identity, minimal_record_metadata["in"]) actual_draft = draft.data assert actual_draft["metadata"]["title"] == "A Romans story" assert mock_adapter.call_count == 0 # Draft edit, no remote API operations should be prompted - minimal_edited = minimal_record_metadata.copy() + minimal_edited = minimal_record_metadata["in"].copy() minimal_edited["metadata"]["title"] = "A Romans Story 2" edited_draft = service.update_draft(system_identity, draft.id, minimal_edited) actual_edited = edited_draft.data.copy() @@ -447,9 +447,6 @@ def test_trigger_community_provisioning( # Set up mock subscriber and intercept message to callback monkeypatch.setenv("MOCK_SIGNAL_SUBSCRIBER", "True") - app.logger.debug( - f"app.config components: {pformat([c for c in app.config['COMMUNITIES_SERVICE_COMPONENTS']])}" - ) # Set up mock remote API response rec_url = list(app.config["REMOTE_API_PROVISIONER_EVENTS"]["community"].keys())[0] @@ -679,7 +676,7 @@ def test_search_id_recording_callback( # Set up minimal record to update after search provisioning service = current_rdm_records.records_service - draft = service.create(system_identity, minimal_record_metadata) + draft = service.create(system_identity, minimal_record_metadata["in"]) read_record = service.read_draft(system_identity, draft.id) assert read_record.data["metadata"]["title"] == "A Romans story" assert read_record.data["custom_fields"].get("kcr:commons_search_recid") is None diff --git a/site/tests/api/test_stats.py b/site/tests/api/test_stats.py index 20f4c97d3..4e90dee17 100644 --- a/site/tests/api/test_stats.py +++ b/site/tests/api/test_stats.py @@ -12,7 +12,9 @@ @pytest.mark.skip("Not implemented") def test_stat_creation(running_app, db, search_clear, minimal_record_metadata): - draft = current_rdm_records_service.create(system_identity, minimal_record_metadata) + draft = current_rdm_records_service.create( + system_identity, minimal_record_metadata["in"] + ) published = current_rdm_records_service.publish(system_identity, draft["id"]) record_id = published["id"] metadata_record = published["metadata"] @@ -30,7 +32,9 @@ def test_stats_backend_processing( celery_worker, mock_send_remote_api_update_fixture, ): - draft = current_rdm_records_service.create(system_identity, minimal_record_metadata) + draft = current_rdm_records_service.create( + system_identity, minimal_record_metadata["in"] + ) published = current_rdm_records_service.publish(system_identity, draft["id"]) record_id = published.id metadata_record = published.to_dict() diff --git a/site/tests/conftest.py b/site/tests/conftest.py index de51322ac..15306f3c2 100644 --- a/site/tests/conftest.py +++ b/site/tests/conftest.py @@ -31,6 +31,7 @@ pytest_plugins = ( "celery.contrib.pytest", + "tests.fixtures.files", "tests.fixtures.communities", "tests.fixtures.custom_fields", "tests.fixtures.records", diff --git a/site/tests/fixtures/files.py b/site/tests/fixtures/files.py index 74a1d9bc7..daa2a3369 100644 --- a/site/tests/fixtures/files.py +++ b/site/tests/fixtures/files.py @@ -1,11 +1,28 @@ import pytest +import hashlib + + +@pytest.fixture() +def file_md5(): + def _factory(bytes_object): + return hashlib.md5(bytes_object).hexdigest() + + return _factory @pytest.fixture(scope="function") def build_file_links(): - def _factory(record_id, base_url, upload_url): + def _factory(record_id, base_api_url, filename): return { - "self": f"{base_url}/records/{record_id}/draft/files", + "content": f"{base_api_url}/records/{record_id}/files/{filename}/content", + "iiif_api": ( + f"{base_api_url}/iiif/record:{record_id}:{filename}/full/full/0/" + "default.png" + ), + "iiif_base": f"{base_api_url}/iiif/record:{record_id}:{filename}", + "iiif_canvas": f"{base_api_url}/iiif/record:{record_id}/canvas/{filename}", + "iiif_info": f"{base_api_url}/iiif/record:{record_id}:{filename}/info.json", + "self": f"{base_api_url}/records/{record_id}/files/{filename}", } return _factory diff --git a/site/tests/fixtures/records.py b/site/tests/fixtures/records.py index 7bc8bec80..bbc24a389 100644 --- a/site/tests/fixtures/records.py +++ b/site/tests/fixtures/records.py @@ -1,7 +1,12 @@ +from pprint import pformat import pytest +import arrow +from arrow import Arrow +import datetime from flask_principal import Identity from invenio_access.permissions import system_identity from invenio_rdm_records.proxies import current_rdm_records_service as records_service +import re from typing import Optional @@ -10,7 +15,7 @@ def minimal_draft_record_factory(running_app, db, minimal_record_metadata): def _factory( metadata: Optional[dict] = None, identity: Optional[Identity] = None, **kwargs ): - input_metadata = metadata or minimal_record_metadata + input_metadata = metadata or minimal_record_metadata["in"] identity = identity or system_identity return records_service.create(identity, input_metadata) @@ -22,7 +27,7 @@ def minimal_published_record_factory(running_app, db, minimal_record_metadata): def _factory( metadata: Optional[dict] = None, identity: Optional[Identity] = None, **kwargs ): - input_metadata = metadata or minimal_record_metadata + input_metadata = metadata or minimal_record_metadata["in"] identity = identity or system_identity draft = records_service.create(identity, input_metadata) return records_service.publish(identity, draft.id) @@ -30,10 +35,145 @@ def _factory( return _factory -@pytest.fixture() -def minimal_record_metadata(): - """Minimal record data as dict coming from the external world.""" - return { +@pytest.fixture(scope="function") +def compare_metadata_published( + running_app, build_published_record_links, build_file_links +): + app = running_app.app + + def _comparison_factory( + actual: dict, + expected: dict, + now: Arrow = arrow.utcnow(), + community_list: list[dict] = [], + owner_id: str = "1", + ): + try: + expected["parent"]["access"]["owned_by"] = {"user": int(owner_id)} + assert now - arrow.get(actual["created"]) < datetime.timedelta(seconds=1) + assert actual["custom_fields"] == {} + assert "expires_at" not in actual.keys() + assert actual["files"]["count"] == expected["files"]["count"] + assert actual["files"]["enabled"] == expected["files"]["enabled"] + for k, v in actual["files"]["entries"].items(): + assert v["access"] == expected["files"]["entries"][k]["access"] + # assert v["checksum"] # FIXME: Add checksum + assert v["ext"] == expected["files"]["entries"][k]["ext"] + assert v["key"] == expected["files"]["entries"][k]["key"] + assert v["mimetype"] == expected["files"]["entries"][k]["mimetype"] + assert v["size"] == expected["files"]["entries"][k]["size"] + assert ( + v["storage_class"] + == expected["files"]["entries"][k]["storage_class"] + ) + assert v["metadata"] == expected["files"]["entries"][k]["metadata"] + assert v["links"] == build_file_links( + actual["id"], app.config["SITE_API_URL"], k + ) + assert actual["files"]["order"] == expected["files"]["order"] + assert actual["files"]["total_bytes"] == expected["files"]["total_bytes"] + + assert not actual["is_draft"] + assert actual["is_published"] + assert actual["links"] == build_published_record_links( + actual["id"], + app.config["SITE_API_URL"], + app.config["SITE_UI_URL"], + actual["parent"]["id"], + ) + assert actual["media_files"] == { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + } + assert actual["metadata"]["creators"] == expected["metadata"]["creators"] + assert ( + actual["metadata"]["publication_date"] + == expected["metadata"]["publication_date"] + ) + assert actual["metadata"]["publisher"] == expected["metadata"]["publisher"] + assert ( + actual["metadata"]["resource_type"] + == expected["metadata"]["resource_type"] + ) + assert actual["metadata"]["title"] == expected["metadata"]["title"] + + assert actual["parent"]["access"] == expected["parent"]["access"] + if community_list: + assert ( + actual["parent"]["communities"]["default"] + == community_list[0]["id"] + ) + for community in community_list: + app.logger.debug(f"community from list: {pformat(community)}") + actual_c = [ + c + for c in actual["parent"]["communities"]["entries"] + if c["id"] == community["id"] + ][0] + assert actual_c["access"] == community["access"] + assert actual_c["children"] == community["children"] + # assert actual_c["created"] == community["created"] + assert actual_c["custom_fields"] == community["custom_fields"] + assert actual_c["deletion_status"] == community["deletion_status"] + assert actual_c["id"] == community["id"] + assert actual_c["links"] == community["links"] + assert actual_c["metadata"] == community["metadata"] + assert actual_c["revision_id"] == community["revision_id"] + assert actual_c["slug"] == community["slug"] + # assert actual_c["updated"] == community["updated"] + assert actual["parent"]["communities"]["ids"] == [ + c["id"] for c in community_list + ] + assert actual["parent"]["pids"] == { + "doi": { + "client": "datacite", + "identifier": (f"10.17613/{actual['parent']['id']}"), + "provider": "datacite", + }, + } + assert actual["pids"] == { + "doi": { + "client": "datacite", + "identifier": f"10.17613/{actual['id']}", + "provider": "datacite", + }, + "oai": { + "identifier": f"oai:https://localhost:{actual['id']}", + "provider": "oai", + }, + } + assert actual["revision_id"] == 3 + assert actual["stats"] == expected["stats"] + assert actual["status"] == "published" + assert now - arrow.get(actual["updated"]) < datetime.timedelta(seconds=1) + assert actual["versions"] == expected["versions"] + return True + except AssertionError as e: + app.logger.error(f"Assertion failed: {e}") + raise e + + return _comparison_factory + + +@pytest.fixture(scope="function") +def minimal_record_metadata(running_app): + """Minimal record data as dict coming from the external world. + + Fields that can't be set before record creation: + + created + id + updated + pids + parent.pids + parent.id + + """ + app = running_app.app + metadata_in = { "pids": {}, "access": { "record": "public", @@ -67,6 +207,180 @@ def minimal_record_metadata(): }, } + metadata_out_draft = metadata_in.copy() + metadata_out_draft["access"]["embargo"] = {"active": False, "reason": None} + metadata_out_draft["access"]["status"] = "metadata-only" + metadata_out_draft["deletion_status"] = {"is_deleted": False, "status": "P"} + metadata_out_draft["custom_fields"] = {} + metadata_out_draft["is_draft"] = True + metadata_out_draft["is_published"] = False + metadata_out_draft["versions"] = { + "index": 1, + "is_latest": False, + "is_latest_draft": True, + } + metadata_out_draft["metadata"]["resource_type"] = { + "id": "image-photograph", + "title": {"en": "Photo"}, + } + metadata_out_draft["media_files"] = { + "count": 0, + "enabled": False, + } + metadata_out_draft["files"] = { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + } + metadata_out_draft["parent"] = { + "access": { + "grants": [], + "links": [], + "owned_by": {"user": "1"}, + "settings": { + "accept_conditions_text": None, + "allow_guest_requests": False, + "allow_user_requests": False, + "secret_link_expiration": 0, + }, + }, + "communities": { + "default": "215de947-a24d-4255-973c-25306e19a0aa", + "entries": [ + { + "access": { + "member_policy": "open", + "members_visibility": "public", + "record_policy": "open", + "review_policy": "open", + "visibility": "public", + }, + "children": {"allow": False}, + "created": "2025-02-05T18:56:07.723517+00:00", + "custom_fields": {}, + "deletion_status": {"is_deleted": False, "status": "P"}, + "id": "215de947-a24d-4255-973c-25306e19a0aa", + "links": {}, + "metadata": { + "curation_policy": "Curation policy", + "description": "A description", + "description": "A description", + "organizations": [{"name": "Organization 1"}], + "page": "Information for my community", + "title": "My Community", + "type": {"id": "event"}, + "website": "https://my-community.com", + }, + "revision_id": 2, + "slug": "my-community", + "updated": "2025-02-05T18:56:07.860278+00:00", + }, + ], + "ids": ["215de947-a24d-4255-973c-25306e19a0aa"], + "id": "74wky-xv103", + "pids": { + "doi": { + "client": "datacite", + "identifier": "10.17613/74wky-xv103", + "provider": "datacite", + } + }, + }, + } + metadata_out_draft["pids"] = { + "doi": { + "client": "datacite", + "identifier": "10.17613/XXXX", + "provider": "datacite", + }, + "oai": { + "identifier": f"oai:{app.config['SITE_UI_URL']}:XXXX", + "provider": "oai", + }, + } + metadata_out_draft["revision_id"] = 3 + metadata_out_draft["stats"] = { + "all_versions": { + "data_volume": 0.0, + "downloads": 0, + "unique_downloads": 0, + "unique_views": 0, + "views": 0, + }, + "this_version": { + "data_volume": 0.0, + "downloads": 0, + "unique_downloads": 0, + "unique_views": 0, + "views": 0, + }, + } + metadata_out_draft["status"] = "published" + metadata_out_draft["updated"] = "XXXX" + + metadata_out_published = metadata_out_draft.copy() + metadata_out_published["is_draft"] = False + metadata_out_published["is_published"] = True + metadata_out_published["versions"] = { + "index": 1, + "is_latest": True, + "is_latest_draft": True, + } + metadata_out_published["metadata"]["resource_type"] = { + "id": "image-photograph", + "title": {"en": "Photo"}, + } + metadata_out_published["media_files"] = { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + } + return { + "in": metadata_in, + "draft": metadata_out_draft, + "published": metadata_out_published, + } + + +@pytest.fixture(scope="function") +def minimal_record_metadata_with_files(minimal_record_metadata): + + def _factory(entries: dict, access_status: str = "open"): + + minimal_record_metadata["in"]["files"]["enabled"] = True + minimal_record_metadata["in"]["files"]["entries"] = entries + + minimal_record_metadata["draft"]["files"]["enabled"] = True + minimal_record_metadata["draft"]["access"]["status"] = access_status + minimal_record_metadata["draft"]["files"]["entries"] = entries + minimal_record_metadata["draft"]["files"]["count"] = len(entries.keys()) + minimal_record_metadata["draft"]["files"]["total_bytes"] = sum( + [e["size"] for k, e in entries.items()] + ) + minimal_record_metadata["draft"]["files"]["order"] = [] + for k, e in entries.items(): + minimal_record_metadata["draft"]["files"]["entries"][e["key"]] = { + "access": {"hidden": False}, + "ext": e["key"][-3:], + "metadata": None, + "mimetype": e["mimetype"], + "key": e["key"], + "size": e["size"], + "storage_class": "L", + } + + minimal_record_metadata["published"]["files"]["enabled"] = True + minimal_record_metadata["published"]["access"]["status"] = access_status + minimal_record_metadata["published"]["files"]["entries"] = entries + + return minimal_record_metadata + + return _factory + @pytest.fixture(scope="function") def full_record_metadata(users): From 950831c56085775a66bb3e93cb3104e48ed1901e Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Thu, 6 Feb 2025 09:37:48 -0500 Subject: [PATCH 05/22] feature(neh; import): Work in progress on import API endpoint; basic endpoint responding to test --- site/kcworks/dependencies/invenio-record-importer-kcworks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index 8efe0d131..9ff2b8dda 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit 8efe0d131ca0d8737853c934c63c20dfc3a6715d +Subproject commit 9ff2b8dda38582726a13807e4a5fcd5efb68c462 From 5467cc6989c3d3bdda1a854d09d3e7d581a375d6 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Thu, 6 Feb 2025 11:47:22 -0500 Subject: [PATCH 06/22] fix(docs): Updates to streamlined import api docs (cherry picked from commit ba2c546026862631337da122564dfcaca856e074) --- docs/source/api.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/source/api.md b/docs/source/api.md index 310f263e9..4943703ea 100644 --- a/docs/source/api.md +++ b/docs/source/api.md @@ -114,7 +114,7 @@ The exception to this rule is for collection owners, who may override the collec #### Request ``` -POST https://works.hcommons.org/api/import/ HTTP/1.1 +POST https://works.hcommons.org/api/import/ HTTP/1.1 ``` #### Required headers @@ -124,6 +124,15 @@ Accept: application/json Authorization: Bearer \ ``` +#### Request url path parameters + +Only one URL path parameter is required: + +| Name | Required | Type | Description | +|------|----------|------|-------------| +| `collection` | no | `string` | The ID (either the url slug or the UUID) of the collection to which the work should be published. If this value is provided, the work will be submitted to the collection immediately after import. If the collection requires review, and the `review_required` parameter is set to "true", the work will be placed in the collection's review queue. | + + #### Request body This request must be made with a multipart/form-data request. The request body must include parts with following names: @@ -132,7 +141,6 @@ This request must be made with a multipart/form-data request. The request body m |-------|----------|--------------|-------------| | `files` | yes | `application/octet-stream` | The (binary) file content to be uploaded. If multiple files are being uploaded, a body part with this same name ("files") must be provided for each file. If more than three or four files are being uploaded, it is recommended to provide a single zip archive containing all of the files. The files will be assigned to the appropriate work based on filename, so where multiple files are provided these **must be unique**. If a zip archive is provided, the files must be contained in a single compressed folder with no subfolders. | | `metadata` | yes | `application/json` | An array of JSON metadata objects, each of which will be used to create a new work. Each must following the KCWorks implementation of the InvenioRDM metadata schema described {ref}`here `. In addition, an array of owners for the work may optionally be provided by adding an `access.owned_by` property to each metadata object. Note that if no owners are provided, the work will be created with the organizational account that issued the OAuth token as the owner. | -| `collection` | no | `text/plain` | The ID (either the url slug or the UUID) of the collection to which the work should be published. If this value is provided, the work will be submitted to the collection immediately after import. If the collection requires review, and the `review_required` parameter is set to "true", the work will be placed in the collection's review queue. | | `review_required` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the work should be reviewed before publication. This setting is only relevant if the work is intended for publication in a collection that requires review. It will override the collection's usual review policy, since the work is being uploaded by a collection administrator. (Default: "true") | | `strict_validation` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the import request should be rejected if any validation errors are encountered. If this value is "false", the imported work will be created in KCWorks even if some of the provided metadata does not conform to the KCWorks metadata schema, provided these are not required fields. If this value is "true", the import request will be rejected if any validation errors are encountered. (Default: "true") | | `all_or_none` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the entire import request should be rejected if any of the works fail to be created (whether for validation errors, upload errors, or other reasons). If this value is "false", the import request will be accepted even if some of the works cannot be created. The response in this case will include a list of works that were successfully created and a list of errors for the works that failed to be created. (Default: "true") | From 5ea46479fe75a2cf34b5b7a4c1a9abce9de349bf Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Fri, 7 Feb 2025 19:05:19 -0500 Subject: [PATCH 07/22] feature(neh; import): Work in progress on import API endpoint; basic endpoint responding to test --- .../invenio-record-importer-kcworks | 2 +- site/tests/api/test_api_import.py | 464 +++------- site/tests/api/test_api_notifications.py | 53 +- site/tests/api/test_api_record_ops.py | 212 ++--- site/tests/api/test_collections.py | 12 +- site/tests/api/test_search_provisioning.py | 36 +- site/tests/api/test_stats.py | 23 +- site/tests/conftest.py | 2 - site/tests/fixtures/files.py | 37 +- site/tests/fixtures/records.py | 859 ++++++++++++------ site/tests/helpers/sample_records/__init__.py | 28 +- ...le28491.py => sample_metadata_book_pdf.py} | 27 +- ...625.py => sample_metadata_chapter2_pdf.py} | 5 +- ...647.py => sample_metadata_chapter3_pdf.py} | 6 +- ...031.py => sample_metadata_chapter4_pdf.py} | 15 +- ...177.py => sample_metadata_chapter5_pdf.py} | 14 +- ...1451.py => sample_metadata_chapter_pdf.py} | 236 ++--- ...le_metadata_conference_proceedings_pdf.py} | 13 +- ...mple_metadata_interview_transcript_pdf.py} | 2 +- ...> sample_metadata_journal_article2_pdf.py} | 20 +- ...=> sample_metadata_journal_article_pdf.py} | 30 +- ...38367.py => sample_metadata_thesis_pdf.py} | 30 +- ....py => sample_metadata_white_paper_pdf.py} | 18 +- 23 files changed, 972 insertions(+), 1172 deletions(-) rename site/tests/helpers/sample_records/{sample28491.py => sample_metadata_book_pdf.py} (97%) rename site/tests/helpers/sample_records/{sample22625.py => sample_metadata_chapter2_pdf.py} (99%) rename site/tests/helpers/sample_records/{sample22647.py => sample_metadata_chapter3_pdf.py} (99%) rename site/tests/helpers/sample_records/{sample34031.py => sample_metadata_chapter4_pdf.py} (98%) rename site/tests/helpers/sample_records/{sample45177.py => sample_metadata_chapter5_pdf.py} (98%) rename site/tests/helpers/sample_records/{sample11451.py => sample_metadata_chapter_pdf.py} (82%) rename site/tests/helpers/sample_records/{sample16079.py => sample_metadata_conference_proceedings_pdf.py} (98%) rename site/tests/helpers/sample_records/{sample44881.py => sample_metadata_interview_transcript_pdf.py} (99%) rename site/tests/helpers/sample_records/{sample42615.py => sample_metadata_journal_article2_pdf.py} (98%) rename site/tests/helpers/sample_records/{sample33383.py => sample_metadata_journal_article_pdf.py} (97%) rename site/tests/helpers/sample_records/{sample38367.py => sample_metadata_thesis_pdf.py} (97%) rename site/tests/helpers/sample_records/{sample48799.py => sample_metadata_white_paper_pdf.py} (98%) diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index 9ff2b8dda..d53c19435 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit 9ff2b8dda38582726a13807e4a5fcd5efb68c462 +Subproject commit d53c194355580c17410bc1e9b1b82aa6234ea2fa diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index 7df927dbe..efa7c2904 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -1,5 +1,3 @@ -import arrow -import datetime from flask_login import login_user from invenio_access.permissions import authenticated_user, system_identity from invenio_access.utils import get_identity @@ -7,27 +5,40 @@ from invenio_record_importer_kcworks.proxies import current_record_importer_service from invenio_record_importer_kcworks.record_loader import RecordLoader from invenio_record_importer_kcworks.types import ( - APIResponsePayload, FileData, LoaderResult, ) import json from pathlib import Path -from pprint import pformat + +# from pprint import pformat import re import sys +from ..fixtures.files import file_md5 +from ..fixtures.records import TestRecordMetadata, TestRecordMetadataWithFiles +from ..helpers.sample_records import ( + sample_metadata_chapter_pdf, + # sample_metadata_chapter2_pdf, + # sample_metadata_chapter3_pdf, + # sample_metadata_chapter4_pdf, + # sample_metadata_chapter5_pdf, + # sample_metadata_conference_proceedings_pdf, + # sample_metadata_interview_transcript_pdf, + # sample_metadata_journal_article_pdf, + # sample_metadata_journal_article2_pdf, + # sample_metadata_thesis_pdf, + # sample_metadata_white_paper_pdf, +) -def test_record_loader_load( +def test_import_records_loader_load( running_app, db, + search_clear, minimal_community_factory, user_factory, - minimal_record_metadata, - search_clear, mock_send_remote_api_update_fixture, celery_worker, - build_published_record_links, ): app = running_app.app u = user_factory(email="test@example.com", token=True, saml_id=None) @@ -39,9 +50,15 @@ def test_record_loader_load( community_record = minimal_community_factory(owner=user_id) community = community_record.to_dict() + test_metadata = TestRecordMetadata( + app=app, + community_list=[community], + owner_id=user_id, + ) + result: LoaderResult = RecordLoader( user_id=user_id, community_id=community["id"] - ).load(index=0, import_data=minimal_record_metadata["in"]) + ).load(index=0, import_data=test_metadata.metadata_in) record_created_id = result.record_created["record_data"]["id"] @@ -53,141 +70,10 @@ def test_record_loader_load( assert result.primary_community["slug"] == "my-community" # result.record_created - assert result.record_created["record_data"]["access"] == { - "embargo": {"active": False, "reason": None}, - "files": "public", - "record": "public", - "status": "metadata-only", - } - assert arrow.utcnow() - arrow.get( - result.record_created["record_data"]["created"] - ) < datetime.timedelta(seconds=1) - assert result.record_created["record_data"]["custom_fields"] == {} - assert "expires_at" not in result.record_created["record_data"].keys() - assert result.record_created["record_data"]["files"] == { - "count": 0, - "enabled": False, - "entries": {}, - "order": [], - "total_bytes": 0, - } - assert not result.record_created["record_data"]["is_draft"] - assert result.record_created["record_data"]["is_published"] - assert result.record_created["record_data"][ - "links" - ] == build_published_record_links( - record_created_id, - app.config["SITE_API_URL"], - app.config["SITE_UI_URL"], - result.record_created["record_data"]["parent"]["id"], - ) - assert result.record_created["record_data"]["media_files"] == { - "count": 0, - "enabled": False, - "entries": {}, - "order": [], - "total_bytes": 0, - } - assert result.record_created["record_data"]["metadata"] == { - "creators": [ - { - "person_or_org": { - "family_name": "Brown", - "given_name": "Troy", - "name": "Brown, Troy", - "type": "personal", - } - }, - { - "person_or_org": { - "name": "Troy Inc.", - "type": "organizational", - } - }, - ], - "publication_date": "2020-06-01", - "publisher": "Acme Inc", - "resource_type": { - "id": "image-photograph", - "title": {"en": "Photo"}, - }, - "title": "A Romans story", - } - assert result.record_created["record_data"]["parent"]["access"] == { - "grants": [], - "links": [], - "owned_by": {"user": "1"}, - "settings": { - "accept_conditions_text": None, - "allow_guest_requests": False, - "allow_user_requests": False, - "secret_link_expiration": 0, - }, - } - assert result.record_created["record_data"]["parent"]["communities"] == { - "default": community["id"], - "entries": [ - { - "access": { - "member_policy": "open", - "members_visibility": "public", - "record_policy": "open", - "review_policy": "open", - "visibility": "public", - }, - "children": {"allow": False}, - "created": community["created"], - "custom_fields": {}, - "deletion_status": {"is_deleted": False, "status": "P"}, - "id": community["id"], - "links": {}, - "metadata": { - "curation_policy": "Curation policy", - "description": "A description", - "organizations": [{"name": "Organization 1"}], - "page": "Information for my community", - "title": "My Community", - "type": {"id": "event"}, - "website": "https://my-community.com", - }, - "revision_id": 2, - "slug": "my-community", - "updated": community["updated"], - }, - ], - "ids": [community["id"]], - } - assert result.record_created["record_data"]["parent"]["id"] - assert result.record_created["record_data"]["parent"]["pids"] == { - "doi": { - "client": "datacite", - "identifier": ( - f"10.17613/{result.record_created['record_data']['parent']['id']}" - ), - "provider": "datacite", - }, - } - assert result.record_created["record_data"]["pids"] == { - "doi": { - "client": "datacite", - "identifier": f"10.17613/{record_created_id}", - "provider": "datacite", - }, - "oai": { - "identifier": f"oai:https://localhost:{record_created_id}", - "provider": "oai", - }, - } + community.update({"links": {}}) # FIXME: Why are links not expanded? + assert test_metadata.compare_published(result.record_created["record_data"]) assert result.record_created["record_data"]["revision_id"] == 3 - assert result.record_created["record_data"]["status"] == "published" - assert arrow.utcnow() - arrow.get( - result.record_created["record_data"]["updated"] - ) < datetime.timedelta(seconds=1) - assert result.record_created["record_data"]["versions"] == { - "index": 1, - "is_latest": True, - "is_latest_draft": True, # FIXME: Should this be False? - } + assert re.match( r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", str(result.record_created["record_uuid"]), @@ -222,18 +108,14 @@ def test_record_loader_load( assert result.added_to_collections == [] -def test_record_loader_load_with_files( +def test_import_records_loader_load_with_files( running_app, db, + search_clear, minimal_community_factory, user_factory, - minimal_record_metadata, - search_clear, mock_send_remote_api_update_fixture, celery_worker, - build_published_record_links, - build_file_links, - file_md5, ): app = running_app.app u = user_factory(email="test@example.com", token=True, saml_id=None) @@ -285,13 +167,21 @@ def test_record_loader_load_with_files( "size": 1174188, }, ] - minimal_record_metadata["in"]["files"] = {"enabled": True, "entries": file_list} + file_entries = {f["key"]: f for f in file_list} + + test_metadata = TestRecordMetadataWithFiles( + app=app, + metadata_in=sample_metadata_chapter_pdf["input"], + community_list=[community], + owner_id=user_id, + file_entries=file_entries, + ) result: LoaderResult = RecordLoader( user_id=user_id, community_id=community["id"] ).load( index=0, - import_data=minimal_record_metadata["in"], + import_data=test_metadata.metadata_in, files=files, ) file1.close() @@ -299,170 +189,54 @@ def test_record_loader_load_with_files( record_created_id = result.record_created["record_data"]["id"] + # add ids and checksums from actual file entries to the expected file entries + for k, f in file_entries.items(): + f["id"] = result.record_created["record_data"]["files"]["entries"][k]["id"] + f["checksum"] = result.record_created["record_data"]["files"]["entries"][k][ + "checksum" + ] + test_metadata.file_entries = file_entries + test_metadata.record_id = record_created_id + metadata_expected = test_metadata.published + + # check result.status assert result.status == "new_record" - # result.primary_community + # check result.primary_community assert result.primary_community["id"] == community["id"] assert result.primary_community["metadata"]["title"] == "My Community" assert result.primary_community["slug"] == "my-community" - # result.record_created - minimal_metadata = minimal_record_metadata["published"] - assert result.record_created["record_data"]["access"] == minimal_metadata["access"] - assert arrow.utcnow() - arrow.get( - result.record_created["record_data"]["created"] - ) < datetime.timedelta(seconds=1) - assert result.record_created["record_data"]["custom_fields"] == {} - assert "expires_at" not in result.record_created["record_data"].keys() - assert result.record_created["record_data"]["files"]["count"] == 2 - assert result.record_created["record_data"]["files"]["enabled"] - assert result.record_created["record_data"]["files"]["entries"] == { - "sample.jpg": { - "access": {"hidden": False}, - "checksum": result.record_created["record_data"]["files"]["entries"][ - "sample.jpg" - ][ - "checksum" - ], # TODO: Fix this - "ext": "jpg", - "id": result.record_created["record_data"]["files"]["entries"][ - "sample.jpg" - ][ - "id" - ], # TODO: Fix this - "key": "sample.jpg", - "links": build_file_links( - record_created_id, app.config["SITE_API_URL"], "sample.jpg" - ), - "metadata": {}, - "mimetype": "image/jpeg", - "size": 1174188, - "storage_class": "L", - }, - "sample.pdf": { - "access": {"hidden": False}, - "checksum": result.record_created["record_data"]["files"]["entries"][ - "sample.pdf" - ][ - "checksum" - ], # TODO: Fix this - "ext": "pdf", - "id": result.record_created["record_data"]["files"]["entries"][ - "sample.pdf" - ][ - "id" - ], # TODO: Fix this - "key": "sample.pdf", - "links": build_file_links( - record_created_id, app.config["SITE_API_URL"], "sample.pdf" - ), - "metadata": {}, - "mimetype": "application/pdf", - "size": 13264, - "storage_class": "L", - }, - } - assert ( - result.record_created["record_data"]["files"]["order"] == [] - ) # FIXME: Why no order list? - assert ( - result.record_created["record_data"]["files"]["total_bytes"] == 1174188 + 13264 - ) - - assert not result.record_created["record_data"]["is_draft"] - assert result.record_created["record_data"]["is_published"] - assert result.record_created["record_data"][ - "links" - ] == build_published_record_links( - record_created_id, - app.config["SITE_API_URL"], - app.config["SITE_UI_URL"], - result.record_created["record_data"]["parent"]["id"], - ) - assert ( - result.record_created["record_data"]["media_files"] - == minimal_metadata["media_files"] - ) - assert ( - result.record_created["record_data"]["metadata"] == minimal_metadata["metadata"] - ) + # check result.record_created + assert test_metadata.compare_published(result.record_created["record_data"]) - # result.uploaded_files + # check result.uploaded_files assert result.uploaded_files == { "sample.jpg": ["uploaded", []], "sample.pdf": ["uploaded", []], } - # result.community_review_result + # check result.community_review_result assert result.community_review_result["is_closed"] assert not result.community_review_result["is_expired"] assert not result.community_review_result["is_open"] assert result.community_review_result["receiver"]["community"] == community["id"] - # result.assigned_owners + # check result.assigned_owners assert result.assigned_owners == { "owner_id": user_id, "owner_type": "user", "access_grants": [], } - # result.added_to_collections + # check result.added_to_collections assert result.added_to_collections == [] # now check the record in the database/search rdm_record = records_service.read(system_identity, id_=record_created_id).to_dict() - assert rdm_record["files"]["entries"] == { - "sample.jpg": { - "access": {"hidden": False}, - "checksum": result.record_created["record_data"]["files"]["entries"][ - "sample.jpg" - ][ - "checksum" - ], # TODO: Fix this - "ext": "jpg", - "key": "sample.jpg", - "id": result.record_created["record_data"]["files"]["entries"][ - "sample.jpg" - ][ - "id" - ], # TODO: Fix this - "links": build_file_links( - record_created_id, app.config["SITE_API_URL"], "sample.jpg" - ), - "metadata": {}, - "mimetype": "image/jpeg", - "size": 1174188, - "storage_class": "L", - }, - "sample.pdf": { - "access": {"hidden": False}, - "checksum": result.record_created["record_data"]["files"]["entries"][ - "sample.pdf" - ][ - "checksum" - ], # TODO: Fix this - "ext": "pdf", - "key": "sample.pdf", - "id": result.record_created["record_data"]["files"]["entries"][ - "sample.pdf" - ][ - "id" - ], # TODO: Fix this - "links": build_file_links( - record_created_id, app.config["SITE_API_URL"], "sample.pdf" - ), - "metadata": {}, - "mimetype": "application/pdf", - "size": 13264, - "storage_class": "L", - }, - } - assert rdm_record["files"]["order"] == [] - assert rdm_record["files"]["total_bytes"] == 1174188 + 13264 - assert rdm_record["files"]["enabled"] - assert rdm_record["files"]["count"] == 2 + assert rdm_record["files"] == metadata_expected["files"] - # Ensure the files can be downloaded + # ensure the files can be downloaded with app.test_client() as client: with open(file_paths[1], "rb") as file2: file_bytes = file2.read() @@ -512,10 +286,10 @@ def test_import_records_service_load( db, minimal_community_factory, user_factory, - minimal_record_metadata, + minimal_record_metadata_with_files, + compare_metadata_published, search_clear, mock_send_remote_api_update_fixture, - build_published_record_links, ): app = running_app.app u = user_factory(email="test@example.com", token=True, saml_id=None) @@ -531,10 +305,6 @@ def test_import_records_service_load( community_record = minimal_community_factory(owner=u.user.id) community = community_record.to_dict() - minimal_record_metadata["in"]["metadata"].get("identifiers", []).append( - {"identifier": "1234567890", "scheme": "import_id"} - ) - file_paths = [ Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.pdf", Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.jpg", @@ -575,12 +345,17 @@ def test_import_records_service_load( "size": 1174188, }, ] - minimal_record_metadata["in"]["files"] = {"enabled": True, "entries": file_list} + file_entries = {f["key"]: f for f in file_list} + + metadata_in = minimal_record_metadata_with_files(entries=file_entries)["in"] + metadata_in["metadata"].get("identifiers", []).append( + {"identifier": "1234567890", "scheme": "import_id"} + ) service = current_record_importer_service import_results = service.import_records( file_data=files, - metadata=[minimal_record_metadata["in"]], + metadata=[metadata_in], user_id=u.user.id, community_id=community["id"], ) @@ -607,45 +382,20 @@ def test_import_records_service_load( assert record_result1.get("errors") == [] assert record_result1.get("collection_id") == community["id"] result_metadata1 = record_result1.get("metadata") - minimal_record_metadata["in"]["access"].update( - { - "embargo": {"active": False, "reason": None}, - "status": "open", - } - ) - assert result_metadata1["access"] == minimal_record_metadata["in"]["access"] - assert result_metadata1["custom_fields"] == {} - assert result_metadata1["deletion_status"] == {"is_deleted": False, "status": "P"} - assert result_metadata1["id"] == record_id1 - assert not result_metadata1["is_draft"] - assert result_metadata1["is_published"] - assert result_metadata1["links"] == build_published_record_links( - record_id1, - app.config["SITE_API_URL"], - app.config["SITE_UI_URL"], - result_metadata1["parent"]["id"], - ) - assert result_metadata1["media_files"] == { - "count": 0, - "enabled": False, - "entries": {}, - "order": [], - "total_bytes": 0, - } - assert result_metadata1["metadata"] == minimal_record_metadata["in"]["metadata"] - assert result_metadata1["parent"]["access"]["owned_by"]["user"] == str( - u.user.id - ) # FIXME: Why is this a string? - assert len(result_metadata1["parent"]["communities"]["entries"]) == 1 - assert ( - result_metadata1["parent"]["communities"]["entries"][0]["id"] == community["id"] + + # add ids and checksums from actual file entries to the expected file entries + for k, f in file_entries.items(): + f["id"] = result_metadata1["files"]["entries"][k]["id"] + f["checksum"] = result_metadata1["files"]["entries"][k]["checksum"] + expected_metadata = minimal_record_metadata_with_files( + record_id=record_id1, entries=file_entries + )["published"] + assert compare_metadata_published( + result_metadata1, + expected_metadata, + community_list=[community], + owner_id=u.user.id, ) - assert result_metadata1["status"] == "published" - assert result_metadata1["versions"] == { - "index": 1, - "is_latest": True, - "is_latest_draft": True, - } def test_import_records_api_metadata_only( @@ -713,11 +463,12 @@ def test_import_records_api_metadata_only( "type": {"id": "event"}, }, } - ) # FIXME: Why are links not expanded but title is? + ) # FIXME: Why are links and title not expanded? assert compare_metadata_published( record_result.get("metadata"), minimal_record_metadata["published"], community_list=[community], + owner_id=u.user.id, ) # Check the record in the database @@ -752,27 +503,26 @@ def test_import_records_api_with_files( Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.jpg", ] file_list = [{"key": "sample.pdf"}, {"key": "sample.jpg"}] - expected_metadata = minimal_record_metadata_with_files( - { - "sample.pdf": { - "key": "sample.pdf", - "size": 13264, - "mimetype": "application/pdf", - }, - "sample.jpg": { - "key": "sample.jpg", - "size": 1174188, - "mimetype": "image/jpeg", - }, + file_entries = { + "sample.pdf": { + "key": "sample.pdf", + "size": 13264, + "mimetype": "application/pdf", }, - ) + "sample.jpg": { + "key": "sample.jpg", + "size": 1174188, + "mimetype": "image/jpeg", + }, + } + metadata_in = minimal_record_metadata_with_files(entries=file_entries)["in"] with app.test_client() as client: response = client.post( f"{app.config['SITE_API_URL']}/import/{community['slug']}", content_type="multipart/form-data", data={ - "metadata": json.dumps([expected_metadata["in"]]), + "metadata": json.dumps([metadata_in]), "review_required": "true", "strict_validation": "true", "all_or_none": "true", @@ -790,11 +540,21 @@ def test_import_records_api_with_files( assert response.json["errors"] == [] assert len(response.json["data"]) == 1 for index, record_result in enumerate(response.json["data"]): + + for k, f in file_entries.items(): + f["id"] = record_result.get("metadata")["files"]["entries"][k]["id"] + f["checksum"] = record_result.get("metadata")["files"]["entries"][k][ + "checksum" + ] + expected_metadata = minimal_record_metadata_with_files( + record_id=record_result.get("record_id"), entries=file_entries + )["published"] + assert record_result.get("item_index") == index assert record_result.get("record_id") is not None assert ( record_result.get("record_url") - == f"{app.config['SITE_UI_URL']}/records/{record_result.get('record_id')}" + == f"{app.config['SITE_UI_URL']}/records/{record_result.get('record_id')}" # noqa: E501 ) assert record_result.get("collection_id") in [ community["id"], @@ -813,10 +573,10 @@ def test_import_records_api_with_files( "type": {"id": "event"}, }, } - ) # FIXME: Why are links not expanded but title is? + ) # FIXME: Why are links and title not expanded? assert compare_metadata_published( record_result.get("metadata"), - expected_metadata["published"], + expected_metadata, community_list=[community], owner_id=u.user.id, ) @@ -825,7 +585,7 @@ def test_import_records_api_with_files( record_id1 = record_result.get("record_id") rdm_record = records_service.read(system_identity, id_=record_id1).to_dict() assert len(rdm_record["files"]["entries"].keys()) == 2 - assert rdm_record["files"]["order"] == ["sample.jpg", "sample.pdf"] + assert rdm_record["files"]["order"] == [] # FIXME: Why no order list? assert rdm_record["files"]["total_bytes"] == 1187452 assert rdm_record["files"]["enabled"] diff --git a/site/tests/api/test_api_notifications.py b/site/tests/api/test_api_notifications.py index 0c328ee3b..6fa747e53 100644 --- a/site/tests/api/test_api_notifications.py +++ b/site/tests/api/test_api_notifications.py @@ -25,6 +25,7 @@ from kcworks.proxies import current_internal_notifications from pprint import pformat import time +from ..fixtures.records import TestRecordMetadata def test_notify_for_request_acceptance( @@ -32,7 +33,6 @@ def test_notify_for_request_acceptance( db, user_factory, minimal_community_factory, - minimal_record_metadata, client, client_with_login, headers, @@ -77,12 +77,14 @@ def test_notify_for_request_acceptance( # assert user.user_profile.get("full_name") == "Test User" assert user.user_profile.get("unread_notifications", "null") == "null" + metadata = TestRecordMetadata(app=app) + with app.test_client() as client: # logged_in_client, _ = client_with_login(client, user) logged_in_client = client response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata["in"]["in"]), + data=json.dumps(metadata.metadata_in), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -244,7 +246,6 @@ def test_notify_for_request_decline( db, user_factory, minimal_community_factory, - minimal_record_metadata, client, client_with_login, headers, @@ -289,12 +290,14 @@ def test_notify_for_request_decline( # assert user.user_profile.get("full_name") == "Test User" assert user.user_profile.get("unread_notifications", "null") == "null" + metadata = TestRecordMetadata(app=app) + with app.test_client() as client: # logged_in_client, _ = client_with_login(client, user) logged_in_client = client response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata["in"]), + data=json.dumps(metadata.metadata_in), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -455,7 +458,6 @@ def test_notify_for_request_cancellation( db, user_factory, minimal_community_factory, - minimal_record_metadata, client, client_with_login, headers, @@ -489,12 +491,14 @@ def test_notify_for_request_cancellation( # assert user.user_profile.get("full_name") == "Test User" assert user.user_profile.get("unread_notifications", "null") == "null" + metadata = TestRecordMetadata(app=app) + with app.test_client() as client: # logged_in_client, _ = client_with_login(client, user) logged_in_client = client response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata["in"]), + data=json.dumps(metadata.metadata_in), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -634,7 +638,6 @@ def test_notify_for_new_request_comment( db, user_factory, minimal_community_factory, - minimal_record_metadata, client, client_with_login, headers, @@ -667,10 +670,12 @@ def test_notify_for_new_request_comment( token = u.allowed_token assert user.user_profile.get("unread_notifications", "null") == "null" + metadata = TestRecordMetadata(app=app) + with app.test_client() as client: response = client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata["in"]), + data=json.dumps(metadata.metadata_in), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -834,7 +839,6 @@ def test_read_unread_notifications_by_service( db, user_factory, minimal_community_factory, - minimal_record_metadata, client, client_with_login, headers, @@ -912,7 +916,6 @@ def test_clear_unread_notifications_by_service( db, user_factory, minimal_community_factory, - minimal_record_metadata, client, client_with_login, headers, @@ -1127,7 +1130,6 @@ def test_clear_unread_notifications_by_view( db, user_factory, minimal_community_factory, - minimal_record_metadata, client, client_with_login, headers, @@ -1235,7 +1237,6 @@ def test_clear_one_unread_notification_by_view( db, user_factory, minimal_community_factory, - minimal_record_metadata, client, client_with_login, headers, @@ -1398,7 +1399,6 @@ def test_unread_endpoint_bad_methods( def test_notification_on_first_upload( running_app, user_factory, - minimal_record_metadata, db, search_clear, client, @@ -1456,10 +1456,12 @@ def test_notification_on_first_upload( login_user(user) login_user_via_session(client, email=user.email) + metadata = TestRecordMetadata(app=app) + # Create the first draft draft1_response = client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata["in"]), + data=json.dumps(metadata.metadata_in), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert draft1_response.status_code == 201 @@ -1484,15 +1486,8 @@ def test_notification_on_first_upload( f"'{app.config.get('SITE_UI_URL')}/records/{first_draft_id}'>" f"View draft)" in email.html ) - assert ( - f"Draft title: {minimal_record_metadata['in']['metadata']['title']}" - in email.body - ) - assert ( - f"Draft title: {minimal_record_metadata['in']['metadata']['title']}" - in email.html - ) - # assert f"Full metadata: {minimal_record_metadata["in"]}" in email.body + assert f"Draft title: {metadata.draft['metadata']['title']}" in email.body + assert f"Draft title: {metadata.draft['metadata']['title']}" in email.html assert f"User ID: {user_id}" in email.body assert f"User ID: {user_id}" in email.html assert f"User email: {user_email}" in email.body @@ -1505,7 +1500,7 @@ def test_notification_on_first_upload( # Create a second draft work (different work) draft2_response = client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata["in"]), + data=json.dumps(metadata.metadata_in), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert draft2_response.status_code == 201 @@ -1533,14 +1528,8 @@ def test_notification_on_first_upload( app.logger.debug(f"email.body: {pformat(email.body)}") assert f"Work ID: {first_draft_id}" in email.body assert f"Work ID: {first_draft_id}" in email.html - assert ( - f"Work title: {minimal_record_metadata['in']['metadata']['title']}" - in email.body - ) - assert ( - f"Work title: {minimal_record_metadata['in']['metadata']['title']}" - in email.html - ) + assert f"Work title: {metadata.draft['metadata']['title']}" in email.body + assert f"Work title: {metadata.draft['metadata']['title']}" in email.html assert f"User ID: {user_id}" in email.body assert f"User ID: {user_id}" in email.html assert f"User email: {user_email}" in email.body diff --git a/site/tests/api/test_api_record_ops.py b/site/tests/api/test_api_record_ops.py index d9f792f02..3179c28c5 100644 --- a/site/tests/api/test_api_record_ops.py +++ b/site/tests/api/test_api_record_ops.py @@ -1,25 +1,26 @@ import pytest import arrow from datetime import timedelta -import hashlib + +# import hashlib from invenio_access.permissions import authenticated_user, system_identity from invenio_access.utils import get_identity -from invenio_files_rest.helpers import compute_checksum + +# from invenio_files_rest.helpers import compute_checksum from invenio_rdm_records.proxies import current_rdm_records_service as records_service import json from pathlib import Path from pprint import pformat import re from ..fixtures.users import user_data_set +from ..fixtures.records import TestRecordMetadata, TestRecordMetadataWithFiles def test_draft_creation_api( running_app, db, - build_draft_record_links, user_factory, client_with_login, - minimal_record_metadata, headers, search_clear, celery_worker, @@ -34,12 +35,13 @@ def test_draft_creation_api( user = u.user token = u.allowed_token - minimal_record_metadata["in"].update({"files": {"enabled": False}}) + metadata = TestRecordMetadata(app=app) + with app.test_client() as client: logged_in_client = client_with_login(client, user) response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata["in"]), + data=json.dumps(metadata.metadata_in), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -64,7 +66,7 @@ def test_draft_creation_api( == actual_draft["updated"] ) - assert actual_draft["links"] == build_draft_record_links( + assert actual_draft["links"] == TestRecordMetadata.build_draft_record_links( actual_draft_id, app.config["SITE_API_URL"], app.config["SITE_UI_URL"] ) @@ -141,7 +143,7 @@ def test_draft_creation_api( "entries": {}, } assert actual_draft["status"] == "draft" - publication_date = arrow.get(actual_draft["metadata"]["publication_date"]) + # publication_date = arrow.get(actual_draft["metadata"]["publication_date"]) # TODO: UI field only present in object sent to jinja template # we need to test that the jinja template is working correctly @@ -200,7 +202,6 @@ def test_draft_creation_service( running_app, db, client_with_login, - minimal_record_metadata, headers, user_factory, search_clear, @@ -208,7 +209,8 @@ def test_draft_creation_service( minimal_draft_record_factory, ): app = running_app.app - result = minimal_draft_record_factory(metadata=minimal_record_metadata["in"]) + metadata = TestRecordMetadata(app=app) + result = minimal_draft_record_factory(metadata=metadata.metadata_in) actual_draft = result.to_dict() app.logger.debug(f"actual_draft: {pformat(actual_draft)}") assert actual_draft["is_draft"] @@ -217,28 +219,23 @@ def test_draft_creation_service( assert actual_draft["versions"]["is_latest_draft"] is True assert actual_draft["versions"]["index"] == 1 assert actual_draft["status"] == "draft" - assert actual_draft["files"]["enabled"] == False + assert actual_draft["files"]["enabled"] is False assert actual_draft["files"]["entries"] == {} assert ( - actual_draft["metadata"]["creators"] - == minimal_record_metadata["in"]["metadata"]["creators"] + actual_draft["metadata"]["creators"] == metadata.draft["metadata"]["creators"] ) assert ( - actual_draft["metadata"]["publisher"] - == minimal_record_metadata["in"]["metadata"]["publisher"] + actual_draft["metadata"]["publisher"] == metadata.draft["metadata"]["publisher"] ) assert ( actual_draft["metadata"]["publication_date"] - == minimal_record_metadata["in"]["metadata"]["publication_date"] + == metadata.draft["metadata"]["publication_date"] ) assert ( actual_draft["metadata"]["resource_type"]["id"] - == minimal_record_metadata["in"]["metadata"]["resource_type"]["id"] - ) - assert ( - actual_draft["metadata"]["title"] - == minimal_record_metadata["in"]["metadata"]["title"] + == metadata.draft["metadata"]["resource_type"]["id"] ) + assert actual_draft["metadata"]["title"] == metadata.draft["metadata"]["title"] read_result = records_service.read_draft(system_identity, actual_draft["id"]) actual_read = read_result.to_dict() @@ -251,7 +248,6 @@ def test_record_publication_api( running_app, db, client_with_login, - minimal_record_metadata, headers, user_factory, search_clear, @@ -259,6 +255,7 @@ def test_record_publication_api( mock_send_remote_api_update_fixture, ): app = running_app.app + metadata = TestRecordMetadata(app=app) u = user_factory( email=user_data_set["user1"]["email"], password="test", @@ -272,10 +269,9 @@ def test_record_publication_api( with app.test_client() as client: logged_in_client = client_with_login(client, user) - minimal_record_metadata["in"].update({"files": {"enabled": False}}) response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata["in"]), + data=json.dumps(metadata.metadata_in), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert response.status_code == 201 @@ -304,7 +300,6 @@ def test_record_publication_service( running_app, db, client_with_login, - minimal_record_metadata, headers, user_factory, search_clear, @@ -313,9 +308,9 @@ def test_record_publication_service( minimal_draft_record_factory, ): """Test that a system user can create a draft record internally.""" - - minimal_record_metadata["in"].update({"files": {"enabled": False}}) - result = minimal_draft_record_factory(metadata=minimal_record_metadata["in"]) + app = running_app.app + metadata = TestRecordMetadata(app=app) + result = minimal_draft_record_factory(metadata=metadata.metadata_in) actual_draft = result.to_dict() actual_draft_id = actual_draft["id"] @@ -345,13 +340,13 @@ def test_record_draft_update_api( running_app, db, client_with_login, - minimal_record_metadata, headers, user_factory, search_clear, mock_send_remote_api_update_fixture, ): app = running_app.app + metadata = TestRecordMetadata(app=app) u = user_factory( email=user_data_set["user1"]["email"], @@ -360,12 +355,11 @@ def test_record_draft_update_api( user = u.user token = u.allowed_token - minimal_record_metadata["in"].update({"files": {"enabled": False}}) with app.test_client() as client: logged_in_client = client_with_login(client, user) creation_response = logged_in_client.post( f"{app.config['SITE_API_URL']}/records", - data=json.dumps(minimal_record_metadata["in"]), + data=json.dumps(metadata.metadata_in), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert creation_response.status_code == 201 @@ -373,10 +367,11 @@ def test_record_draft_update_api( actual_draft = creation_response.json actual_draft_id = actual_draft["id"] - minimal_record_metadata["in"]["metadata"]["title"] = "A Romans Story 2" + metadata.update_metadata({"metadata|title": "A Romans Story 2"}) + app.logger.debug(f"metadata.metadata_in: {pformat(metadata.metadata_in)}") update_response = logged_in_client.put( f"{app.config['SITE_API_URL']}/records/{actual_draft_id}/draft", - data=json.dumps(minimal_record_metadata["in"]), + data=json.dumps(metadata.metadata_in), headers={**headers, "Authorization": f"Bearer {token}"}, ) assert update_response.status_code == 200 @@ -410,7 +405,6 @@ def test_record_draft_update_service( running_app, db, client_with_login, - minimal_record_metadata, minimal_draft_record_factory, headers, user_factory, @@ -418,11 +412,12 @@ def test_record_draft_update_service( celery_worker, mock_send_remote_api_update_fixture, ): - minimal_record_metadata["in"].update({"files": {"enabled": False}}) - draft_result = minimal_draft_record_factory(metadata=minimal_record_metadata["in"]) - minimal_record_metadata["in"]["metadata"]["title"] = "A Romans Story 2" + app = running_app.app + metadata = TestRecordMetadata(app=app) + draft_result = minimal_draft_record_factory(metadata=metadata.metadata_in) + metadata.update_metadata({"metadata|title": "A Romans Story 2"}) edited_draft_result = records_service.update_draft( - system_identity, draft_result.id, minimal_record_metadata["in"] + system_identity, draft_result.id, metadata.metadata_in ) actual_edited = edited_draft_result.to_dict() assert actual_edited["id"] == draft_result.id @@ -441,7 +436,6 @@ def test_record_published_update( running_app, db, client_with_login, - minimal_record_metadata, headers, user_factory, search_clear, @@ -455,7 +449,6 @@ def test_record_versioning( running_app, db, client_with_login, - minimal_record_metadata, headers, user_factory, search_clear, @@ -468,7 +461,6 @@ def test_record_file_upload_api_not_enabled( running_app, db, client_with_login, - minimal_record_metadata, headers, user_factory, search_clear, @@ -490,10 +482,12 @@ def test_record_file_upload_api_not_enabled( file_list = [{"key": "sample.pdf"}] + metadata = TestRecordMetadata(app=app) + with app.test_client() as client: - minimal_record_metadata["in"]["files"] = {"enabled": False} + metadata.update_metadata({"files|enabled": False}) draft_result = minimal_draft_record_factory( - identity=identity, metadata=minimal_record_metadata["in"] + identity=identity, metadata=metadata.metadata_in ) draft_id = draft_result.id @@ -512,7 +506,6 @@ def test_record_file_upload_api( running_app, db, client_with_login, - minimal_record_metadata, headers, user_factory, search_clear, @@ -545,10 +538,14 @@ def test_record_file_upload_api( ) file_list = [{"key": "sample.pdf"}] + metadata = TestRecordMetadataWithFiles( + app=app, + file_entries={f["key"]: f for f in file_list}, + ) + with app.test_client() as client: - minimal_record_metadata["in"]["files"] = {"enabled": True} draft_result = minimal_draft_record_factory( - identity=identity, metadata=minimal_record_metadata["in"] + identity=identity, metadata=metadata.metadata_in ) draft_id = draft_result.id @@ -562,7 +559,7 @@ def test_record_file_upload_api( data=json.dumps(file_list), headers={**headers, "Authorization": f"Bearer {token}"}, ) - csrf_cookie = response.headers.get("Set-Cookie") + # csrf_cookie = response.headers.get("Set-Cookie") print("headers") print(headers) print("response headers") @@ -681,7 +678,7 @@ def test_record_file_upload_api( # calculate the md5 checksum binary_file_data.seek(0) - md5_checksum = compute_checksum(binary_file_data, "md5", hashlib.md5()) + # md5_checksum = compute_checksum(binary_file_data, "md5", hashlib.md5()) # finalize the file upload headers.update({"content-type": "application/json"}) @@ -723,7 +720,8 @@ def test_record_file_upload_api( "sample.pdf/content" ), "self": ( - f"{app.config['SITE_API_URL']}/records/{draft_id}/draft/files/sample.pdf" + f"{app.config['SITE_API_URL']}/records/{draft_id}/draft/" + "files/sample.pdf" ), "commit": ( f"{app.config['SITE_API_URL']}/records/{draft_id}/draft/files/" @@ -782,11 +780,9 @@ def test_record_file_upload_api( def test_record_view_api( running_app, db, - minimal_record_metadata, minimal_published_record_factory, search_clear, celery_worker, - build_published_record_links, mock_send_remote_api_update_fixture, ): """ @@ -796,115 +792,25 @@ def test_record_view_api( records API endpoint. """ app = running_app.app - record = minimal_published_record_factory() + metadata = TestRecordMetadata(app=app, owner_id=None) + record = minimal_published_record_factory(metadata=metadata.metadata_in) with app.test_client() as client: record_response = client.get(f"/api/records/{record.id}") record = record_response.json - assert arrow.utcnow() - arrow.get(record["created"]) < timedelta(seconds=2) - assert arrow.utcnow() - arrow.get(record["updated"]) < timedelta(seconds=2) - assert record["access"] == { - "embargo": {"active": False, "reason": None}, - "files": "public", - "record": "public", - "status": "metadata-only", - } - assert record["files"] == { - "count": 0, - "enabled": False, - "entries": {}, - "order": [], - "total_bytes": 0, - } - assert record["deletion_status"] == { - "is_deleted": False, - "status": "P", - } - assert record["custom_fields"] == {} - assert record["media_files"] == { - "count": 0, - "enabled": False, - "entries": {}, - "order": [], - "total_bytes": 0, - } - assert ( - record["metadata"]["creators"] - == minimal_record_metadata["in"]["metadata"]["creators"] - ) - assert ( - record["metadata"]["publication_date"] - == minimal_record_metadata["in"]["metadata"]["publication_date"] - ) - assert ( - record["metadata"]["publisher"] - == minimal_record_metadata["in"]["metadata"]["publisher"] - ) + # Add title to resource type (updated by system after draft creation) - minimal_record_metadata["in"]["metadata"]["resource_type"]["title"] = { - "en": "Photo" - } - assert ( - record["metadata"]["resource_type"] - == minimal_record_metadata["in"]["metadata"]["resource_type"] - ) - assert not record["is_draft"] - assert record["is_published"] - assert record["links"] == build_published_record_links( - record["id"], - app.config["SITE_API_URL"], - app.config["SITE_UI_URL"], - record["parent"]["id"], + metadata.update_metadata( + { + "metadata|resource_type": { + "id": "image-photograph", + "title": {"en": "Photo"}, + }, + } ) - assert record["parent"]["access"] == { - "owned_by": None, - "settings": { - "accept_conditions_text": None, - "allow_guest_requests": False, - "allow_user_requests": False, - "secret_link_expiration": 0, - }, - } - assert record["parent"]["communities"] == {} - assert record["parent"]["id"] == record["parent"]["id"] - assert record["parent"]["pids"] == { - "doi": { - "client": "datacite", - "identifier": record["parent"]["pids"]["doi"]["identifier"], - "provider": "datacite", - }, - } - assert record["pids"] == { - "doi": { - "client": "datacite", - "identifier": f"10.17613/{record['id']}", - "provider": "datacite", - }, - "oai": { - "identifier": f"oai:{app.config['SITE_UI_URL']}:{record['id']}", - "provider": "oai", - }, - } + app.logger.debug(f"metadata.metadata_in: {pformat(metadata.metadata_in)}") + metadata.compare_published(actual=record, by_api=True) assert record["revision_id"] == 3 - assert record["stats"] == { - "all_versions": { - "data_volume": 0.0, - "downloads": 0, - "unique_downloads": 0, - "unique_views": 0, - "views": 0, - }, - "this_version": { - "data_volume": 0.0, - "downloads": 0, - "unique_downloads": 0, - "unique_views": 0, - "views": 0, - }, - } - assert record["status"] == "published" - assert record["versions"] == {"index": 1, "is_latest": True} - assert record["custom_fields"] == {} def test_records_api_endpoint_not_found(running_app): diff --git a/site/tests/api/test_collections.py b/site/tests/api/test_collections.py index ed0964e84..de2ad0176 100644 --- a/site/tests/api/test_collections.py +++ b/site/tests/api/test_collections.py @@ -17,6 +17,7 @@ def test_collection_submission_by_owner_open( minimal_community_factory, minimal_draft_record_factory, headers, + search_clear, celery_worker, mock_send_remote_api_update_fixture, ): @@ -164,6 +165,7 @@ def test_collection_submission_by_curator_closed( minimal_community_factory, minimal_draft_record_factory, headers, + search_clear, mock_send_remote_api_update_fixture, celery_worker, ): @@ -252,6 +254,8 @@ def test_collection_submission_by_curator_closed( def test_group_collection_read_all( running_app, + db, + search_clear, headers, user_factory, sample_communities_factory, @@ -281,10 +285,10 @@ def test_group_collection_read_all( assert len(response.json["hits"]["hits"]) == 4 assert response.json["sortBy"] == "updated-desc" assert response.json["links"] == { - "next": f"{app.config['SITE_API_URL']}/group_collections?" + "next": f"{app.config['SITE_API_URL']}/communities?" "page=2&q=%2B_exists_%3Acustom_fields.kcr%5C%3Acommons_instance%20" "&size=4&sort=updated-desc", - "self": f"{app.config['SITE_API_URL']}/group_collections?" + "self": f"{app.config['SITE_API_URL']}/communities?" "page=1&q=%2B_exists_%3Acustom_fields.kcr%5C%3Acommons_instance%20" "&size=4&sort=updated-desc", } @@ -325,5 +329,7 @@ def test_group_collection_read_all( @pytest.mark.skip(reason="Not implemented") -def test_group_collections_read_one(running_app, headers, user_factory): +def test_group_collections_read_one( + running_app, db, search_clear, headers, user_factory +): pass diff --git a/site/tests/api/test_search_provisioning.py b/site/tests/api/test_search_provisioning.py index 6ac8131d4..270c50d46 100644 --- a/site/tests/api/test_search_provisioning.py +++ b/site/tests/api/test_search_provisioning.py @@ -1,10 +1,8 @@ -import pytest +# import pytest import arrow from invenio_access.permissions import system_identity from invenio_communities.proxies import current_communities from invenio_rdm_records.proxies import current_rdm_records -from invenio_remote_api_provisioner.signals import remote_api_provisioning_triggered -from invenio_queues.proxies import current_queues import json from kcworks.api_helpers import ( format_commons_search_payload, @@ -14,6 +12,8 @@ from pprint import pformat import time +from ..fixtures.records import TestRecordMetadata + def test_trigger_search_provisioning( running_app, @@ -21,7 +21,6 @@ def test_trigger_search_provisioning( db, requests_mock, monkeypatch, - minimal_record_metadata, user_factory, create_records_custom_fields, celery_worker, @@ -54,15 +53,15 @@ def test_trigger_search_provisioning( service = current_rdm_records.records_service # Draft creation, no remote API operations should be prompted - draft = service.create(system_identity, minimal_record_metadata["in"]) + metadata = TestRecordMetadata(app=app) + draft = service.create(system_identity, metadata.metadata_in) actual_draft = draft.data assert actual_draft["metadata"]["title"] == "A Romans story" assert mock_adapter.call_count == 0 # Draft edit, no remote API operations should be prompted - minimal_edited = minimal_record_metadata["in"].copy() - minimal_edited["metadata"]["title"] = "A Romans Story 2" - edited_draft = service.update_draft(system_identity, draft.id, minimal_edited) + metadata.update_metadata({"metadata|title": "A Romans Story 2"}) + edited_draft = service.update_draft(system_identity, draft.id, metadata.metadata_in) actual_edited = edited_draft.data.copy() assert actual_edited["metadata"]["title"] == "A Romans Story 2" @@ -134,15 +133,16 @@ def test_trigger_search_provisioning( # edited draft new version # no remote API operation should be prompted - new_edited_data = new_version.data.copy() - new_edited_data["metadata"]["publication_date"] = arrow.now().format("YYYY-MM-DD") - new_edited_data["metadata"]["title"] = "A Romans Story 3" - # simulate the result of previous remote API operation - new_edited_data["custom_fields"]["kcr:commons_search_recid"] = remote_response[ - "_id" - ] + metadata.update_metadata( + { + "metadata|title": "A Romans Story 3", + "metadata|publication_date": arrow.now().format("YYYY-MM-DD"), + # simulate the result of previous remote API operation + "custom_fields|kcr:commons_search_recid": remote_response["_id"], + } + ) new_edited_version = service.update_draft( - system_identity, new_version.id, new_edited_data + system_identity, new_version.id, metadata.metadata_in ) assert new_edited_version.data["metadata"]["title"] == "A Romans Story 3" # assert requests_mock.call_count == 1 @@ -654,7 +654,6 @@ def test_trigger_community_provisioning( def test_search_id_recording_callback( running_app, - minimal_record_metadata, location, search, search_clear, @@ -676,7 +675,8 @@ def test_search_id_recording_callback( # Set up minimal record to update after search provisioning service = current_rdm_records.records_service - draft = service.create(system_identity, minimal_record_metadata["in"]) + metadata = TestRecordMetadata(app=app) + draft = service.create(system_identity, metadata.metadata_in) read_record = service.read_draft(system_identity, draft.id) assert read_record.data["metadata"]["title"] == "A Romans story" assert read_record.data["custom_fields"].get("kcr:commons_search_recid") is None diff --git a/site/tests/api/test_stats.py b/site/tests/api/test_stats.py index 4e90dee17..273fac9ec 100644 --- a/site/tests/api/test_stats.py +++ b/site/tests/api/test_stats.py @@ -5,36 +5,33 @@ from invenio_stats.tasks import process_events, aggregate_events from invenio_rdm_records.proxies import current_rdm_records_service from invenio_rdm_records.records.stats.api import Statistics -from invenio_search.proxies import current_search_client import pytest import uuid +from ..fixtures.records import TestRecordMetadata + @pytest.mark.skip("Not implemented") -def test_stat_creation(running_app, db, search_clear, minimal_record_metadata): - draft = current_rdm_records_service.create( - system_identity, minimal_record_metadata["in"] - ) +def test_stat_creation(running_app, db, search_clear): + app = running_app.app + metadata = TestRecordMetadata(app=app) + draft = current_rdm_records_service.create(system_identity, metadata.metadata_in) published = current_rdm_records_service.publish(system_identity, draft["id"]) - record_id = published["id"] - metadata_record = published["metadata"] - pid = published["pid"] - dt = arrow.now() + metadata.compare_published(published.to_dict()) def test_stats_backend_processing( running_app, db, search_clear, - minimal_record_metadata, user_factory, create_stats_indices, celery_worker, mock_send_remote_api_update_fixture, ): - draft = current_rdm_records_service.create( - system_identity, minimal_record_metadata["in"] - ) + app = running_app.app + metadata = TestRecordMetadata(app=app) + draft = current_rdm_records_service.create(system_identity, metadata.metadata_in) published = current_rdm_records_service.publish(system_identity, draft["id"]) record_id = published.id metadata_record = published.to_dict() diff --git a/site/tests/conftest.py b/site/tests/conftest.py index 15306f3c2..9395868db 100644 --- a/site/tests/conftest.py +++ b/site/tests/conftest.py @@ -1,5 +1,3 @@ -from celery import Celery -from celery.contrib.testing.worker import start_worker from collections import namedtuple import os from pathlib import Path diff --git a/site/tests/fixtures/files.py b/site/tests/fixtures/files.py index daa2a3369..627e45c24 100644 --- a/site/tests/fixtures/files.py +++ b/site/tests/fixtures/files.py @@ -1,28 +1,19 @@ -import pytest import hashlib -@pytest.fixture() -def file_md5(): - def _factory(bytes_object): - return hashlib.md5(bytes_object).hexdigest() +def file_md5(bytes_object): + return hashlib.md5(bytes_object).hexdigest() - return _factory - -@pytest.fixture(scope="function") -def build_file_links(): - def _factory(record_id, base_api_url, filename): - return { - "content": f"{base_api_url}/records/{record_id}/files/{filename}/content", - "iiif_api": ( - f"{base_api_url}/iiif/record:{record_id}:{filename}/full/full/0/" - "default.png" - ), - "iiif_base": f"{base_api_url}/iiif/record:{record_id}:{filename}", - "iiif_canvas": f"{base_api_url}/iiif/record:{record_id}/canvas/{filename}", - "iiif_info": f"{base_api_url}/iiif/record:{record_id}:{filename}/info.json", - "self": f"{base_api_url}/records/{record_id}/files/{filename}", - } - - return _factory +def build_file_links(record_id, base_api_url, filename): + return { + "content": f"{base_api_url}/records/{record_id}/files/{filename}/content", + "iiif_api": ( + f"{base_api_url}/iiif/record:{record_id}:{filename}/full/full/0/" + "default.png" + ), + "iiif_base": f"{base_api_url}/iiif/record:{record_id}:{filename}", + "iiif_canvas": f"{base_api_url}/iiif/record:{record_id}/canvas/{filename}", + "iiif_info": f"{base_api_url}/iiif/record:{record_id}:{filename}/info.json", + "self": f"{base_api_url}/records/{record_id}/files/{filename}", + } diff --git a/site/tests/fixtures/records.py b/site/tests/fixtures/records.py index bbc24a389..5c7cb1d52 100644 --- a/site/tests/fixtures/records.py +++ b/site/tests/fixtures/records.py @@ -1,4 +1,5 @@ from pprint import pformat +from flask import current_app, Flask import pytest import arrow from arrow import Arrow @@ -6,8 +7,9 @@ from flask_principal import Identity from invenio_access.permissions import system_identity from invenio_rdm_records.proxies import current_rdm_records_service as records_service -import re -from typing import Optional +from invenio_record_importer_kcworks.utils.utils import replace_value_in_nested_dict +from typing import Optional, Any +from .files import build_file_links @pytest.fixture(scope="function") @@ -35,21 +37,36 @@ def _factory( return _factory -@pytest.fixture(scope="function") -def compare_metadata_published( - running_app, build_published_record_links, build_file_links -): +def compare_metadata_draft(running_app): app = running_app.app def _comparison_factory( - actual: dict, - expected: dict, - now: Arrow = arrow.utcnow(), - community_list: list[dict] = [], - owner_id: str = "1", + actual, expected, community_list: list[dict] = [], now: Arrow = arrow.utcnow() ): + """ + Compare the actual and expected metadata dictionaries. + + Does not check the following fields: + + id + parent.id + revision_id + + Some fields are only compared to the present time: + + created + updated + + Args: + actual (dict): The actual metadata dictionary. + expected (dict): The expected metadata dictionary. + now (Arrow, optional): The current time. Defaults to arrow.utcnow(). + + Returns: + bool: True if the actual metadata dictionary matches the expected + metadata dictionary, False otherwise. + """ try: - expected["parent"]["access"]["owned_by"] = {"user": int(owner_id)} assert now - arrow.get(actual["created"]) < datetime.timedelta(seconds=1) assert actual["custom_fields"] == {} assert "expires_at" not in actual.keys() @@ -73,9 +90,439 @@ def _comparison_factory( assert actual["files"]["order"] == expected["files"]["order"] assert actual["files"]["total_bytes"] == expected["files"]["total_bytes"] + assert actual["is_draft"] + assert not actual["is_published"] + assert actual["links"] == TestRecordMetadata.build_draft_record_links( + actual["id"], app.config["SITE_API_URL"], app.config["SITE_UI_URL"] + ) + assert actual["media_files"] == { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + } + assert actual["metadata"]["creators"] == expected["metadata"]["creators"] + assert ( + actual["metadata"]["publication_date"] + == expected["metadata"]["publication_date"] + ) + assert actual["metadata"]["publisher"] == expected["metadata"]["publisher"] + assert ( + actual["metadata"]["resource_type"] + == expected["metadata"]["resource_type"] + ) + assert actual["metadata"]["title"] == expected["metadata"]["title"] + assert actual["parent"]["access"] == expected["parent"]["access"] + assert actual["parent"]["communities"]["ids"] == [ + c["id"] for c in community_list + ] + assert actual["pids"] == { + "doi": { + "client": "datacite", + "identifier": f"10.17613/{actual['id']}", + "provider": "datacite", + }, + "oai": { + "identifier": f"oai:{app.config['SITE_UI_URL']}:{actual['id']}", + "provider": "oai", + }, + } + assert actual["revision_id"] == 3 + assert actual["stats"] == expected["stats"] + assert actual["status"] == "draft" + assert now - arrow.get(actual["updated"]) < datetime.timedelta(seconds=1) + assert actual["versions"] == expected["versions"] + return True + except AssertionError as e: + app.logger.error(f"Assertion failed: {e}") + raise e + + return _comparison_factory + + +class TestRecordMetadata: + + default_metadata_in = { + "pids": {}, + "access": { + "record": "public", + "files": "public", + }, + "files": { + "enabled": False, # Most tests don't care about files + }, + "metadata": { + "creators": [ + { + "person_or_org": { + "family_name": "Brown", + "given_name": "Troy", + "name": "Brown, Troy", + "type": "personal", + } + }, + { + "person_or_org": { + "name": "Troy Inc.", + "type": "organizational", + }, + }, + ], + "publication_date": "2020-06-01", + # because DATACITE_ENABLED is True, this field is required + "publisher": "Acme Inc", + "resource_type": {"id": "image-photograph"}, + "title": "A Romans story", + }, + } + + def __init__( + self, + metadata_in: dict = {}, + app: Flask = current_app, + community_list: list[dict] = [], + file_entries: dict = {}, + owner_id: Optional[str] = "1", + ): + """ + Initialize the TestRecordMetadata object. + + Args: + metadata_in (dict): The metadata of the record. + app (Flask, optional): The Flask application. Defaults to current_app. + community_list (list[dict], optional): The list of communities, + each expected to be a dict with the following keys: id, access, + children, custom_fields, deletion_status, links, metadata, + revision_id, slug, updated. Defaults to []. + owner_id (str, optional): The record owner ID. Defaults to "1". + """ + self.app = app + starting_metadata_in = TestRecordMetadata.default_metadata_in.copy() + starting_metadata_in.update(metadata_in) + self._metadata_in = starting_metadata_in + self.community_list = community_list + self.file_entries = file_entries + self.owner_id = owner_id + + def update_metadata(self, metadata_updates: dict[str, Any] = {}) -> None: + """ + Update the basic metadata dictionary for the record. + + Args: + metadata_updates (dict): A dictionary of metadata updates. The keys are + bar separated (NOT dot separated) paths to the values to update. The values + are the new values to update the metadata with at those paths. + """ + for key, val in metadata_updates.items(): + self.app.logger.debug(f"updating metadata key {key} with value {val}") + new_metadata_in = replace_value_in_nested_dict(self.metadata_in, key, val) + self.app.logger.debug(f"new metadata_in: {pformat(new_metadata_in)}") + self._metadata_in = new_metadata_in + + @property + def metadata_in(self): + """Minimal record data as dict coming from the external world. + + Fields that can't be set before record creation: + """ + return self._metadata_in + + @metadata_in.setter + def metadata_in(self, value): + self._metadata_in = value + + @staticmethod + def build_draft_record_links(record_id, base_url, ui_base_url): + return { + "self": f"{base_url}/records/{record_id}/draft", + "self_html": f"{ui_base_url}/uploads/{record_id}", + "self_iiif_manifest": f"{base_url}/iiif/draft:{record_id}/manifest", + "self_iiif_sequence": f"{base_url}/iiif/draft:{record_id}/sequence/default", + "files": f"{base_url}/records/{record_id}/draft/files", + "media_files": f"{base_url}/records/{record_id}/draft/media-files", + "archive": f"{base_url}/records/{record_id}/draft/files-archive", + "archive_media": ( + f"{base_url}/records/{record_id}/draft/media-files-archive" + ), + "record": f"{base_url}/records/{record_id}", + "record_html": f"{ui_base_url}/records/{record_id}", + "publish": f"{base_url}/records/{record_id}/draft/actions/publish", + "review": f"{base_url}/records/{record_id}/draft/review", + "versions": f"{base_url}/records/{record_id}/versions", + "access_links": f"{base_url}/records/{record_id}/access/links", + "access_grants": f"{base_url}/records/{record_id}/access/grants", + "access_users": f"{base_url}/records/{record_id}/access/users", + "access_groups": f"{base_url}/records/{record_id}/access/groups", + "access_request": f"{base_url}/records/{record_id}/access/request", + "access": f"{base_url}/records/{record_id}/access", + "reserve_doi": f"{base_url}/records/{record_id}/draft/pids/doi", + "communities": f"{base_url}/records/{record_id}/communities", + "communities-suggestions": ( + f"{base_url}/records/{record_id}/communities-suggestions" + ), + "requests": f"{base_url}/records/{record_id}/requests", + } + + @staticmethod + def build_published_record_links(record_id, base_url, ui_base_url, parent_id): + links = TestRecordMetadata.build_draft_record_links( + record_id, base_url, ui_base_url + ) + links["archive"] = f"{base_url}/records/{record_id}/files-archive" + links["archive_media"] = f"{base_url}/records/{record_id}/media-files-archive" + links["doi"] = f"https://handle.stage.datacite.org/10.17613/{record_id}" + links["draft"] = f"{base_url}/records/{record_id}/draft" + links["files"] = f"{base_url}/records/{record_id}/files" + links["latest"] = f"{base_url}/records/{record_id}/versions/latest" + links["latest_html"] = f"{ui_base_url}/records/{record_id}/latest" + links["media_files"] = f"{base_url}/records/{record_id}/media-files" + del links["publish"] + del links["record"] + del links["record_html"] + links["parent"] = f"{base_url}/records/{parent_id}" + links["parent_doi"] = f"{ui_base_url}/doi/10.17613/{parent_id}" + links["parent_html"] = f"{ui_base_url}/records/{parent_id}" + del links["review"] + links["self"] = f"{base_url}/records/{record_id}" + links["self_html"] = f"{ui_base_url}/records/{record_id}" + links["self_doi"] = f"{ui_base_url}/doi/10.17613/{record_id}" + links["self_iiif_manifest"] = f"{base_url}/iiif/record:{record_id}/manifest" + links["self_iiif_sequence"] = ( + f"{base_url}/iiif/record:{record_id}/sequence/default" + ) + + return links + + @property + def draft(self): + """Minimal record data as dict coming from the external world. + + Fields that can't be set before record creation: + """ + metadata_out_draft = self.metadata_in.copy() + metadata_out_draft["access"]["embargo"] = {"active": False, "reason": None} + metadata_out_draft["access"]["status"] = "metadata-only" + metadata_out_draft["deletion_status"] = {"is_deleted": False, "status": "P"} + metadata_out_draft["custom_fields"] = {} + metadata_out_draft["is_draft"] = True + metadata_out_draft["is_published"] = False + metadata_out_draft["versions"] = { + "index": 1, + "is_latest": False, + "is_latest_draft": True, + } + metadata_out_draft["metadata"]["resource_type"] = { + "id": "image-photograph", + "title": {"en": "Photo"}, + } + metadata_out_draft["media_files"] = { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + } + metadata_out_draft["files"] = { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + **metadata_out_draft["files"], # For inheritance + } + metadata_out_draft["parent"] = { + "access": { + "grants": [], + "links": [], + "owned_by": {"user": "1"}, + "settings": { + "accept_conditions_text": None, + "allow_guest_requests": False, + "allow_user_requests": False, + "secret_link_expiration": 0, + }, + }, + "communities": { + "default": "215de947-a24d-4255-973c-25306e19a0aa", + "entries": [], + "ids": ["215de947-a24d-4255-973c-25306e19a0aa"], + "id": "74wky-xv103", + "pids": { + "doi": { + "client": "datacite", + "identifier": "10.17613/74wky-xv103", + "provider": "datacite", + } + }, + }, + } + for c in self.community_list: + defaults = { + "access": { + "member_policy": "open", + "members_visibility": "public", + "record_policy": "open", + "review_policy": "open", + "visibility": "public", + }, + "children": {"allow": False}, + "created": "", + "custom_fields": {}, + "deletion_status": {"is_deleted": False, "status": "P"}, + "id": c["id"], + "links": {}, + "metadata": { + "curation_policy": c["metadata"].get("curation_policy", ""), + "description": c["metadata"].get("description", ""), + "organizations": [{"name": ""}], + "page": c["metadata"].get("page", ""), + "title": c["metadata"].get("title", ""), + "type": {"id": c["metadata"].get("type", "")}, + "website": c["metadata"].get("website", ""), + }, + "revision_id": 2, + "slug": c["slug"], + "updated": "", + } + defaults.update(c) + metadata_out_draft["parent"]["communities"]["entries"].append(defaults) + + metadata_out_draft["pids"] = { + "doi": { + "client": "datacite", + "identifier": "10.17613/XXXX", + "provider": "datacite", + }, + "oai": { + "identifier": f"oai:{self.app.config['SITE_UI_URL']}:XXXX", + "provider": "oai", + }, + } + metadata_out_draft["revision_id"] = 3 + metadata_out_draft["stats"] = { + "all_versions": { + "data_volume": 0.0, + "downloads": 0, + "unique_downloads": 0, + "unique_views": 0, + "views": 0, + }, + "this_version": { + "data_volume": 0.0, + "downloads": 0, + "unique_downloads": 0, + "unique_views": 0, + "views": 0, + }, + } + metadata_out_draft["status"] = "draft" + metadata_out_draft["updated"] = "" + return metadata_out_draft + + @property + def published(self): + """Minimal record data as dict coming from the external world. + + Fields that can't be set before record creation: + """ + metadata_out_published = self.draft.copy() + metadata_out_published["is_draft"] = False + metadata_out_published["is_published"] = True + metadata_out_published["versions"] = { + "index": 1, + "is_latest": True, + "is_latest_draft": True, + } + metadata_out_published["metadata"]["resource_type"] = { + "id": "image-photograph", + "title": {"en": "Photo"}, + } + return metadata_out_published + + def __str__(self): + return pformat(self.metadata_in) + + def __repr__(self): + return self.__str__() + + def compare_draft(self, metadata_out_draft): + assert self.draft == metadata_out_draft + + def _as_via_api(self, metadata_in: dict) -> dict: + metadata_in["parent"]["access"].pop("grants") + metadata_in["parent"]["access"].pop("links") + metadata_in["versions"].pop("is_latest_draft") + return metadata_in + + def compare_published( + self, + actual: dict, + expected: dict = {}, + by_api: bool = False, + now: Arrow = arrow.utcnow(), + ) -> bool: + """ + Compare the actual and expected metadata dictionaries. + + Does not check the following fields: + + id + parent.id + revision_id + + Some fields are only compared to the present time: + + created + updated + + Args: + actual (dict): The actual metadata dictionary. + expected (dict): The expected metadata dictionary. + now (Arrow, optional): The current time. Defaults to arrow.utcnow(). + Raises: + AssertionError: If the actual metadata dictionary does not match + the expected metadata dictionary. + + Returns: + bool: True if the actual metadata dictionary matches the expected + metadata dictionary, False otherwise. + """ + app = self.app + expected = self.published.copy() if not expected else expected + if by_api: + expected = self._as_via_api(expected) + try: + assert now - arrow.get(actual["created"]) < datetime.timedelta(seconds=1) + assert actual["custom_fields"] == expected["custom_fields"] + assert "expires_at" not in actual.keys() + assert actual["files"]["count"] == expected["files"]["count"] + assert actual["files"]["enabled"] == expected["files"]["enabled"] + for k, v in actual["files"]["entries"].items(): + assert v["access"] == expected["files"]["entries"][k]["access"] + if "checksum" in expected["files"]["entries"][k]: + assert v["checksum"] == expected["files"]["entries"][k]["checksum"] + assert v["ext"] == expected["files"]["entries"][k]["ext"] + assert v["key"] == expected["files"]["entries"][k]["key"] + assert v["mimetype"] == expected["files"]["entries"][k]["mimetype"] + assert v["size"] == expected["files"]["entries"][k]["size"] + assert ( + v["storage_class"] + == expected["files"]["entries"][k]["storage_class"] + ) + if v["metadata"]: + assert v["metadata"] == expected["files"]["entries"][k]["metadata"] + else: + assert not expected["files"]["entries"][k]["metadata"] + assert v["links"] == build_file_links( + actual["id"], app.config["SITE_API_URL"], k + ) + assert actual["files"]["order"] == expected["files"]["order"] + assert actual["files"]["total_bytes"] == expected["files"]["total_bytes"] + assert not actual["is_draft"] assert actual["is_published"] - assert actual["links"] == build_published_record_links( + assert actual["links"] == TestRecordMetadata.build_published_record_links( actual["id"], app.config["SITE_API_URL"], app.config["SITE_UI_URL"], @@ -100,14 +547,20 @@ def _comparison_factory( ) assert actual["metadata"]["title"] == expected["metadata"]["title"] + expected["parent"]["access"]["owned_by"] = ( + {"user": str(self.owner_id)} if self.owner_id else None + ) + assert actual["parent"]["access"] == expected["parent"]["access"] - if community_list: + if self.community_list: + assert len(actual["parent"]["communities"]["entries"]) == len( + self.community_list + ) assert ( actual["parent"]["communities"]["default"] - == community_list[0]["id"] + == self.community_list[0]["id"] ) - for community in community_list: - app.logger.debug(f"community from list: {pformat(community)}") + for community in self.community_list: actual_c = [ c for c in actual["parent"]["communities"]["entries"] @@ -115,17 +568,21 @@ def _comparison_factory( ][0] assert actual_c["access"] == community["access"] assert actual_c["children"] == community["children"] - # assert actual_c["created"] == community["created"] + assert actual_c["created"] == community["created"] assert actual_c["custom_fields"] == community["custom_fields"] assert actual_c["deletion_status"] == community["deletion_status"] assert actual_c["id"] == community["id"] - assert actual_c["links"] == community["links"] + assert actual_c["links"] == {} + if ( + "title" in community["metadata"]["type"] + ): # expansion inconsistent + community["metadata"]["type"].pop("title") assert actual_c["metadata"] == community["metadata"] assert actual_c["revision_id"] == community["revision_id"] assert actual_c["slug"] == community["slug"] - # assert actual_c["updated"] == community["updated"] + assert actual_c["updated"] == community["updated"] assert actual["parent"]["communities"]["ids"] == [ - c["id"] for c in community_list + c["id"] for c in self.community_list ] assert actual["parent"]["pids"] == { "doi": { @@ -145,7 +602,7 @@ def _comparison_factory( "provider": "oai", }, } - assert actual["revision_id"] == 3 + # assert actual["revision_id"] == 4 # NOTE: Too difficult to test assert actual["stats"] == expected["stats"] assert actual["status"] == "published" assert now - arrow.get(actual["updated"]) < datetime.timedelta(seconds=1) @@ -155,7 +612,80 @@ def _comparison_factory( app.logger.error(f"Assertion failed: {e}") raise e - return _comparison_factory + +class TestRecordMetadataWithFiles(TestRecordMetadata): + + def __init__( + self, + app: Flask = current_app, + record_id: str = "XXXX", + metadata_in: dict = {}, + community_list: list[dict] = [], + file_access_status: str = "open", + file_entries: dict = {}, + owner_id: str = "1", + ): + super().__init__( + app=app, + community_list=community_list, + file_entries=file_entries, + owner_id=owner_id, + ) + starting_metadata_in = TestRecordMetadata.default_metadata_in + starting_metadata_in.update(metadata_in) + self._metadata_in = starting_metadata_in + self.record_id = record_id + self.file_entries = file_entries + self.file_access_status = file_access_status + + @property + def metadata_in(self): + self._metadata_in["files"]["enabled"] = True + self._metadata_in["files"]["entries"] = self.file_entries + self._metadata_in["access"]["status"] = self.file_access_status + return self._metadata_in + + def _add_file_entries(self, metadata): + metadata["files"]["count"] = len(self.file_entries.keys()) + metadata["files"]["total_bytes"] = sum( + [e["size"] for k, e in self.file_entries.items()] + ) + metadata["files"]["order"] = [] + for k, e in self.file_entries.items(): + file_links = build_file_links( + self.record_id, self.app.config["SITE_API_URL"], k + ) + defaults = { + "access": {"hidden": False}, + "ext": k[-3:], + "metadata": {}, + "mimetype": e["mimetype"], + "key": k, + "size": 0, + "storage_class": "L", + "links": file_links, + "id": "XXXX", + } + metadata["files"]["entries"][k] = { + **defaults, + **e, + } + # because sometimes e["links"] is from prior run without record_id... + if e.get("links") and "XXXX" in e["links"]["content"]: + metadata["files"]["entries"][k]["links"] = file_links + return metadata + + @property + def draft(self): + draft = super().draft + draft = self._add_file_entries(draft) + return draft + + @property + def published(self): + published = super().published + published = self._add_file_entries(published) + return published @pytest.fixture(scope="function") @@ -173,211 +703,34 @@ def minimal_record_metadata(running_app): """ app = running_app.app - metadata_in = { - "pids": {}, - "access": { - "record": "public", - "files": "public", - }, - "files": { - "enabled": False, # Most tests don't care about files - }, - "metadata": { - "creators": [ - { - "person_or_org": { - "family_name": "Brown", - "given_name": "Troy", - "name": "Brown, Troy", - "type": "personal", - } - }, - { - "person_or_org": { - "name": "Troy Inc.", - "type": "organizational", - }, - }, - ], - "publication_date": "2020-06-01", - # because DATACITE_ENABLED is True, this field is required - "publisher": "Acme Inc", - "resource_type": {"id": "image-photograph"}, - "title": "A Romans story", - }, - } - - metadata_out_draft = metadata_in.copy() - metadata_out_draft["access"]["embargo"] = {"active": False, "reason": None} - metadata_out_draft["access"]["status"] = "metadata-only" - metadata_out_draft["deletion_status"] = {"is_deleted": False, "status": "P"} - metadata_out_draft["custom_fields"] = {} - metadata_out_draft["is_draft"] = True - metadata_out_draft["is_published"] = False - metadata_out_draft["versions"] = { - "index": 1, - "is_latest": False, - "is_latest_draft": True, - } - metadata_out_draft["metadata"]["resource_type"] = { - "id": "image-photograph", - "title": {"en": "Photo"}, - } - metadata_out_draft["media_files"] = { - "count": 0, - "enabled": False, - } - metadata_out_draft["files"] = { - "count": 0, - "enabled": False, - "entries": {}, - "order": [], - "total_bytes": 0, - } - metadata_out_draft["parent"] = { - "access": { - "grants": [], - "links": [], - "owned_by": {"user": "1"}, - "settings": { - "accept_conditions_text": None, - "allow_guest_requests": False, - "allow_user_requests": False, - "secret_link_expiration": 0, - }, - }, - "communities": { - "default": "215de947-a24d-4255-973c-25306e19a0aa", - "entries": [ - { - "access": { - "member_policy": "open", - "members_visibility": "public", - "record_policy": "open", - "review_policy": "open", - "visibility": "public", - }, - "children": {"allow": False}, - "created": "2025-02-05T18:56:07.723517+00:00", - "custom_fields": {}, - "deletion_status": {"is_deleted": False, "status": "P"}, - "id": "215de947-a24d-4255-973c-25306e19a0aa", - "links": {}, - "metadata": { - "curation_policy": "Curation policy", - "description": "A description", - "description": "A description", - "organizations": [{"name": "Organization 1"}], - "page": "Information for my community", - "title": "My Community", - "type": {"id": "event"}, - "website": "https://my-community.com", - }, - "revision_id": 2, - "slug": "my-community", - "updated": "2025-02-05T18:56:07.860278+00:00", - }, - ], - "ids": ["215de947-a24d-4255-973c-25306e19a0aa"], - "id": "74wky-xv103", - "pids": { - "doi": { - "client": "datacite", - "identifier": "10.17613/74wky-xv103", - "provider": "datacite", - } - }, - }, - } - metadata_out_draft["pids"] = { - "doi": { - "client": "datacite", - "identifier": "10.17613/XXXX", - "provider": "datacite", - }, - "oai": { - "identifier": f"oai:{app.config['SITE_UI_URL']}:XXXX", - "provider": "oai", - }, - } - metadata_out_draft["revision_id"] = 3 - metadata_out_draft["stats"] = { - "all_versions": { - "data_volume": 0.0, - "downloads": 0, - "unique_downloads": 0, - "unique_views": 0, - "views": 0, - }, - "this_version": { - "data_volume": 0.0, - "downloads": 0, - "unique_downloads": 0, - "unique_views": 0, - "views": 0, - }, - } - metadata_out_draft["status"] = "published" - metadata_out_draft["updated"] = "XXXX" - - metadata_out_published = metadata_out_draft.copy() - metadata_out_published["is_draft"] = False - metadata_out_published["is_published"] = True - metadata_out_published["versions"] = { - "index": 1, - "is_latest": True, - "is_latest_draft": True, - } - metadata_out_published["metadata"]["resource_type"] = { - "id": "image-photograph", - "title": {"en": "Photo"}, - } - metadata_out_published["media_files"] = { - "count": 0, - "enabled": False, - "entries": {}, - "order": [], - "total_bytes": 0, - } + metadata = TestRecordMetadata(app=app) return { - "in": metadata_in, - "draft": metadata_out_draft, - "published": metadata_out_published, + "in": metadata.metadata_in, + "draft": metadata.draft, + "published": metadata.published, } @pytest.fixture(scope="function") -def minimal_record_metadata_with_files(minimal_record_metadata): - - def _factory(entries: dict, access_status: str = "open"): +def minimal_record_metadata_with_files(running_app): + app = running_app.app - minimal_record_metadata["in"]["files"]["enabled"] = True - minimal_record_metadata["in"]["files"]["entries"] = entries + def _factory( + record_id: str = "XXXX", entries: dict = {}, access_status: str = "open" + ): - minimal_record_metadata["draft"]["files"]["enabled"] = True - minimal_record_metadata["draft"]["access"]["status"] = access_status - minimal_record_metadata["draft"]["files"]["entries"] = entries - minimal_record_metadata["draft"]["files"]["count"] = len(entries.keys()) - minimal_record_metadata["draft"]["files"]["total_bytes"] = sum( - [e["size"] for k, e in entries.items()] + metadata = TestRecordMetadataWithFiles( + app=app, + record_id=record_id, + file_entries=entries, + file_access_status=access_status, ) - minimal_record_metadata["draft"]["files"]["order"] = [] - for k, e in entries.items(): - minimal_record_metadata["draft"]["files"]["entries"][e["key"]] = { - "access": {"hidden": False}, - "ext": e["key"][-3:], - "metadata": None, - "mimetype": e["mimetype"], - "key": e["key"], - "size": e["size"], - "storage_class": "L", - } - minimal_record_metadata["published"]["files"]["enabled"] = True - minimal_record_metadata["published"]["access"]["status"] = access_status - minimal_record_metadata["published"]["files"]["entries"] = entries - - return minimal_record_metadata + return { + "in": metadata.metadata_in, + "draft": metadata.draft, + "published": metadata.published, + } return _factory @@ -560,71 +913,3 @@ def full_record_metadata(users): }, "notes": ["Under investigation for copyright infringement."], } - - -@pytest.fixture(scope="function") -def build_draft_record_links(): - def _factory(record_id, base_url, ui_base_url): - return { - "self": f"{base_url}/records/{record_id}/draft", - "self_html": f"{ui_base_url}/uploads/{record_id}", - "self_iiif_manifest": f"{base_url}/iiif/draft:{record_id}/manifest", - "self_iiif_sequence": f"{base_url}/iiif/draft:{record_id}/sequence/default", - "files": f"{base_url}/records/{record_id}/draft/files", - "media_files": f"{base_url}/records/{record_id}/draft/media-files", - "archive": f"{base_url}/records/{record_id}/draft/files-archive", - "archive_media": ( - f"{base_url}/records/{record_id}/draft/media-files-archive" - ), - "record": f"{base_url}/records/{record_id}", - "record_html": f"{ui_base_url}/records/{record_id}", - "publish": f"{base_url}/records/{record_id}/draft/actions/publish", - "review": f"{base_url}/records/{record_id}/draft/review", - "versions": f"{base_url}/records/{record_id}/versions", - "access_links": f"{base_url}/records/{record_id}/access/links", - "access_grants": f"{base_url}/records/{record_id}/access/grants", - "access_users": f"{base_url}/records/{record_id}/access/users", - "access_groups": f"{base_url}/records/{record_id}/access/groups", - "access_request": f"{base_url}/records/{record_id}/access/request", - "access": f"{base_url}/records/{record_id}/access", - "reserve_doi": f"{base_url}/records/{record_id}/draft/pids/doi", - "communities": f"{base_url}/records/{record_id}/communities", - "communities-suggestions": ( - f"{base_url}/records/{record_id}/communities-suggestions" - ), - "requests": f"{base_url}/records/{record_id}/requests", - } - - return _factory - - -@pytest.fixture(scope="function") -def build_published_record_links(build_draft_record_links): - def _factory(record_id, base_url, ui_base_url, parent_id): - links = build_draft_record_links(record_id, base_url, ui_base_url) - links["archive"] = f"{base_url}/records/{record_id}/files-archive" - links["archive_media"] = f"{base_url}/records/{record_id}/media-files-archive" - links["doi"] = f"https://handle.stage.datacite.org/10.17613/{record_id}" - links["draft"] = f"{base_url}/records/{record_id}/draft" - links["files"] = f"{base_url}/records/{record_id}/files" - links["latest"] = f"{base_url}/records/{record_id}/versions/latest" - links["latest_html"] = f"{ui_base_url}/records/{record_id}/latest" - links["media_files"] = f"{base_url}/records/{record_id}/media-files" - del links["publish"] - del links["record"] - del links["record_html"] - links["parent"] = f"{base_url}/records/{parent_id}" - links["parent_doi"] = f"{ui_base_url}/doi/10.17613/{parent_id}" - links["parent_html"] = f"{ui_base_url}/records/{parent_id}" - del links["review"] - links["self"] = f"{base_url}/records/{record_id}" - links["self_html"] = f"{ui_base_url}/records/{record_id}" - links["self_doi"] = f"{ui_base_url}/doi/10.17613/{record_id}" - links["self_iiif_manifest"] = f"{base_url}/iiif/record:{record_id}/manifest" - links["self_iiif_sequence"] = ( - f"{base_url}/iiif/record:{record_id}/sequence/default" - ) - - return links - - return _factory diff --git a/site/tests/helpers/sample_records/__init__.py b/site/tests/helpers/sample_records/__init__.py index 0a9d00db2..01a01c830 100644 --- a/site/tests/helpers/sample_records/__init__.py +++ b/site/tests/helpers/sample_records/__init__.py @@ -1,13 +1,17 @@ from .sample_metadata_presentation_pdf import sample_metadata_presentation_pdf -from .sample11451 import rec11451 -from .sample16079 import rec16079 -from .sample22625 import rec22625 -from .sample22647 import rec22647 -from .sample28491 import rec28491 -from .sample33383 import rec33383 -from .sample34031 import rec34031 -from .sample38367 import rec38367 -from .sample42615 import rec42615 -from .sample44881 import rec44881 -from .sample45177 import rec45177 -from .sample48799 import rec48799 +from .sample_metadata_chapter_pdf import sample_metadata_chapter_pdf +from .sample_metadata_conference_proceedings_pdf import ( + sample_metadata_conference_proceedings_pdf, +) +from .sample_metadata_chapter2_pdf import sample_metadata_chapter2_pdf +from .sample_metadata_chapter3_pdf import sample_metadata_chapter3_pdf +from .sample_metadata_book_pdf import sample_metadata_book_pdf +from .sample_metadata_journal_article_pdf import sample_metadata_journal_article_pdf +from .sample_metadata_chapter4_pdf import sample_metadata_chapter4_pdf +from .sample_metadata_thesis_pdf import sample_metadata_thesis_pdf +from .sample_metadata_journal_article2_pdf import sample_metadata_journal_article2_pdf +from .sample_metadata_interview_transcript_pdf import ( + sample_metadata_interview_transcript_pdf, +) +from .sample_metadata_chapter5_pdf import sample_metadata_chapter5_pdf +from .sample_metadata_white_paper_pdf import sample_metadata_white_paper_pdf diff --git a/site/tests/helpers/sample_records/sample28491.py b/site/tests/helpers/sample_records/sample_metadata_book_pdf.py similarity index 97% rename from site/tests/helpers/sample_records/sample28491.py rename to site/tests/helpers/sample_records/sample_metadata_book_pdf.py index 74b468431..e458ef74e 100644 --- a/site/tests/helpers/sample_records/sample28491.py +++ b/site/tests/helpers/sample_records/sample_metadata_book_pdf.py @@ -1,4 +1,4 @@ -rec28491 = { +sample_metadata_book_pdf = { "input": { "created": "2020-01-30T16:46:54Z", "custom_fields": { @@ -18,9 +18,7 @@ }, { "group_identifier": "1003089", - "group_name": ( - "Foreign Language Teaching and the Environment" - ), + "group_name": ("Foreign Language Teaching and the Environment"), }, { "group_identifier": "1003408", @@ -203,8 +201,7 @@ "publication_date": "2008", "resource_type": {"id": "textDocument-book"}, "publisher": ( - "Editorial ACRIBIA, S. A., Apartado 466, 50080, " - "Zaragoza, Espana." + "Editorial ACRIBIA, S. A., Apartado 466, 50080, " "Zaragoza, Espana." ), "rights": [ { @@ -218,9 +215,7 @@ "id": "arr", "icon": "copyright", "props": { - "url": ( - "https://en.wikipedia.org/wiki/All_rights_reserved" - ) + "url": ("https://en.wikipedia.org/wiki/All_rights_reserved") }, "title": {"en": "All Rights Reserved"}, } @@ -272,9 +267,7 @@ }, { "group_identifier": "1003089", - "group_name": ( - "Foreign Language Teaching and the Environment" - ), + "group_name": ("Foreign Language Teaching and the Environment"), }, { "group_identifier": "1003408", @@ -423,8 +416,7 @@ "publication_date": "2008", "resource_type": {"id": "textDocument-book"}, "publisher": ( - "Editorial ACRIBIA, S. A., Apartado 466, 50080, " - "Zaragoza, Espana." + "Editorial ACRIBIA, S. A., Apartado 466, 50080, " "Zaragoza, Espana." ), "rights": [{"id": "arr"}], "subjects": [ @@ -474,9 +466,7 @@ }, { "group_identifier": "1003089", - "group_name": ( - "Foreign Language Teaching and the Environment" - ), + "group_name": ("Foreign Language Teaching and the Environment"), }, { "group_identifier": "1003408", @@ -668,8 +658,7 @@ "title": {"en": "Book"}, }, "publisher": ( - "Editorial ACRIBIA, S. A., Apartado 466, 50080, " - "Zaragoza, Espana." + "Editorial ACRIBIA, S. A., Apartado 466, 50080, " "Zaragoza, Espana." ), "rights": [ { diff --git a/site/tests/helpers/sample_records/sample22625.py b/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py similarity index 99% rename from site/tests/helpers/sample_records/sample22625.py rename to site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py index db0493ed1..bd0f0acac 100644 --- a/site/tests/helpers/sample_records/sample22625.py +++ b/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py @@ -1,4 +1,4 @@ -rec22625 = { +sample_metadata_chapter2_pdf = { "input": { "created": "2019-01-29T03:57:00Z", "pids": { @@ -65,7 +65,8 @@ # [{'description': ('The issue of gender has been a topic of ' # 'discussion in the research of Hasidism since S. ' # 'A. Horodecky’s book (1923), in which he ' - # 'claimed that Hasidism brought about full ' 'equality of Jewish men and women in the field ' + # 'claimed that Hasidism brought about full ' + # 'equality of Jewish men and women in the field ' # 'of spirituality. Although his claims have been ' # 'by and large rejected, most\nscholars agree that ' # 'the twentieth century Chabad movement has ' diff --git a/site/tests/helpers/sample_records/sample22647.py b/site/tests/helpers/sample_records/sample_metadata_chapter3_pdf.py similarity index 99% rename from site/tests/helpers/sample_records/sample22647.py rename to site/tests/helpers/sample_records/sample_metadata_chapter3_pdf.py index 408530194..41b1d2440 100644 --- a/site/tests/helpers/sample_records/sample22647.py +++ b/site/tests/helpers/sample_records/sample_metadata_chapter3_pdf.py @@ -1,4 +1,4 @@ -rec22647 = { +sample_metadata_chapter3_pdf = { "input": { "created": "2019-02-01T19:30:52Z", "pids": { @@ -836,9 +836,7 @@ }, ], "publisher": "Oxford University Press", - "title": ( - "Unfixing Epic: Homeric Orality and Contemporary Performance" - ), + "title": ("Unfixing Epic: Homeric Orality and Contemporary Performance"), }, "parent": {"access": {"owned_by": [{"user": "1012453"}]}}, "updated": "2019-02-01T19:30:52Z", diff --git a/site/tests/helpers/sample_records/sample34031.py b/site/tests/helpers/sample_records/sample_metadata_chapter4_pdf.py similarity index 98% rename from site/tests/helpers/sample_records/sample34031.py rename to site/tests/helpers/sample_records/sample_metadata_chapter4_pdf.py index c7ec8dceb..7540720f5 100644 --- a/site/tests/helpers/sample_records/sample34031.py +++ b/site/tests/helpers/sample_records/sample_metadata_chapter4_pdf.py @@ -1,4 +1,4 @@ -rec34031 = { +sample_metadata_chapter4_pdf = { "input": { "created": "2021-01-11T23:48:41Z", "pids": { @@ -46,8 +46,7 @@ "entries": { "gnosticism-theorized-major-trends-and-approaches-dillon.pdf": { # noqa: E501 "key": ( - "gnosticism-theorized-major-trends-and-approaches-" - "dillon.pdf" + "gnosticism-theorized-major-trends-and-approaches-" "dillon.pdf" ), "mimetype": "application/pdf", "size": "17181", @@ -123,9 +122,7 @@ "id": "arr", "icon": "copyright", "props": { - "url": ( - "https://en.wikipedia.org/wiki/All_rights_reserved" - ) + "url": ("https://en.wikipedia.org/wiki/All_rights_reserved") }, "title": {"en": "All Rights Reserved"}, } @@ -208,8 +205,7 @@ "entries": { "gnosticism-theorized-major-trends-and-approaches-dillon.pdf": { # noqa: E501 "key": ( - "gnosticism-theorized-major-trends-and-approaches-" - "dillon.pdf" + "gnosticism-theorized-major-trends-and-approaches-" "dillon.pdf" ), "mimetype": "application/pdf", "size": "17181", @@ -352,8 +348,7 @@ "entries": { "gnosticism-theorized-major-trends-and-approaches-dillon.pdf": { # noqa: E501 "key": ( - "gnosticism-theorized-major-trends-and-approaches-" - "dillon.pdf" + "gnosticism-theorized-major-trends-and-approaches-" "dillon.pdf" ), "mimetype": "application/pdf", "size": "17181", diff --git a/site/tests/helpers/sample_records/sample45177.py b/site/tests/helpers/sample_records/sample_metadata_chapter5_pdf.py similarity index 98% rename from site/tests/helpers/sample_records/sample45177.py rename to site/tests/helpers/sample_records/sample_metadata_chapter5_pdf.py index 65e6d12a0..0d2867e77 100644 --- a/site/tests/helpers/sample_records/sample45177.py +++ b/site/tests/helpers/sample_records/sample_metadata_chapter5_pdf.py @@ -1,4 +1,4 @@ -rec45177 = { +sample_metadata_chapter5_pdf = { "input": { "created": "2022-03-31T13:53:16Z", "pids": { @@ -231,9 +231,7 @@ "contributors": [ { "person_or_org": { - "family_name": ( - "ARLIS/NA Cataloging Advisory Committee" - ), + "family_name": ("ARLIS/NA Cataloging Advisory Committee"), "given_name": "", "name": "ARLIS/NA Cataloging Advisory Committee", "type": "personal", @@ -528,9 +526,7 @@ "contributors": [ { "person_or_org": { - "family_name": ( - "ARLIS/NA Cataloging Advisory Committee" - ), + "family_name": ("ARLIS/NA Cataloging Advisory Committee"), "given_name": "", "name": "ARLIS/NA Cataloging Advisory Committee", "type": "personal", @@ -812,9 +808,7 @@ "contributors": [ { "person_or_org": { - "family_name": ( - "ARLIS/NA Cataloging Advisory Committee" - ), + "family_name": ("ARLIS/NA Cataloging Advisory Committee"), "given_name": "", "name": "ARLIS/NA Cataloging Advisory Committee", "type": "personal", diff --git a/site/tests/helpers/sample_records/sample11451.py b/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py similarity index 82% rename from site/tests/helpers/sample_records/sample11451.py rename to site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py index 0d13129c0..0df725710 100644 --- a/site/tests/helpers/sample_records/sample11451.py +++ b/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py @@ -1,13 +1,7 @@ -rec11451 = { +sample_metadata_chapter_pdf = { "input": { "created": "2017-03-08T05:01:44Z", - "pids": { - "doi": { - "client": "datacite", - "identifier": "10.17613/M6733G", - "provider": "datacite", - } - }, + "pids": {}, "custom_fields": { "hclegacy:collection": "hccollection:1", "hclegacy:file_location": ( @@ -19,9 +13,7 @@ "hclegacy:groups_for_deposit": [ { "group_identifier": "174", - "group_name": ( - "East Asian Languages and Literatures after 1900" - ), + "group_name": ("East Asian Languages and Literatures after 1900"), }, { "group_identifier": "246", @@ -74,133 +66,80 @@ }, }, "metadata": { - "additional_descriptions": [ - { - "description": ( - "There are three " - "main East Asian " - "approaches to " - "interpreting " - "Ophelia. The first " - "is informed by the " - "fascination with " - "and reaction " - "against the " - "Victorian " - "pictorialization " - "of Ophelia, " - "especially John " - "Everett Millais’s " - "famous Ophelia " - "(1851), that " - "emphasized, as " - "Kimberly Rhodes " - "describes, her " - "“pathos, " - "innocence, and " - "beauty rather than " - "the unseemly " - "detail of her " - "death.” Despite " - "having lived " - "through negative " - "experiences, " - "Ophelia retains a " - "childlike " - "innocence in these " - "rewritings. For " - "example, New " - "Hamlet by Lao She " - "(penname of Shu " - "Qingchun, " - "1899-1966) " - "parodies China’s " - "“Hamlet complex” " - "(the inability to " - "act at a time of " - "national crisis) " - "and the " - "fascination with " - "an Ophelia " - "submerged in " - "water. Both " - "Ophelia and " - "Millais’s painting " - "are featured in " - "two of Japanese " - "writer Natsume " - "Sōseki’s early " - "twentieth-century " - "novels. A second " - "approach " - "emphasizes the " - "local context. " - "Adapters used " - "local values to " - "engage with and " - "even critique the " - "Victorian " - "narrative " - "tradition of " - "moralization. Late " - "nineteenth-century " - "translator Lin Shu " - "(1852-1924), for " - "example, tones " - "down the " - "sentimentalization " - "of Ophelia in his " - "classical Chinese " - "rewriting of " - "Charles and Mary " - "Lamb’s Tales from " - "Shakespeare, " - "showcasing the " - "conflict between " - "Victorian and " - "Confucian moral " - "codes. The third " - "approach focuses " - "upon an " - "objectified and " - "sexualized " - "Ophelia. As other " - "chapters in this " - "volume " - "demonstrate, this " - "is not exclusively " - "an Asian " - "phenomenon. " - "However, the " - "eroticism " - "associated with " - "the Ophelia figure " - "in a number of " - "Asian stage and " - "screen versions of " - "Hamlet, such as " - "Sherwood Hu’s film " - "Prince of the " - "Himalayas (2006), " - "aligns Ophelia " - "with East Asian " - "ideals of " - "femininity, but " - "also brings out " - "the sexuality that " - "is latent or " - "suppressed in " - "Victorian " - "interpretations. " - "They do so by " - "aligning Ophelia " - "with East Asian " - "ideals of " - "femininity." - ), - "type": {"id": "other", "title": {"en": "Other"}}, - } - ], + # "additional_descriptions": [ + # { + # "description": ( + # "There are three main East Asian approaches to " + # "interpreting Ophelia. The first is informed by " + # "the fascination with and reaction against the " + # "Victorian pictorialization of Ophelia, especially " + # "John Everett Millais’s famous Ophelia (1851), " + # "that emphasized, as Kimberly Rhodes describes, her " + # "“pathos, innocence, and beauty rather than the " + # "unseemly detail of her death.” Despite having " + # "lived through negative experiences, Ophelia " + # "retains a childlike innocence in these rewritings. " + # "For example, New Hamlet by Lao She (penname of " + # "Shu Qingchun, 1899-1966) parodies China’s " + # "Hamlet complex against the Victorian pictorialization " + # "of Ophelia, especially John Everett Millais’s " + # "famous Ophelia (1851), that emphasized, as Kimberly " + # "Rhodes describes, her “pathos, innocence, and " + # "beauty rather than the unseemly detail of her " + # "death.” Despite having lived through negative " + # "experiences, Ophelia retains a childlike " + # "innocence in these rewritings. For example, New " + # "Hamlet by Lao She (penname of Shu Qingchun, " + # "1899-1966) parodies China’s Hamlet complex " + # "against the Victorian pictorialization of Ophelia, " + # "especially John Everett Millais’s famous Ophelia " + # "(1851), that emphasized, as Kimberly Rhodes describes, " + # "her “pathos, innocence, and beauty rather than the " + # "unseemly detail of her death.” Despite having lived " + # "through negative experiences, Ophelia retains a " + # "childlike innocence in these rewritings. For example, " + # "New Hamlet by Lao She (penname of Shu Qingchun, " + # "1899-1966) parodies China’s Hamlet complex " + # "against the Victorian pictorialization of Ophelia, " + # "especially John Everett Millais’s famous Ophelia " + # "(1851), that emphasized, as Kimberly Rhodes describes, " + # "her “pathos, innocence, and beauty rather than the " + # "unseemly detail of her death.” Despite having lived " + # "through negative experiences, Ophelia retains a " + # "childlike innocence in these rewritings. For example, " + # "New Hamlet by Lao She (penname of Shu Qingchun, " + # "1899-1966) “Hamlet complex” (the inability to " + # "act at a time of national crisis) and the " + # "fascination with an Ophelia submerged in water. " + # "Both Ophelia and Millais’s painting are featured in " + # "two of Japanese writer Natsume Sōseki’s early " + # "twentieth-century novels. A second approach " + # "emphasizes the local context. Adapters used " + # "local values to engage with and even critique the " + # "Victorian narrative tradition of moralization. Late " + # "nineteenth-century translator Lin Shu " + # "(1852-1924), for example, tones " + # "down the sentimentalization of Ophelia in his " + # "classical Chinese rewriting of Charles and Mary " + # "Lamb’s Tales from Shakespeare, showcasing the " + # "conflict between Victorian and Confucian moral codes. " + # "The third approach focuses upon an objectified " + # "and sexualized Ophelia. As other chapters in " + # "this volume demonstrate, this is not " + # "exclusively an Asian phenomenon. However, the " + # "eroticism associated with the Ophelia figure " + # "in a number of Asian stage and screen versions of " + # "Hamlet, such as Sherwood Hu’s film Prince of " + # "the Himalayas (2006), aligns Ophelia with East " + # "Asian ideals of femininity, but also brings out " + # "the sexuality that is latent or suppressed in " + # "Victorian interpretations. They do so by " + # "aligning Ophelia with East Asian ideals of " + # "femininity." + # ), + # "type": {"id": "other", "title": {"en": "Other"}}, + # } + # ], "creators": [ { "affiliations": [{"name": "George Washington U"}], @@ -294,7 +233,9 @@ "icon": "cc-by-nc-icon", "props": { "scheme": "spdx", - "url": "https://creativecommons.org/licenses/by-nc/4.0/legalcode", + "url": ( + "https://creativecommons.org/licenses/by-nc/4.0/legalcode" + ), }, "title": { "en": ( @@ -328,8 +269,7 @@ ], "publisher": "Palgrave", "title": ( - "The Paradox of Female Agency: Ophelia and East Asian " - "Sensibilities" + "The Paradox of Female Agency: Ophelia and East Asian " "Sensibilities" ), }, "parent": {"access": {"owned_by": [{"user": "49"}]}}, @@ -356,9 +296,7 @@ "hclegacy:groups_for_deposit": [ { "group_identifier": "174", - "group_name": ( - "East Asian Languages and Literatures after 1900" - ), + "group_name": ("East Asian Languages and Literatures after 1900"), }, { "group_identifier": "246", @@ -523,8 +461,7 @@ ], "publisher": "Palgrave", "title": ( - "The Paradox of Female Agency: Ophelia and East Asian " - "Sensibilities" + "The Paradox of Female Agency: Ophelia and East Asian " "Sensibilities" ), }, "parent": {"access": {"owned_by": [{"user": "49"}]}}, @@ -551,9 +488,7 @@ "hclegacy:groups_for_deposit": [ { "group_identifier": "174", - "group_name": ( - "East Asian Languages and Literatures after 1900" - ), + "group_name": ("East Asian Languages and Literatures after 1900"), }, { "group_identifier": "246", @@ -799,8 +734,7 @@ ], "publisher": "Palgrave", "title": ( - "The Paradox of Female Agency: Ophelia and East Asian " - "Sensibilities" + "The Paradox of Female Agency: Ophelia and East Asian " "Sensibilities" ), }, "parent": {"access": {"owned_by": [{"user": "49"}]}}, diff --git a/site/tests/helpers/sample_records/sample16079.py b/site/tests/helpers/sample_records/sample_metadata_conference_proceedings_pdf.py similarity index 98% rename from site/tests/helpers/sample_records/sample16079.py rename to site/tests/helpers/sample_records/sample_metadata_conference_proceedings_pdf.py index c40666ff5..2db6355bc 100644 --- a/site/tests/helpers/sample_records/sample16079.py +++ b/site/tests/helpers/sample_records/sample_metadata_conference_proceedings_pdf.py @@ -1,4 +1,4 @@ -rec16079 = { +sample_metadata_conference_proceedings_pdf = { "input": { "created": "2017-10-26T12:31:39Z", "pids": { @@ -175,9 +175,7 @@ "https://creativecommons.org/licenses/by/4.0/legalcode" ), }, - "title": { - "en": "Creative Commons Attribution 4.0 International" - }, + "title": {"en": "Creative Commons Attribution 4.0 International"}, } ], "subjects": [ @@ -598,13 +596,10 @@ "props": { "scheme": "spdx", "url": ( - "https://creativecommons.org/licenses/by/" - "4.0/legalcode" + "https://creativecommons.org/licenses/by/" "4.0/legalcode" ), }, - "title": { - "en": "Creative Commons Attribution 4.0 International" - }, + "title": {"en": "Creative Commons Attribution 4.0 International"}, } ], "subjects": [ diff --git a/site/tests/helpers/sample_records/sample44881.py b/site/tests/helpers/sample_records/sample_metadata_interview_transcript_pdf.py similarity index 99% rename from site/tests/helpers/sample_records/sample44881.py rename to site/tests/helpers/sample_records/sample_metadata_interview_transcript_pdf.py index 678d702a7..b316ae65d 100644 --- a/site/tests/helpers/sample_records/sample44881.py +++ b/site/tests/helpers/sample_records/sample_metadata_interview_transcript_pdf.py @@ -1,4 +1,4 @@ -rec44881 = { +sample_metadata_interview_transcript_pdf = { "input": { "pids": { "doi": { diff --git a/site/tests/helpers/sample_records/sample42615.py b/site/tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py similarity index 98% rename from site/tests/helpers/sample_records/sample42615.py rename to site/tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py index deca8c7da..d5495d193 100644 --- a/site/tests/helpers/sample_records/sample42615.py +++ b/site/tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py @@ -1,4 +1,4 @@ -rec42615 = { +sample_metadata_journal_article2_pdf = { "input": { "created": "2021-11-10T15:06:20Z", "pids": { @@ -32,8 +32,7 @@ "issue": "2", "pages": "359-370", "title": ( - "Journal of Traditional Building, Architecture and " - "Urbanism" + "Journal of Traditional Building, Architecture and " "Urbanism" ), }, "kcr:commons_domain": "sah.hcommons.org", @@ -60,8 +59,7 @@ "entries": { "palazzo-vernacular_patterns_in_portugal_and_brazil-2021.pdf": { # noqa: E501 "key": ( - "palazzo-vernacular_patterns_in_portugal_and_b" - "razil-2021.pdf" + "palazzo-vernacular_patterns_in_portugal_and_b" "razil-2021.pdf" ), "mimetype": "application/pdf", "size": "17181", @@ -240,8 +238,7 @@ "issue": "2", "pages": "359-370", "title": ( - "Journal of Traditional Building, Architecture and " - "Urbanism" + "Journal of Traditional Building, Architecture and " "Urbanism" ), }, "kcr:commons_domain": "sah.hcommons.org", @@ -268,8 +265,7 @@ "entries": { "palazzo-vernacular_patterns_in_portugal_and_brazil-2021.pdf": { # noqa: E501 "key": ( - "palazzo-vernacular_patterns_in_portugal_and_b" - "razil-2021.pdf" + "palazzo-vernacular_patterns_in_portugal_and_b" "razil-2021.pdf" ), "mimetype": "application/pdf", "size": "17181", @@ -428,8 +424,7 @@ "issue": "2", "pages": "359-370", "title": ( - "Journal of Traditional Building, Architecture and " - "Urbanism" + "Journal of Traditional Building, Architecture and " "Urbanism" ), }, "kcr:commons_domain": "sah.hcommons.org", @@ -456,8 +451,7 @@ "entries": { "palazzo-vernacular_patterns_in_portugal_and_brazil-2021.pdf": { # noqa: E501 "key": ( - "palazzo-vernacular_patterns_in_portugal_and_b" - "razil-2021.pdf" + "palazzo-vernacular_patterns_in_portugal_and_b" "razil-2021.pdf" ), "mimetype": "application/pdf", "size": "17181", diff --git a/site/tests/helpers/sample_records/sample33383.py b/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py similarity index 97% rename from site/tests/helpers/sample_records/sample33383.py rename to site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py index 8afb02e3d..dd7b09120 100644 --- a/site/tests/helpers/sample_records/sample33383.py +++ b/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py @@ -1,4 +1,4 @@ -rec33383 = { +sample_metadata_journal_article_pdf = { "input": { "access": { "embargo": {"active": True, "reason": None, "until": "2030-11-25"}, @@ -37,9 +37,7 @@ "hclegacy:previously_published": "published", "hclegacy:record_change_date": "2023-01-23T14:20:48Z", "hclegacy:record_creation_date": "2020-11-25T12:35:10Z", - "hclegacy:submitter_affiliation": ( - "University of Southern California" - ), + "hclegacy:submitter_affiliation": ("University of Southern California"), "hclegacy:submitter_id": "1008812", "hclegacy:submitter_org_memberships": ["hc"], "hclegacy:total_views": 103, @@ -118,9 +116,7 @@ # ], "creators": [ { - "affiliations": [ - {"name": "University of Southern California"} - ], + "affiliations": [{"name": "University of Southern California"}], "person_or_org": { "family_name": "Roberts", "given_name": "Alexandre", @@ -195,9 +191,7 @@ "id": "arr", "icon": "copyright", "props": { - "url": ( - "https://en.wikipedia.org/wiki/All_rights_reserved" - ) + "url": ("https://en.wikipedia.org/wiki/All_rights_reserved") }, "title": {"en": "All Rights Reserved"}, } @@ -280,9 +274,7 @@ "hclegacy:previously_published": "published", "hclegacy:record_change_date": "2023-01-23T14:20:48Z", "hclegacy:record_creation_date": "2020-11-25T12:35:10Z", - "hclegacy:submitter_affiliation": ( - "University of Southern California" - ), + "hclegacy:submitter_affiliation": ("University of Southern California"), "hclegacy:submitter_id": "1008812", "hclegacy:submitter_org_memberships": ["hc"], "hclegacy:total_views": 103, @@ -361,9 +353,7 @@ # ], "creators": [ { - "affiliations": [ - {"name": "University of Southern California"} - ], + "affiliations": [{"name": "University of Southern California"}], "person_or_org": { "family_name": "Roberts", "given_name": "Alexandre", @@ -505,9 +495,7 @@ "hclegacy:previously_published": "published", "hclegacy:record_change_date": "2023-01-23T14:20:48Z", "hclegacy:record_creation_date": "2020-11-25T12:35:10Z", - "hclegacy:submitter_affiliation": ( - "University of Southern California" - ), + "hclegacy:submitter_affiliation": ("University of Southern California"), "hclegacy:submitter_id": "1008812", "hclegacy:submitter_org_memberships": ["hc"], "hclegacy:total_views": 103, @@ -593,9 +581,7 @@ # ], "creators": [ { - "affiliations": [ - {"name": "University of Southern California"} - ], + "affiliations": [{"name": "University of Southern California"}], "person_or_org": { "family_name": "Roberts", "given_name": "Alexandre", diff --git a/site/tests/helpers/sample_records/sample38367.py b/site/tests/helpers/sample_records/sample_metadata_thesis_pdf.py similarity index 97% rename from site/tests/helpers/sample_records/sample38367.py rename to site/tests/helpers/sample_records/sample_metadata_thesis_pdf.py index 711fb0701..16a332d66 100644 --- a/site/tests/helpers/sample_records/sample38367.py +++ b/site/tests/helpers/sample_records/sample_metadata_thesis_pdf.py @@ -1,4 +1,4 @@ -rec38367 = { +sample_metadata_thesis_pdf = { "input": { "created": "2021-04-26T05:57:56Z", "custom_fields": { @@ -42,9 +42,7 @@ "macroeconomics", "modelling", ], - "thesis:university": ( - "Universidad Nacional Autónoma de México (UNAM)" - ), + "thesis:university": ("Universidad Nacional Autónoma de México (UNAM)"), }, "files": { "default_preview": ( @@ -132,9 +130,7 @@ ], "creators": [ { - "affiliations": [ - {"name": "Université Sorbonne Paris Nord"} - ], + "affiliations": [{"name": "Université Sorbonne Paris Nord"}], "person_or_org": { "family_name": "Martínez Hernández", "given_name": "Alberto-Gabino", @@ -228,9 +224,7 @@ "id": "arr", "icon": "copyright", "props": { - "url": ( - "https://en.wikipedia.org/wiki/All_rights_reserved" - ) + "url": ("https://en.wikipedia.org/wiki/All_rights_reserved") }, "title": {"en": "All Rights Reserved"}, } @@ -313,9 +307,7 @@ "macroeconomics", "modelling", ], - "thesis:university": ( - "Universidad Nacional Autónoma de México (UNAM)" - ), + "thesis:university": ("Universidad Nacional Autónoma de México (UNAM)"), }, "files": { "default_preview": ( @@ -336,9 +328,7 @@ "metadata": { "creators": [ { - "affiliations": [ - {"name": "Université Sorbonne Paris Nord"} - ], + "affiliations": [{"name": "Université Sorbonne Paris Nord"}], "person_or_org": { "family_name": "Martínez Hernández", "given_name": "Alberto-Gabino", @@ -566,9 +556,7 @@ "macroeconomics", "modelling", ], - "thesis:university": ( - "Universidad Nacional Autónoma de México (UNAM)" - ), + "thesis:university": ("Universidad Nacional Autónoma de México (UNAM)"), }, "files": { "default_preview": ( @@ -596,9 +584,7 @@ "metadata": { "creators": [ { - "affiliations": [ - {"name": "Université Sorbonne Paris Nord"} - ], + "affiliations": [{"name": "Université Sorbonne Paris Nord"}], "person_or_org": { "family_name": "Martínez Hernández", "given_name": "Alberto-Gabino", diff --git a/site/tests/helpers/sample_records/sample48799.py b/site/tests/helpers/sample_records/sample_metadata_white_paper_pdf.py similarity index 98% rename from site/tests/helpers/sample_records/sample48799.py rename to site/tests/helpers/sample_records/sample_metadata_white_paper_pdf.py index 2f33c3d8d..636d9c1d7 100644 --- a/site/tests/helpers/sample_records/sample48799.py +++ b/site/tests/helpers/sample_records/sample_metadata_white_paper_pdf.py @@ -1,4 +1,4 @@ -rec48799 = { +sample_metadata_white_paper_pdf = { "input": { "created": "2022-09-29T14:34:36Z", "custom_fields": { @@ -179,13 +179,10 @@ "props": { "scheme": "spdx", "url": ( - "https://creativecommons.org/licenses/by/" - "4.0/legalcode" + "https://creativecommons.org/licenses/by/" "4.0/legalcode" ), }, - "title": { - "en": "Creative Commons Attribution 4.0 International" - }, + "title": {"en": "Creative Commons Attribution 4.0 International"}, } ], "title": "Super Apps: A Platform Lab Report", @@ -569,15 +566,10 @@ "props": { "scheme": "spdx", "url": ( - "https://creativecommons.org/licenses/by/4.0/" - "legalcode" + "https://creativecommons.org/licenses/by/4.0/" "legalcode" ), }, - "title": { - "en": ( - "Creative Commons Attribution 4.0 International" - ) - }, + "title": {"en": ("Creative Commons Attribution 4.0 International")}, } ], "title": "Super Apps: A Platform Lab Report", From d8083341e02ee5597bd1b9d9a360ab7a69bb7a6d Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Tue, 11 Feb 2025 20:38:50 -0500 Subject: [PATCH 08/22] feature(neh; import): Work in progress on import API endpoint; improved test setup; more real-life test data; assigning ownership via access grants; initial validation error handling --- docs/source/api.md | 4 +- .../invenio-record-importer-kcworks | 2 +- site/tests/api/test_api_import.py | 1410 ++++++++++------- site/tests/conftest.py | 27 +- site/tests/fixtures/identifiers.py | 21 +- site/tests/fixtures/records.py | 228 ++- .../fixtures/vocabularies/resource_types.py | 4 +- site/tests/fixtures/vocabularies/subjects.py | 5 - .../sample_metadata_chapter2_pdf.py | 20 +- .../sample_metadata_chapter_pdf.py | 25 +- .../sample_metadata_journal_article_pdf.py | 61 +- 11 files changed, 1142 insertions(+), 665 deletions(-) diff --git a/docs/source/api.md b/docs/source/api.md index 4943703ea..d64398b61 100644 --- a/docs/source/api.md +++ b/docs/source/api.md @@ -140,12 +140,12 @@ This request must be made with a multipart/form-data request. The request body m | Name | Required | Content Type | Description | |-------|----------|--------------|-------------| | `files` | yes | `application/octet-stream` | The (binary) file content to be uploaded. If multiple files are being uploaded, a body part with this same name ("files") must be provided for each file. If more than three or four files are being uploaded, it is recommended to provide a single zip archive containing all of the files. The files will be assigned to the appropriate work based on filename, so where multiple files are provided these **must be unique**. If a zip archive is provided, the files must be contained in a single compressed folder with no subfolders. | -| `metadata` | yes | `application/json` | An array of JSON metadata objects, each of which will be used to create a new work. Each must following the KCWorks implementation of the InvenioRDM metadata schema described {ref}`here `. In addition, an array of owners for the work may optionally be provided by adding an `access.owned_by` property to each metadata object. Note that if no owners are provided, the work will be created with the organizational account that issued the OAuth token as the owner. | +| `metadata` | yes | `application/json` | An array of JSON metadata objects, each of which will be used to create a new work. Each must following the KCWorks implementation of the InvenioRDM metadata schema described {ref}`here `. In addition, an array of owners for the work may optionally be provided by adding a `parent.access.owned_by` property to each metadata object. Note that if no owners are provided, the work will be created with the organizational account that issued the OAuth token as the owner. | | `review_required` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the work should be reviewed before publication. This setting is only relevant if the work is intended for publication in a collection that requires review. It will override the collection's usual review policy, since the work is being uploaded by a collection administrator. (Default: "true") | | `strict_validation` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the import request should be rejected if any validation errors are encountered. If this value is "false", the imported work will be created in KCWorks even if some of the provided metadata does not conform to the KCWorks metadata schema, provided these are not required fields. If this value is "true", the import request will be rejected if any validation errors are encountered. (Default: "true") | | `all_or_none` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the entire import request should be rejected if any of the works fail to be created (whether for validation errors, upload errors, or other reasons). If this value is "false", the import request will be accepted even if some of the works cannot be created. The response in this case will include a list of works that were successfully created and a list of errors for the works that failed to be created. (Default: "true") | -The array of owners, if provided in a metadata object's `access.owned_by` property, must include at least the full name and email address of the users to be added as owners of the work. If the user already has a Knowledge Commons account, their username should also be provided. Additional identifiers (e.g., ORCID) may be provided as well to help avoid duplicate accounts, since a KCWorks account will be created for each user if they do not already have one. +The array of owners, if provided in a metadata object's `parent.access.owned_by` property, must include at least the full name and email address of the users to be added as owners of the work. If the user already has a Knowledge Commons account, their username should also be provided. Additional identifiers (e.g., ORCID) may be provided as well to help avoid duplicate accounts, since a KCWorks account will be created for each user if they do not already have one. | key | required | type | description | |-----|----------|------|-------------| diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index d53c19435..66a0f8166 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit d53c194355580c17410bc1e9b1b82aa6234ea2fa +Subproject commit 66a0f816615b302c060932f4dabcb7fda73e9a59 diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index efa7c2904..9c7bbd7c7 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -1,6 +1,8 @@ +import copy from flask_login import login_user from invenio_access.permissions import authenticated_user, system_identity from invenio_access.utils import get_identity +from invenio_accounts.proxies import current_accounts from invenio_rdm_records.proxies import current_rdm_records_service as records_service from invenio_record_importer_kcworks.proxies import current_record_importer_service from invenio_record_importer_kcworks.record_loader import RecordLoader @@ -11,597 +13,891 @@ import json from pathlib import Path -# from pprint import pformat +from pprint import pformat import re import sys from ..fixtures.files import file_md5 from ..fixtures.records import TestRecordMetadata, TestRecordMetadataWithFiles from ..helpers.sample_records import ( sample_metadata_chapter_pdf, - # sample_metadata_chapter2_pdf, + sample_metadata_chapter2_pdf, # sample_metadata_chapter3_pdf, # sample_metadata_chapter4_pdf, # sample_metadata_chapter5_pdf, # sample_metadata_conference_proceedings_pdf, # sample_metadata_interview_transcript_pdf, - # sample_metadata_journal_article_pdf, + sample_metadata_journal_article_pdf, # sample_metadata_journal_article2_pdf, # sample_metadata_thesis_pdf, # sample_metadata_white_paper_pdf, ) -def test_import_records_loader_load( - running_app, - db, - search_clear, - minimal_community_factory, - user_factory, - mock_send_remote_api_update_fixture, - celery_worker, -): - app = running_app.app - u = user_factory(email="test@example.com", token=True, saml_id=None) - user_id = u.user.id - identity = get_identity(u.user) - identity.provides.add(authenticated_user) - login_user(u.user) - - community_record = minimal_community_factory(owner=user_id) - community = community_record.to_dict() - - test_metadata = TestRecordMetadata( - app=app, - community_list=[community], - owner_id=user_id, - ) - - result: LoaderResult = RecordLoader( - user_id=user_id, community_id=community["id"] - ).load(index=0, import_data=test_metadata.metadata_in) - - record_created_id = result.record_created["record_data"]["id"] - - assert result.status == "new_record" - - # result.primary_community - assert result.primary_community["id"] == community["id"] - assert result.primary_community["metadata"]["title"] == "My Community" - assert result.primary_community["slug"] == "my-community" - - # result.record_created - community.update({"links": {}}) # FIXME: Why are links not expanded? - assert test_metadata.compare_published(result.record_created["record_data"]) - assert result.record_created["record_data"]["revision_id"] == 3 - - assert re.match( - r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - str(result.record_created["record_uuid"]), - ) - assert result.record_created["status"] == "new_record" - - # result.existing_record - assert result.existing_record == {} - - # result.uploaded_files - assert result.uploaded_files == {} - - # result.community_review_result - assert result.community_review_result["is_closed"] - assert not result.community_review_result["is_expired"] - assert not result.community_review_result["is_open"] - assert result.community_review_result["receiver"]["community"] == community["id"] - assert result.community_review_result["revision_id"] == 4 - assert result.community_review_result["status"] == "accepted" - assert result.community_review_result["title"] == "A Romans story" - assert result.community_review_result["topic"]["record"] == record_created_id - assert result.community_review_result["type"] == "community-submission" - - # result.assigned_owners - assert result.assigned_owners == { - "owner_id": user_id, - "owner_type": "user", - "access_grants": [], - } - - # result.added_to_collections - assert result.added_to_collections == [] - - -def test_import_records_loader_load_with_files( - running_app, - db, - search_clear, - minimal_community_factory, - user_factory, - mock_send_remote_api_update_fixture, - celery_worker, -): - app = running_app.app - u = user_factory(email="test@example.com", token=True, saml_id=None) - user_id = u.user.id - identity = get_identity(u.user) - identity.provides.add(authenticated_user) - login_user(u.user) - - community_record = minimal_community_factory(owner=user_id) - community = community_record.to_dict() - - file_paths = [ - Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.pdf", - Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.jpg", - ] - file1 = open(file_paths[0], "rb") - file2 = open(file_paths[1], "rb") - files = [ - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.pdf" - ), - stream=file1, - content_type="application/pdf", - mimetype="application/pdf", - mimetype_params={}, - ), - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.jpg" - ), - stream=file2, - content_type="image/jpeg", - mimetype="image/jpeg", - mimetype_params={}, - ), - ] - file_list = [ - { - "key": "sample.pdf", - "mimetype": "application/pdf", - "size": 13264, # FIXME: Check reporting of mismatch - }, - { - "key": "sample.jpg", - "mimetype": "image/jpeg", - "size": 1174188, - }, - ] - file_entries = {f["key"]: f for f in file_list} - - test_metadata = TestRecordMetadataWithFiles( - app=app, - metadata_in=sample_metadata_chapter_pdf["input"], - community_list=[community], - owner_id=user_id, - file_entries=file_entries, - ) - - result: LoaderResult = RecordLoader( - user_id=user_id, community_id=community["id"] - ).load( - index=0, - import_data=test_metadata.metadata_in, - files=files, - ) - file1.close() - file2.close() - - record_created_id = result.record_created["record_data"]["id"] - - # add ids and checksums from actual file entries to the expected file entries - for k, f in file_entries.items(): - f["id"] = result.record_created["record_data"]["files"]["entries"][k]["id"] - f["checksum"] = result.record_created["record_data"]["files"]["entries"][k][ - "checksum" +class BaseImportRecordsLoaderLoadTest: + """Base class for testing record imports with different metadata sources.""" + + @property + def metadata_source(self): + """Override this in subclasses to provide specific metadata.""" + raise NotImplementedError + + def modify_metadata(self, test_metadata: TestRecordMetadata): + """Modify the metadata in the metadata source class instance.""" + pass + + def check_result_status(self, result: LoaderResult): + """Check the status of the result.""" + assert result.status == "new_record" + + def check_result_record_created( + self, result: LoaderResult, test_metadata: TestRecordMetadata + ): + """Do the comparison of the result with the expected metadata.""" + assert test_metadata.compare_published(result.record_created["record_data"]) + assert result.record_created["record_data"]["revision_id"] == 3 + + assert re.match( + r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + str(result.record_created["record_uuid"]), + ) + assert result.record_created["status"] == "new_record" + + def check_result_primary_community(self, result: LoaderResult, community: dict): + """Check the primary community of the result.""" + assert result.primary_community["id"] == community["id"] + assert result.primary_community["metadata"]["title"] == "My Community" + assert result.primary_community["slug"] == "my-community" + + def check_result_existing_record(self, result: LoaderResult): + """Check the existing record of the result.""" + assert result.existing_record == {} + + def check_result_uploaded_files(self, result: LoaderResult): + """Check the uploaded files of the result.""" + assert result.uploaded_files == {} + + def check_result_community_review_result( + self, result: LoaderResult, community: dict, test_metadata: TestRecordMetadata + ): + """Check the community review result of the result.""" + assert result.community_review_result["is_closed"] + assert not result.community_review_result["is_expired"] + assert not result.community_review_result["is_open"] + assert ( + result.community_review_result["receiver"]["community"] == community["id"] + ) + assert result.community_review_result["revision_id"] == 4 + assert result.community_review_result["status"] == "accepted" + assert ( + result.community_review_result["title"] + == test_metadata.metadata_in["metadata"]["title"] + ) + assert ( + result.community_review_result["topic"]["record"] + == result.record_created["record_data"]["id"] + ) + assert result.community_review_result["type"] == "community-submission" + + def check_result_assigned_owners( + self, + result: LoaderResult, + user_id: str, + test_metadata: TestRecordMetadata, + app, + ): + """Check the assigned owners of the result.""" + owners = ( + test_metadata.metadata_in.get("parent", {}) + .get("access", {}) + .get("owned_by") + ) + app.logger.debug(f"check_result_assigned_owners: {pformat(owners)}") + if owners and result.status == "new_record": + owners = [ + current_accounts.datastore.get_user_by_email(owner["email"]) + for owner in owners + ] + app.logger.debug(f"check_result_assigned_owners Users: {pformat(owners)}") + assert result.assigned_owners == { + "owner_email": owners[0].email, + "owner_id": owners[0].id, + "owner_type": "user", + "access_grants": [ + { + "subject": { + "id": str(owner.id), + "type": "user", + "email": owner.email, + }, + "permission": "manage", + } + for owner in owners[1:] + ], + } + elif result.status == "new_record": + assert result.assigned_owners == { + "owner_id": user_id, + "owner_type": "user", + "access_grants": [], + } + else: + assert result.assigned_owners == {} + + def check_result_added_to_collections(self, result: LoaderResult): + """Check the added to collections of the result.""" + assert result.added_to_collections == [] + + def check_result_submitted( + self, + result: LoaderResult, + test_metadata: TestRecordMetadata, + ): + """Check the submitted of the result.""" + submitted_data = copy.deepcopy(test_metadata.metadata_in) + # Remove the owned_by field from the access dictionary during + # record creation because we will be adding it back in later + if submitted_data.get("parent", {}).get("access", {}).get("owned_by"): + submitted_data["parent"]["access"].pop("owned_by") + # Remove the entries field from the files dictionary during + # record creation because we will be adding it back in later + if submitted_data.get("files", {}).get("entries"): + submitted_data["files"].pop("entries") + assert result.submitted["data"] == submitted_data + assert result.submitted["files"] == test_metadata.metadata_in["files"] + assert result.submitted["owners"] == test_metadata.metadata_in.get( + "parent", {} + ).get("access", {}).get("owned_by", []) + + def test_import_records_loader_load( + self, + running_app, + db, + minimal_community_factory, + user_factory, + record_metadata, + mock_send_remote_api_update_fixture, + celery_worker, + search_clear, + ): + app = running_app.app + # Get the email of the first owner of the record if owners are specified + owners = ( + self.metadata_source.get("parent", {}).get("access", {}).get("owned_by", []) + ) + if owners: + first_user_email = owners[0].get("email") + else: + first_user_email = "test@example.com" + u = user_factory(email=first_user_email, token=True, saml_id=None) + user_id = u.user.id + identity = get_identity(u.user) + identity.provides.add(authenticated_user) + login_user(u.user) + + community_record = minimal_community_factory(owner=user_id) + community = community_record.to_dict() + + test_metadata = record_metadata( + metadata_in=self.metadata_source, + community_list=[community], + owner_id=user_id, + ) + self.modify_metadata(test_metadata) + + for u in ( + test_metadata.metadata_in.get("parent", {}) + .get("access", {}) + .get("owned_by", []) + ): + if u["email"] != "test@example.com": + user_factory( + email=u["email"], + token=False, + saml_id=None, + ) + + result: LoaderResult = RecordLoader( + user_id=user_id, community_id=community["id"] + ).load(index=0, import_data=copy.deepcopy(test_metadata.metadata_in)) + + self.check_result_submitted(result, test_metadata) + + self.check_result_record_created(result, test_metadata) + + self.check_result_status(result) + + self.check_result_primary_community(result, community) + + self.check_result_existing_record(result) + + self.check_result_uploaded_files(result) + + community.update({"links": {}}) # FIXME: Why are links not expanded? + + self.check_result_community_review_result(result, community, test_metadata) + + self.check_result_assigned_owners(result, user_id, test_metadata, app) + + self.check_result_added_to_collections(result) + + +# class TestImportLoaderLoadThesisPDF(BaseImportRecordsLoaderLoadTest): +# @property +# def metadata_source(self): +# return sample_metadata_thesis_pdf["input"] + + +# class TestImportLoaderLoadChapterPDF(BaseImportRecordsLoaderLoadTest): +# @property +# def metadata_source(self): +# return sample_metadata_chapter_pdf["input"] + + +# class TestImportLoaderLoadChapter2PDF(BaseImportRecordsLoaderLoadTest): +# @property +# def metadata_source(self): +# return sample_metadata_chapter2_pdf["input"] + + +class TestImportLoaderLoadJournalArticlePDF(BaseImportRecordsLoaderLoadTest): + + @property + def metadata_source(self): + return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) + + +class TestImportLoaderLoadJournalArticleBadTitle(BaseImportRecordsLoaderLoadTest): + """Test importing a journal article with an empty title.""" + + @property + def metadata_source(self): + return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) + + def modify_metadata(self, test_metadata: TestRecordMetadata): + test_metadata.update_metadata({"metadata|title": ""}) + + def check_result_status(self, result: LoaderResult): + """Check the status of the result.""" + assert result.status == "error" + + def check_result_record_created( + self, result: LoaderResult, test_metadata: TestRecordMetadata + ): + """Check the record created of the result.""" + assert result.record_created == { + "record_data": {}, + "record_uuid": "", + "status": "deleted", + } + + def check_result_community_review_result( + self, result: LoaderResult, community: dict, test_metadata: TestRecordMetadata + ): + """Check the community review result of the result.""" + assert result.community_review_result == {} + + +class BaseImportRecordsLoaderLoadWithFilesTest: + """Base class for testing record imports with files.""" + + @property + def metadata_source(self): + """Override this in subclasses to provide specific metadata.""" + raise NotImplementedError + + def test_import_records_loader_load_with_files( + self, + running_app, + db, + search_clear, + minimal_community_factory, + user_factory, + record_metadata_with_files, + mock_send_remote_api_update_fixture, + celery_worker, + ): + app = running_app.app + u = user_factory(email="test@example.com", token=True, saml_id=None) + user_id = u.user.id + identity = get_identity(u.user) + identity.provides.add(authenticated_user) + login_user(u.user) + + community_record = minimal_community_factory(owner=user_id) + community = community_record.to_dict() + + file_paths = [ + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg", ] - test_metadata.file_entries = file_entries - test_metadata.record_id = record_created_id - metadata_expected = test_metadata.published - - # check result.status - assert result.status == "new_record" - - # check result.primary_community - assert result.primary_community["id"] == community["id"] - assert result.primary_community["metadata"]["title"] == "My Community" - assert result.primary_community["slug"] == "my-community" - - # check result.record_created - assert test_metadata.compare_published(result.record_created["record_data"]) - - # check result.uploaded_files - assert result.uploaded_files == { - "sample.jpg": ["uploaded", []], - "sample.pdf": ["uploaded", []], - } - - # check result.community_review_result - assert result.community_review_result["is_closed"] - assert not result.community_review_result["is_expired"] - assert not result.community_review_result["is_open"] - assert result.community_review_result["receiver"]["community"] == community["id"] - - # check result.assigned_owners - assert result.assigned_owners == { - "owner_id": user_id, - "owner_type": "user", - "access_grants": [], - } - - # check result.added_to_collections - assert result.added_to_collections == [] - - # now check the record in the database/search - rdm_record = records_service.read(system_identity, id_=record_created_id).to_dict() - assert rdm_record["files"] == metadata_expected["files"] - - # ensure the files can be downloaded - with app.test_client() as client: - with open(file_paths[1], "rb") as file2: - file_bytes = file2.read() - file_response2 = client.get( - f"{app.config['SITE_API_URL']}/records/{record_created_id}/files/" - "sample.jpg/content" - ) - assert file_response2.status_code == 200 - app.logger.debug(file_response2.headers) - assert ( - "inline" in file_response2.headers["Content-Disposition"] - ) # FIXME: why not attachment? - assert file_response2.headers["Content-MD5"] == file_md5( - file_response2.data - ) - assert file_response2.headers["Content-MD5"] == file_md5(file_bytes) - assert file_response2.content_type == "image/jpeg" - assert file_response2.content_length == 1174188 - assert sys.getsizeof(file_response2.data) == sys.getsizeof(file_bytes) - # assert file_response2.data == file2.read() - - with open(file_paths[0], "rb") as file1: - file_bytes = file1.read() - file_response1 = client.get( - f"{app.config['SITE_API_URL']}/records/{record_created_id}/files/" - "sample.pdf/content" - ) - assert file_response1.status_code == 200 - assert file_response1.headers["Content-MD5"] == file_md5( - file_response1.data - ) - assert file_response1.headers["Content-MD5"] == file_md5(file_bytes) - assert "sample.pdf" in file_response1.headers["Content-Disposition"] - assert ( - file_response1.content_type == "application/octet-stream" - ) # FIXME: why not application/pdf? - assert file_response1.content_length == 13264 - assert sys.getsizeof(file_response1.data) == sys.getsizeof(file_bytes) - # assert file_response1.data == file1.read() - - file1.close() - file2.close() - - -def test_import_records_service_load( - running_app, - db, - minimal_community_factory, - user_factory, - minimal_record_metadata_with_files, - compare_metadata_published, - search_clear, - mock_send_remote_api_update_fixture, -): - app = running_app.app - u = user_factory(email="test@example.com", token=True, saml_id=None) - identity = get_identity(u.user) - identity.provides.add(authenticated_user) - login_user(u.user) - - # FIXME: We need to actually create a KC account for the users - # assigned as owners, not just a KCWorks account. Or maybe send - # them an email with a link to create a KC account with the same - # email address? - - community_record = minimal_community_factory(owner=u.user.id) - community = community_record.to_dict() - - file_paths = [ - Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.pdf", - Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.jpg", - ] - file1 = open(file_paths[0], "rb") - file2 = open(file_paths[1], "rb") - files = [ - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.pdf" + file1 = open(file_paths[0], "rb") + file2 = open(file_paths[1], "rb") + files = [ + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf" + ), + stream=file1, + content_type="application/pdf", + mimetype="application/pdf", + mimetype_params={}, ), - stream=file1, - content_type="application/pdf", - mimetype="application/pdf", - mimetype_params={}, - ), - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.jpg" + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg" + ), + stream=file2, + content_type="image/jpeg", + mimetype="image/jpeg", + mimetype_params={}, ), - stream=file2, - content_type="image/jpeg", - mimetype="image/jpeg", - mimetype_params={}, - ), - ] - file_list = [ - { - "key": "sample.pdf", - "mimetype": "application/pdf", - "size": 13264, # FIXME: Check reporting of mismatch - }, - { - "key": "sample.jpg", - "mimetype": "image/jpeg", - "size": 1174188, - }, - ] - file_entries = {f["key"]: f for f in file_list} - - metadata_in = minimal_record_metadata_with_files(entries=file_entries)["in"] - metadata_in["metadata"].get("identifiers", []).append( - {"identifier": "1234567890", "scheme": "import_id"} - ) - - service = current_record_importer_service - import_results = service.import_records( - file_data=files, - metadata=[metadata_in], - user_id=u.user.id, - community_id=community["id"], - ) - - file1.close() - file2.close() - - assert import_results.get("status") == "success" - assert len(import_results["data"]) == 1 - assert import_results.get("message") == "All records were successfully imported" - assert import_results.get("errors") == [] - - record_result1 = import_results["data"][0] - record_id1 = record_result1.get("record_id") - assert record_id1 - assert ( - record_result1.get("record_url") - == f"{app.config['SITE_UI_URL']}/records/{record_id1}" - ) - assert record_result1.get("files") == { - "sample.jpg": ("uploaded", []), - "sample.pdf": ("uploaded", []), - } - assert record_result1.get("errors") == [] - assert record_result1.get("collection_id") == community["id"] - result_metadata1 = record_result1.get("metadata") - - # add ids and checksums from actual file entries to the expected file entries - for k, f in file_entries.items(): - f["id"] = result_metadata1["files"]["entries"][k]["id"] - f["checksum"] = result_metadata1["files"]["entries"][k]["checksum"] - expected_metadata = minimal_record_metadata_with_files( - record_id=record_id1, entries=file_entries - )["published"] - assert compare_metadata_published( - result_metadata1, - expected_metadata, - community_list=[community], - owner_id=u.user.id, - ) - - -def test_import_records_api_metadata_only( - running_app, - db, - minimal_community_factory, - user_factory, - minimal_record_metadata, - compare_metadata_published, - search_clear, - mock_send_remote_api_update_fixture, - celery_worker, -): - app = running_app.app - u = user_factory(email="test@example.com", token=True, saml_id=None) - token = u.allowed_token - user_id = u.user.id - identity = get_identity(u.user) - identity.provides.add(authenticated_user) - - community_record = minimal_community_factory(owner=user_id) - community = community_record.to_dict() - - minimal_record_metadata["in"]["metadata"].get("identifiers", []).append( - {"identifier": "1234567890", "scheme": "import_id"} - ) - - with app.test_client() as client: - response = client.post( - f"{app.config['SITE_API_URL']}/import/{community['slug']}", - content_type="multipart/form-data", - data={ - "metadata": json.dumps([minimal_record_metadata["in"]]), - "id_scheme": "import_id", - "review_required": "true", - "strict_validation": "true", - "all_or_none": "true", - "files": [], + ] + file_list = [ + { + "key": "sample.pdf", + "mimetype": "application/pdf", + "size": 13264, # FIXME: Check reporting of mismatch }, - headers={ - "Content-Type": "multipart/form-data", - "Authorization": f"Bearer {token}", + { + "key": "sample.jpg", + "mimetype": "image/jpeg", + "size": 1174188, }, + ] + file_entries = {f["key"]: f for f in file_list} + + test_metadata = record_metadata_with_files( + metadata_in=self.metadata_source, + community_list=[community], + owner_id=user_id, + file_entries=file_entries, ) - assert response.status_code == 201 - assert response.json["status"] == "success" - assert response.json["message"] == "All records were successfully imported" - assert response.json["errors"] == [] - assert len(response.json["data"]) == 1 - for index, record_result in enumerate(response.json["data"]): - assert record_result.get("item_index") == index - assert record_result.get("record_id") is not None - assert record_result.get("record_url") is not None - assert record_result.get("collection_id") in [ - community["id"], - community["slug"], - ] - assert record_result.get("files") == {} - assert record_result.get("errors") == [] - community.update( - { - "links": {}, - "metadata": { - **community["metadata"], - "type": {"id": "event"}, - }, - } - ) # FIXME: Why are links and title not expanded? - assert compare_metadata_published( - record_result.get("metadata"), - minimal_record_metadata["published"], - community_list=[community], - owner_id=u.user.id, + for u in ( + test_metadata.metadata_in.get("parent", {}) + .get("access", {}) + .get("owned_by", []) + ): + if u["email"] != "test@example.com": + user_factory( + email=u["email"], + token=False, + saml_id=None, + ) + + # Create group communities + for g in test_metadata.metadata_in.get("custom_fields", {}).get( + "hclegacy:groups_for_deposit", [] + ): + minimal_community_factory( + slug=g["group_name"].lower().replace(" ", "-"), + custom_fields={ + "kcr:commons_group_id": g["group_identifier"], + "kcr:commons_group_name": g["group_name"], + }, ) - # Check the record in the database - record_id1 = record_result.get("record_id") - rdm_record = records_service.read(system_identity, id_=record_id1).to_dict() - assert rdm_record["files"]["entries"] == {} - assert rdm_record["files"]["order"] == [] - assert rdm_record["files"]["total_bytes"] == 0 - assert not rdm_record["files"]["enabled"] - - -def test_import_records_api_with_files( - running_app, - db, - minimal_community_factory, - user_factory, - minimal_record_metadata_with_files, - compare_metadata_published, - search_clear, - mock_send_remote_api_update_fixture, + result: LoaderResult = RecordLoader( + user_id=user_id, community_id=community["id"] + ).load( + index=0, + import_data=test_metadata.metadata_in, + files=files, + ) + file1.close() + file2.close() + + record_created_id = result.record_created["record_data"]["id"] + + # add ids and checksums from actual file entries to the expected file entries + for k, f in file_entries.items(): + f["id"] = result.record_created["record_data"]["files"]["entries"][k]["id"] + f["checksum"] = result.record_created["record_data"]["files"]["entries"][k][ + "checksum" + ] + test_metadata.file_entries = file_entries + test_metadata.record_id = record_created_id + metadata_expected = test_metadata.published + + # check result.status + assert result.status == "new_record" + + # check result.primary_community + assert result.primary_community["id"] == community["id"] + assert result.primary_community["metadata"]["title"] == "My Community" + assert result.primary_community["slug"] == "my-community" + + # check result.record_created + assert test_metadata.compare_published(result.record_created["record_data"]) + + # check result.uploaded_files + assert result.uploaded_files == { + "sample.jpg": ["uploaded", []], + "sample.pdf": ["uploaded", []], + } + + # check result.community_review_result + assert result.community_review_result["is_closed"] + assert not result.community_review_result["is_expired"] + assert not result.community_review_result["is_open"] + assert ( + result.community_review_result["receiver"]["community"] == community["id"] + ) + + # check result.assigned_owners + assert result.assigned_owners == { + "owner_id": user_id, + "owner_type": "user", + "access_grants": [], + } + + # check result.added_to_collections + assert result.added_to_collections == [] + + # now check the record in the database/search + rdm_record = records_service.read( + system_identity, id_=record_created_id + ).to_dict() + assert rdm_record["files"] == { + k: v + for k, v in metadata_expected["files"].items() + if k != "default_preview" + } + + # ensure the files can be downloaded + with app.test_client() as client: + with open(file_paths[1], "rb") as file2: + file_bytes = file2.read() + file_response2 = client.get( + f"{app.config['SITE_API_URL']}/records/{record_created_id}/files/" + "sample.jpg/content" + ) + assert file_response2.status_code == 200 + app.logger.debug(file_response2.headers) + assert ( + "inline" in file_response2.headers["Content-Disposition"] + ) # FIXME: why not attachment? + assert file_response2.headers["Content-MD5"] == file_md5( + file_response2.data + ) + assert file_response2.headers["Content-MD5"] == file_md5(file_bytes) + assert file_response2.content_type == "image/jpeg" + assert file_response2.content_length == 1174188 + assert sys.getsizeof(file_response2.data) == sys.getsizeof(file_bytes) + # assert file_response2.data == file2.read() + + with open(file_paths[0], "rb") as file1: + file_bytes = file1.read() + file_response1 = client.get( + f"{app.config['SITE_API_URL']}/records/{record_created_id}/files/" + "sample.pdf/content" + ) + assert file_response1.status_code == 200 + assert file_response1.headers["Content-MD5"] == file_md5( + file_response1.data + ) + assert file_response1.headers["Content-MD5"] == file_md5(file_bytes) + assert "sample.pdf" in file_response1.headers["Content-Disposition"] + assert ( + file_response1.content_type == "application/octet-stream" + ) # FIXME: why not application/pdf? + assert file_response1.content_length == 13264 + assert sys.getsizeof(file_response1.data) == sys.getsizeof(file_bytes) + # assert file_response1.data == file1.read() + + file1.close() + file2.close() + + +class TestImportLoaderLoadWithFilesChapterPDF(BaseImportRecordsLoaderLoadWithFilesTest): + @property + def metadata_source(self): + return sample_metadata_chapter_pdf["input"] + + +class TestImportLoaderLoadWithFilesChapter2PDF( + BaseImportRecordsLoaderLoadWithFilesTest ): - app = running_app.app - community_record = minimal_community_factory() - community = community_record.to_dict() - u = user_factory(email="test@example.com", token=True, saml_id=None) - token = u.allowed_token - identity = get_identity(u.user) - identity.provides.add(authenticated_user) - - file_paths = [ - Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.pdf", - Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.jpg", - ] - file_list = [{"key": "sample.pdf"}, {"key": "sample.jpg"}] - file_entries = { - "sample.pdf": { - "key": "sample.pdf", - "size": 13264, - "mimetype": "application/pdf", - }, - "sample.jpg": { - "key": "sample.jpg", - "size": 1174188, - "mimetype": "image/jpeg", - }, - } - metadata_in = minimal_record_metadata_with_files(entries=file_entries)["in"] - - with app.test_client() as client: - response = client.post( - f"{app.config['SITE_API_URL']}/import/{community['slug']}", - content_type="multipart/form-data", - data={ - "metadata": json.dumps([metadata_in]), - "review_required": "true", - "strict_validation": "true", - "all_or_none": "true", - "files": [open(file_path, "rb") for file_path in file_paths], + @property + def metadata_source(self): + return sample_metadata_chapter2_pdf["input"] + + +# class TestImportLoaderLoadWithFilesJournalArticlePDF( +# BaseImportRecordsLoaderLoadWithFilesTest +# ): +# @property +# def metadata_source(self): +# return sample_metadata_journal_article_pdf["input"] + + +class BaseImportRecordsServiceLoadTest: + """Base class for testing record imports with the service.""" + + @property + def metadata_source(self): + """Override this in subclasses to provide specific metadata.""" + raise NotImplementedError + + def test_import_records_service_load( + self, + running_app, + db, + minimal_community_factory, + user_factory, + search_clear, + mock_send_remote_api_update_fixture, + ): + app = running_app.app + u = user_factory(email="test@example.com", token=True, saml_id=None) + identity = get_identity(u.user) + user_id = u.user.id + identity.provides.add(authenticated_user) + login_user(u.user) + + # FIXME: We need to actually create a KC account for the users + # assigned as owners, not just a KCWorks account. Or maybe send + # them an email with a link to create a KC account with the same + # email address? + + community_record = minimal_community_factory(owner=u.user.id) + community = community_record.to_dict() + + file_paths = [ + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg", + ] + file1 = open(file_paths[0], "rb") + file2 = open(file_paths[1], "rb") + files = [ + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf" + ), + stream=file1, + content_type="application/pdf", + mimetype="application/pdf", + mimetype_params={}, + ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg" + ), + stream=file2, + content_type="image/jpeg", + mimetype="image/jpeg", + mimetype_params={}, + ), + ] + file_list = [ + { + "key": "sample.pdf", + "mimetype": "application/pdf", + "size": 13264, # FIXME: Check reporting of mismatch }, - headers={ - "Content-Type": "multipart/form-data", - "Authorization": f"Bearer {token}", + { + "key": "sample.jpg", + "mimetype": "image/jpeg", + "size": 1174188, }, + ] + file_entries = {f["key"]: f for f in file_list} + + test_metadata = TestRecordMetadataWithFiles( + metadata_in=self.metadata_source, + community_list=[community], + owner_id=u.user.id, + file_entries=file_entries, ) - print(response.text) - assert response.status_code == 201 - assert response.json["status"] == "success" - assert response.json["message"] == "All records were successfully imported" - assert response.json["errors"] == [] - assert len(response.json["data"]) == 1 - for index, record_result in enumerate(response.json["data"]): - - for k, f in file_entries.items(): - f["id"] = record_result.get("metadata")["files"]["entries"][k]["id"] - f["checksum"] = record_result.get("metadata")["files"]["entries"][k][ - "checksum" + + test_metadata.update_metadata( + { + "metadata|identifiers": [ + {"identifier": "1234567890", "scheme": "import_id"} ] - expected_metadata = minimal_record_metadata_with_files( - record_id=record_result.get("record_id"), entries=file_entries - )["published"] - - assert record_result.get("item_index") == index - assert record_result.get("record_id") is not None - assert ( - record_result.get("record_url") - == f"{app.config['SITE_UI_URL']}/records/{record_result.get('record_id')}" # noqa: E501 - ) - assert record_result.get("collection_id") in [ - community["id"], - community["slug"], - ] - assert record_result.get("files") == { - f["key"]: ["uploaded", []] for f in file_list } - assert record_result.get("errors") == [] - - community.update( - { - "links": {}, - "metadata": { - **community["metadata"], - "type": {"id": "event"}, - }, - } - ) # FIXME: Why are links and title not expanded? - assert compare_metadata_published( - record_result.get("metadata"), - expected_metadata, - community_list=[community], - owner_id=u.user.id, - ) - - # Check the record in the database - record_id1 = record_result.get("record_id") - rdm_record = records_service.read(system_identity, id_=record_id1).to_dict() - assert len(rdm_record["files"]["entries"].keys()) == 2 - assert rdm_record["files"]["order"] == [] # FIXME: Why no order list? - assert rdm_record["files"]["total_bytes"] == 1187452 - assert rdm_record["files"]["enabled"] + ) + service = current_record_importer_service + import_results = service.import_records( + file_data=files, + metadata=[test_metadata.metadata_in], + user_id=user_id, + community_id=community["id"], + ) -# import requests + file1.close() + file2.close() -# url = "https://works.hcommons.org/api/import" + assert import_results.get("status") == "success" + assert len(import_results["data"]) == 1 + assert import_results.get("message") == "All records were successfully imported" + assert import_results.get("errors") == [] -# payload = {'collection': 'mlacommons'} -# files=[ -# ('file1',('Test.pdf',open('/Users/ianscott/Downloads/Test.pdf','rb'),'application/pdf')) -# ] -# headers = { -# 'Cookie': 'SimpleSAMLCommons=41b2316ef1cefa7c21fa257f50b95b1b' -# } + record_result1 = import_results["data"][0] + record_id1 = record_result1.get("record_id") + assert record_id1 + assert ( + record_result1.get("record_url") + == f"{app.config['SITE_UI_URL']}/records/{record_id1}" + ) + assert record_result1.get("files") == { + "sample.jpg": ["uploaded", []], + "sample.pdf": ["uploaded", []], + } + assert record_result1.get("errors") == [] + assert record_result1.get("collection_id") == community["id"] + result_metadata1 = record_result1.get("metadata") + + # add ids and checksums from actual file entries to the expected file entries + for k, f in file_entries.items(): + f["id"] = result_metadata1["files"]["entries"][k]["id"] + f["checksum"] = result_metadata1["files"]["entries"][k]["checksum"] + assert test_metadata.compare_published(result_metadata1) + + +class TestImportRecordsServiceMetadataOnlyChapter(BaseImportRecordsServiceLoadTest): + @property + def metadata_source(self): + return sample_metadata_chapter_pdf["input"] + + +class TestImportRecordsServiceMetadataOnlyChapter2(BaseImportRecordsServiceLoadTest): + @property + def metadata_source(self): + return sample_metadata_chapter2_pdf["input"] + + +class BaseImportRecordsAPITest: + """Base class for testing record imports with the API.""" + + @property + def metadata_source(self): + """Override this in subclasses to provide specific metadata.""" + raise NotImplementedError + + def test_import_records_api_metadata_only( + self, + running_app, + db, + minimal_community_factory, + user_factory, + minimal_record_metadata, + search_clear, + mock_send_remote_api_update_fixture, + celery_worker, + ): + app = running_app.app + u = user_factory(email="test@example.com", token=True, saml_id=None) + token = u.allowed_token + user_id = u.user.id + identity = get_identity(u.user) + identity.provides.add(authenticated_user) + + community_record = minimal_community_factory(owner=user_id) + community = community_record.to_dict() + + test_metadata = TestRecordMetadata( + metadata_in=self.metadata_source, + community_list=[community], + owner_id=user_id, + ) + test_metadata.update_metadata( + { + "metadata|identifiers": [ + {"identifier": "1234567890", "scheme": "import_id"} + ] + } + ) -# response = requests.request("POST", url, headers=headers, data=payload, files=files) + with app.test_client() as client: + response = client.post( + f"{app.config['SITE_API_URL']}/import/{community['slug']}", + content_type="multipart/form-data", + data={ + "metadata": json.dumps([test_metadata.metadata_in]), + "id_scheme": "import_id", + "review_required": "true", + "strict_validation": "true", + "all_or_none": "true", + "files": [], + }, + headers={ + "Content-Type": "multipart/form-data", + "Authorization": f"Bearer {token}", + }, + ) + assert response.status_code == 201 + assert response.json["status"] == "success" + assert response.json["message"] == "All records were successfully imported" + assert response.json["errors"] == [] + assert len(response.json["data"]) == 1 + for index, record_result in enumerate(response.json["data"]): + assert record_result.get("item_index") == index + assert record_result.get("record_id") is not None + assert record_result.get("record_url") is not None + assert record_result.get("collection_id") in [ + community["id"], + community["slug"], + ] + assert record_result.get("files") == {} + assert record_result.get("errors") == [] + community.update( + { + "links": {}, + "metadata": { + **community["metadata"], + "type": {"id": "event"}, + }, + } + ) # FIXME: Why are links and title not expanded? + assert test_metadata.compare_published(record_result.get("metadata")) + + # Check the record in the database + record_id1 = record_result.get("record_id") + rdm_record = records_service.read( + system_identity, id_=record_id1 + ).to_dict() + assert rdm_record["files"]["entries"] == {} + assert rdm_record["files"]["order"] == [] + assert rdm_record["files"]["total_bytes"] == 0 + assert not rdm_record["files"]["enabled"] + + +class TestImportRecordsAPIMetadataOnlyChapter(BaseImportRecordsAPITest): + @property + def metadata_source(self): + return sample_metadata_chapter_pdf["input"] + + +class TestImportRecordsAPIMetadataOnlyChapter2(BaseImportRecordsAPITest): + @property + def metadata_source(self): + return sample_metadata_chapter2_pdf["input"] + + +class BaseImportRecordsAPIWithFilesTest: + """Base class for testing record imports with files via API.""" + + @property + def metadata_source(self): + """Override this in subclasses to provide specific metadata.""" + raise NotImplementedError + + def test_import_records_api_with_files( + self, + running_app, + db, + minimal_community_factory, + user_factory, + search_clear, + mock_send_remote_api_update_fixture, + ): + app = running_app.app + community_record = minimal_community_factory() + community = community_record.to_dict() + u = user_factory(email="test@example.com", token=True, saml_id=None) + token = u.allowed_token + identity = get_identity(u.user) + identity.provides.add(authenticated_user) + + file_paths = [ + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg", + ] + file_list = [{"key": "sample.pdf"}, {"key": "sample.jpg"}] + file_entries = { + "sample.pdf": { + "key": "sample.pdf", + "size": 13264, + "mimetype": "application/pdf", + }, + "sample.jpg": { + "key": "sample.jpg", + "size": 1174188, + "mimetype": "image/jpeg", + }, + } + # TODO: We'll have to update this to allow multiple records in one test import + test_metadata = TestRecordMetadataWithFiles( + metadata_in=self.metadata_source, + community_list=[community], + owner_id=u.user.id, + file_entries=file_entries, + ) -# print(response.text) + with app.test_client() as client: + response = client.post( + f"{app.config['SITE_API_URL']}/import/{community['slug']}", + content_type="multipart/form-data", + data={ + "metadata": json.dumps([test_metadata.metadata_in]), + "review_required": "true", + "strict_validation": "true", + "all_or_none": "true", + "files": [open(file_path, "rb") for file_path in file_paths], + }, + headers={ + "Content-Type": "multipart/form-data", + "Authorization": f"Bearer {token}", + }, + ) + print(response.text) + assert response.status_code == 201 + assert response.json["status"] == "success" + assert response.json["message"] == "All records were successfully imported" + assert response.json["errors"] == [] + assert len(response.json["data"]) == 1 + for index, record_result in enumerate(response.json["data"]): + + for k, f in file_entries.items(): + f["id"] = record_result.get("metadata")["files"]["entries"][k]["id"] + f["checksum"] = record_result.get("metadata")["files"]["entries"][ + k + ]["checksum"] + test_metadata.file_entries = file_entries + + assert record_result.get("item_index") == index + assert record_result.get("record_id") is not None + assert ( + record_result.get("record_url") + == f"{app.config['SITE_UI_URL']}/records/{record_result.get('record_id')}" # noqa: E501 + ) + assert record_result.get("collection_id") in [ + community["id"], + community["slug"], + ] + assert record_result.get("files") == { + f["key"]: ["uploaded", []] for f in file_list + } + assert record_result.get("errors") == [] + + community.update( + { + "links": {}, + "metadata": { + **community["metadata"], + "type": {"id": "event"}, + }, + } + ) # FIXME: Why are links and title not expanded? + test_metadata.community_list = [community] + assert test_metadata.compare_published(record_result.get("metadata")) + + # Check the record in the database + record_id1 = record_result.get("record_id") + rdm_record = records_service.read( + system_identity, id_=record_id1 + ).to_dict() + assert len(rdm_record["files"]["entries"].keys()) == 2 + assert rdm_record["files"]["order"] == [] # FIXME: Why no order list? + assert rdm_record["files"]["total_bytes"] == 1187452 diff --git a/site/tests/conftest.py b/site/tests/conftest.py index 9395868db..28643ae3c 100644 --- a/site/tests/conftest.py +++ b/site/tests/conftest.py @@ -64,7 +64,7 @@ def _(x): "postgresql+psycopg2://kcworks:kcworks@localhost:5432/kcworks" ), "SQLALCHEMY_TRACK_MODIFICATIONS": False, - "SEARCH_INDEX_PREFIX": "", + "SEARCH_INDEX_PREFIX": "", # TODO: Search index prefix triggers errors "POSTGRES_USER": "kcworks", "POSTGRES_PASSWORD": "kcworks", "POSTGRES_DB": "kcworks", @@ -269,16 +269,21 @@ def running_app( ) -@pytest.fixture(scope="function") -def search_clear(search_clear): - """Clear search indices after test finishes (function scope).""" - # # current_search_client.indices.delete(index="*") - # # current_search_client.indices.delete_template("*") - # # list(current_search.create()) - # # list(current_search.put_templates()) - yield search_clear - current_search_client.indices.delete(index="*") - # current_search_client.indices.delete_template("*") +# @pytest.fixture(scope="function") +# def search_clear(search_clear): +# """Clear search indices after test finishes (function scope).""" +# # # current_search_client.indices.delete(index="*") +# # # current_search_client.indices.delete_template("*") +# # # list(current_search.create()) +# # # list(current_search.put_templates()) +# yield search_clear + +# from invenio_vocabularies.records.api import Vocabulary + +# Vocabulary.index.refresh() +# # current_search_client.indices.delete(index="*") + +# # current_search_client.indices.delete_template("*") @pytest.fixture(scope="module") diff --git a/site/tests/fixtures/identifiers.py b/site/tests/fixtures/identifiers.py index be335fe38..9e4684d46 100644 --- a/site/tests/fixtures/identifiers.py +++ b/site/tests/fixtures/identifiers.py @@ -36,8 +36,7 @@ def _(x): "providers": ["datacite"], "required": True, "condition": ( - lambda rec: rec.pids.get("doi", {}).get("provider") - == "datacite" + lambda rec: rec.pids.get("doi", {}).get("provider") == "datacite" ), "label": _("Concept DOI"), "validator": idutils.is_doi, @@ -60,9 +59,7 @@ def _(x): providers.ExternalPIDProvider( "external", "doi", - validators=[ - providers.BlockedPrefixes(config_names=["DATACITE_PREFIX"]) - ], + validators=[providers.BlockedPrefixes(config_names=["DATACITE_PREFIX"])], label=_("DOI"), ), # OAI identifier @@ -82,9 +79,7 @@ def _(x): providers.ExternalPIDProvider( "external", "doi", - validators=[ - providers.BlockedPrefixes(config_names=["DATACITE_PREFIX"]) - ], + validators=[providers.BlockedPrefixes(config_names=["DATACITE_PREFIX"])], label=_("DOI"), ), # OAI identifier @@ -155,6 +150,16 @@ def _(x): "validator": always_valid, "datacite": "Other", }, + "import_id": { + "label": _("Import ID"), + "validator": always_valid, + "datacite": "Other", + }, + "neh_id": { + "label": _("NEH ID"), + "validator": always_valid, + "datacite": "Other", + }, }, "RDM_RECORDS_PERSONORG_SCHEMES": { **RDM_RECORDS_PERSONORG_SCHEMES, diff --git a/site/tests/fixtures/records.py b/site/tests/fixtures/records.py index 5c7cb1d52..f5bf1cfdf 100644 --- a/site/tests/fixtures/records.py +++ b/site/tests/fixtures/records.py @@ -1,3 +1,4 @@ +import copy from pprint import pformat from flask import current_app, Flask import pytest @@ -6,10 +7,12 @@ import datetime from flask_principal import Identity from invenio_access.permissions import system_identity +from invenio_accounts.proxies import current_accounts from invenio_rdm_records.proxies import current_rdm_records_service as records_service from invenio_record_importer_kcworks.utils.utils import replace_value_in_nested_dict from typing import Optional, Any from .files import build_file_links +from .vocabularies.resource_types import RESOURCE_TYPES @pytest.fixture(scope="function") @@ -141,9 +144,104 @@ def _comparison_factory( return _comparison_factory +@pytest.fixture(scope="function") +def record_metadata(running_app): + def _factory( + metadata_in: dict = {}, + app: Flask = current_app, + community_list: list[dict] = [], + file_entries: dict = {}, + owner_id: Optional[str] = "1", + ): + return TestRecordMetadata( + metadata_in=metadata_in, + app=running_app.app, + community_list=community_list, + file_entries=file_entries, + owner_id=owner_id, + ) + + return _factory + + class TestRecordMetadata: + """TestRecordMetadata is a utility class for mocking metadata for a record. + + Given a metadata dictionary like the one required for record creation, an + instance of this class provides several versions of the metadata: + + - `metadata_in` (property): The original metadata submitted for record creation. + - `draft` (property): The metadata as it appears in the record draft. + - `published` (property): The metadata as it appears in the published record. + + The `metadata_in` property can be updated with new values via the `update_metadata` + method. The updates will be reflected in the `draft` and `published` metadata + properties. - default_metadata_in = { + The `draft` and `published` properties are read-only. + + The class also provides comparison methods to check whether a given metadata + dictionary matches the expected metadata for a draft or published record. + - `compare_draft` + - `compare_published` + + This class is intended to be used in conjunction with the function-scoped + `record_metadata` fixture, which will create a new instance of this class + for each test function. + + Usage example: + + ```python + def my_test_function(record_metadata): + test_metadata = record_metadata( + metadata_in={ + "title": "Old Title", + }, + community_list=[], + file_entries={}, + owner_id="1", + ) + + # Update the input metadata on the fly. + test_metadata.update_metadata({"title": "New Title"}) + assert test_metadata.draft["title"] == "New Title" + assert test_metadata.published["title"] == "New Title" + + # Get the draft and published metadata as dictionaries. + metadata_out_draft = test_metadata.draft + metadata_out_published = test_metadata.published + + # Use the compare methods to check whether draft and published metadata + # from test operations match the expected metadata. + # Note that you don't need to pass in the expected metadata as a dictionary, + # just the actual metadata. + test_metadata.compare_draft(my_draft_dict_to_test) + test_metadata.compare_published(my_published_dict_to_test) + + # Compare actual metadata dictionaries with expected metadata dictionaries + # with variations seen in REST API results. + test_metadata.compare_draft_via_api(my_draft_dict_to_test, by_api=True) + test_metadata.compare_published_via_api(my_published_dict_to_test, by_api=True) + ``` + + The input metadata dictionary can include the distinctive content used in the + streamlined import API. For example: + + ```python + metadata_in={ + "parent": { + "access": { + "owned_by": [ + {"email": "test@example.com"}, + {"email": "test2@example.com"}, + ] + }, + }, + } + ``` + """ + + default_metadata_in: dict = { "pids": {}, "access": { "record": "public", @@ -198,9 +296,8 @@ def __init__( owner_id (str, optional): The record owner ID. Defaults to "1". """ self.app = app - starting_metadata_in = TestRecordMetadata.default_metadata_in.copy() - starting_metadata_in.update(metadata_in) - self._metadata_in = starting_metadata_in + starting_metadata_in = copy.deepcopy(TestRecordMetadata.default_metadata_in) + self._metadata_in: dict = metadata_in if metadata_in else starting_metadata_in self.community_list = community_list self.file_entries = file_entries self.owner_id = owner_id @@ -218,18 +315,23 @@ def update_metadata(self, metadata_updates: dict[str, Any] = {}) -> None: self.app.logger.debug(f"updating metadata key {key} with value {val}") new_metadata_in = replace_value_in_nested_dict(self.metadata_in, key, val) self.app.logger.debug(f"new metadata_in: {pformat(new_metadata_in)}") - self._metadata_in = new_metadata_in + self._metadata_in = ( + new_metadata_in + if isinstance(new_metadata_in, dict) + else self.metadata_in + ) @property - def metadata_in(self): + def metadata_in(self) -> dict: """Minimal record data as dict coming from the external world. Fields that can't be set before record creation: """ + self._metadata_in["files"] = {"enabled": False} return self._metadata_in @metadata_in.setter - def metadata_in(self, value): + def metadata_in(self, value: dict) -> None: self._metadata_in = value @staticmethod @@ -265,13 +367,22 @@ def build_draft_record_links(record_id, base_url, ui_base_url): } @staticmethod - def build_published_record_links(record_id, base_url, ui_base_url, parent_id): + def build_published_record_links( + record_id: str, + base_url: str, + ui_base_url: str, + parent_id: str, + record_doi: str = "", + ): + if not record_doi: + record_doi = f"10.17613/{record_id}" + parent_doi = f"10.17613/{parent_id}" links = TestRecordMetadata.build_draft_record_links( record_id, base_url, ui_base_url ) links["archive"] = f"{base_url}/records/{record_id}/files-archive" links["archive_media"] = f"{base_url}/records/{record_id}/media-files-archive" - links["doi"] = f"https://handle.stage.datacite.org/10.17613/{record_id}" + links["doi"] = f"https://handle.stage.datacite.org/{record_doi}" links["draft"] = f"{base_url}/records/{record_id}/draft" links["files"] = f"{base_url}/records/{record_id}/files" links["latest"] = f"{base_url}/records/{record_id}/versions/latest" @@ -281,12 +392,12 @@ def build_published_record_links(record_id, base_url, ui_base_url, parent_id): del links["record"] del links["record_html"] links["parent"] = f"{base_url}/records/{parent_id}" - links["parent_doi"] = f"{ui_base_url}/doi/10.17613/{parent_id}" + links["parent_doi"] = f"{ui_base_url}/doi/{parent_doi}" links["parent_html"] = f"{ui_base_url}/records/{parent_id}" del links["review"] links["self"] = f"{base_url}/records/{record_id}" links["self_html"] = f"{ui_base_url}/records/{record_id}" - links["self_doi"] = f"{ui_base_url}/doi/10.17613/{record_id}" + links["self_doi"] = f"{ui_base_url}/doi/{record_doi}" links["self_iiif_manifest"] = f"{base_url}/iiif/record:{record_id}/manifest" links["self_iiif_sequence"] = ( f"{base_url}/iiif/record:{record_id}/sequence/default" @@ -301,21 +412,28 @@ def draft(self): Fields that can't be set before record creation: """ metadata_out_draft = self.metadata_in.copy() - metadata_out_draft["access"]["embargo"] = {"active": False, "reason": None} - metadata_out_draft["access"]["status"] = "metadata-only" + metadata_out_draft.get("access", {})["embargo"] = { + "active": False, + "reason": None, + } + metadata_out_draft.get("access", {})["status"] = "metadata-only" metadata_out_draft["deletion_status"] = {"is_deleted": False, "status": "P"} - metadata_out_draft["custom_fields"] = {} + metadata_out_draft["custom_fields"] = self.metadata_in.get("custom_fields", {}) metadata_out_draft["is_draft"] = True metadata_out_draft["is_published"] = False + current_resource_type = [ + t + for t in RESOURCE_TYPES + if t["id"] == metadata_out_draft["metadata"]["resource_type"]["id"] + ][0] + metadata_out_draft["metadata"]["resource_type"]["title"] = ( + current_resource_type["title"] + ) metadata_out_draft["versions"] = { "index": 1, "is_latest": False, "is_latest_draft": True, } - metadata_out_draft["metadata"]["resource_type"] = { - "id": "image-photograph", - "title": {"en": "Photo"}, - } metadata_out_draft["media_files"] = { "count": 0, "enabled": False, @@ -434,10 +552,27 @@ def published(self): "is_latest": True, "is_latest_draft": True, } - metadata_out_published["metadata"]["resource_type"] = { - "id": "image-photograph", - "title": {"en": "Photo"}, - } + owners_in = self.metadata_in.get("parent", {}).get("access", {}).get("owned_by") + if isinstance(owners_in, list): # When by import, this is a list of dicts + owner_users = [ + current_accounts.datastore.get_user_by_email(owner["email"]) + for owner in owners_in + ] + metadata_out_published["parent"]["access"]["owned_by"] = ( + {"user": str(owner_users[0].id)} if owner_users else None + ) + if len(owner_users) > 1: + metadata_out_published["parent"]["access"]["grants"] = [ + { + "origin": None, + "subject": { + "id": str(owner.id), + "type": "user", + }, + "permission": "manage", + } + for owner in owner_users[1:] + ] return metadata_out_published def __str__(self): @@ -490,6 +625,7 @@ def compare_published( """ app = self.app expected = self.published.copy() if not expected else expected + if by_api: expected = self._as_via_api(expected) try: @@ -527,6 +663,7 @@ def compare_published( app.config["SITE_API_URL"], app.config["SITE_UI_URL"], actual["parent"]["id"], + actual["pids"]["doi"]["identifier"], ) assert actual["media_files"] == { "count": 0, @@ -594,11 +731,11 @@ def compare_published( assert actual["pids"] == { "doi": { "client": "datacite", - "identifier": f"10.17613/{actual['id']}", + "identifier": f"{actual['pids']['doi']['identifier']}", "provider": "datacite", }, "oai": { - "identifier": f"oai:https://localhost:{actual['id']}", + "identifier": f"oai:{app.config['SITE_UI_URL']}:{actual['id']}", "provider": "oai", }, } @@ -613,7 +750,43 @@ def compare_published( raise e +@pytest.fixture(scope="function") +def record_metadata_with_files(running_app): + def _factory( + metadata_in: dict = {}, + app: Flask = current_app, + community_list: list[dict] = [], + file_entries: dict = {}, + owner_id: Optional[str] = "1", + ): + return TestRecordMetadataWithFiles( + metadata_in=metadata_in, + app=running_app.app, + community_list=community_list, + file_entries=file_entries, + owner_id=owner_id, + ) + + return _factory + + class TestRecordMetadataWithFiles(TestRecordMetadata): + """ + This class extends the TestRecordMetadata class for records with files + + In addition to the usual instantiation arguments, the `file_entries` argument + can be used to provide a dictionary of file entries shaped like the + `files` section of the streamlined import API. For example: + + ```python + file_entries={ + "file1": {"mimetype": "text/plain", "size": 100}, + "file2": {"mimetype": "text/plain", "size": 200}, + } + + The `file_access_status` argument can be used to set the access status of the files. (Default: "open") + ``` + """ def __init__( self, @@ -631,9 +804,8 @@ def __init__( file_entries=file_entries, owner_id=owner_id, ) - starting_metadata_in = TestRecordMetadata.default_metadata_in - starting_metadata_in.update(metadata_in) - self._metadata_in = starting_metadata_in + starting_metadata_in = TestRecordMetadata.default_metadata_in.copy() + self._metadata_in = metadata_in if metadata_in else starting_metadata_in self.record_id = record_id self.file_entries = file_entries self.file_access_status = file_access_status @@ -642,7 +814,7 @@ def __init__( def metadata_in(self): self._metadata_in["files"]["enabled"] = True self._metadata_in["files"]["entries"] = self.file_entries - self._metadata_in["access"]["status"] = self.file_access_status + self._metadata_in.get("access", {})["status"] = self.file_access_status return self._metadata_in def _add_file_entries(self, metadata): diff --git a/site/tests/fixtures/vocabularies/resource_types.py b/site/tests/fixtures/vocabularies/resource_types.py index 728d8dc32..8a81b7bb4 100644 --- a/site/tests/fixtures/vocabularies/resource_types.py +++ b/site/tests/fixtures/vocabularies/resource_types.py @@ -8,9 +8,7 @@ @pytest.fixture(scope="module") def resource_type_type(app): """Resource type vocabulary type.""" - return vocabulary_service.create_type( - system_identity, "resourcetypes", "rsrct" - ) + return vocabulary_service.create_type(system_identity, "resourcetypes", "rsrct") RESOURCE_TYPES = [ diff --git a/site/tests/fixtures/vocabularies/subjects.py b/site/tests/fixtures/vocabularies/subjects.py index 1661cf54a..c96baf10a 100644 --- a/site/tests/fixtures/vocabularies/subjects.py +++ b/site/tests/fixtures/vocabularies/subjects.py @@ -187,11 +187,6 @@ def subjects_service(app): "scheme": "FAST-topical", "subject": "East Asian literature", }, - { - "id": "http://id.worldcat.org/fast/1047055", - "scheme": "FAST-topical", - "subject": "Oral history", - }, { "id": "http://id.worldcat.org/fast/1710945", "scheme": "FAST-topical", diff --git a/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py b/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py index bd0f0acac..b268ae30b 100644 --- a/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py +++ b/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py @@ -36,16 +36,16 @@ "pages": "57-74", "title": "Habad Hasidism: History, Thought, Image", }, - "hclegacy:groups_for_deposit": [ - { - "group_identifier": "1000610", - "group_name": "Jewish Mysticism", - }, - { - "group_identifier": "1000611", - "group_name": "Modern Jewish Thought and Theology", - }, - ], + # "hclegacy:groups_for_deposit": [ + # { + # "group_identifier": "1000610", + # "group_name": "Jewish Mysticism", + # }, + # { + # "group_identifier": "1000611", + # "group_name": "Modern Jewish Thought and Theology", + # }, + # ], "hclegacy:record_change_date": "2019-01-29T03:57:00Z", "hclegacy:record_creation_date": "2019-01-29T03:57:00Z", }, diff --git a/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py b/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py index 0df725710..c06e62a77 100644 --- a/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py +++ b/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py @@ -10,25 +10,12 @@ "female_agency_ophelia.pdf" ), "hclegacy:file_pid": "hc:11452", - "hclegacy:groups_for_deposit": [ - { - "group_identifier": "174", - "group_name": ("East Asian Languages and Literatures after 1900"), - }, - { - "group_identifier": "246", - "group_name": "Global Shakespeares", - }, - { - "group_identifier": "97", - "group_name": "GS Drama and Performance", - }, - {"group_identifier": "25", "group_name": "LLC Shakespeare"}, - { - "group_identifier": "91", - "group_name": "TC Translation Studies", - }, - ], + # "hclegacy:groups_for_deposit": [ + # { + # "group_identifier": "174", + # "group_name": ("East Asian Languages and Literatures after 1900"), + # }, + # ], "hclegacy:submitter_id": "49", "hclegacy:previously_published": "published", "hclegacy:record_change_date": "2017-09-16T16:41:52Z", diff --git a/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py b/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py index dd7b09120..fcf7882f2 100644 --- a/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py +++ b/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py @@ -6,7 +6,7 @@ "record": "public", "status": "embargoed", }, - "created": "2020-11-25T12:35:10Z", + # "created": "2020-11-25T12:35:10Z", "custom_fields": { "hclegacy:collection": "hccollection:1", "hclegacy:file_location": ( @@ -16,24 +16,24 @@ "pdf" ), "hclegacy:file_pid": "hc:33384", - "hclegacy:groups_for_deposit": [ - { - "group_identifier": "1004129", - "group_name": "Arabic script manuscripts", - }, - { - "group_identifier": "1001234", - "group_name": "Islamicate Studies", - }, - { - "group_identifier": "1000753", - "group_name": "Medieval Studies", - }, - { - "group_identifier": "1000830", - "group_name": "Science Studies and the History of Science", - }, - ], + # "hclegacy:groups_for_deposit": [ + # { + # "group_identifier": "1004129", + # "group_name": "Arabic script manuscripts", + # }, + # { + # "group_identifier": "1001234", + # "group_name": "Islamicate Studies", + # }, + # { + # "group_identifier": "1000753", + # "group_name": "Medieval Studies", + # }, + # { + # "group_identifier": "1000830", + # "group_name": "Science Studies and the History of Science", + # }, + # ], "hclegacy:previously_published": "published", "hclegacy:record_change_date": "2023-01-23T14:20:48Z", "hclegacy:record_creation_date": "2020-11-25T12:35:10Z", @@ -225,7 +225,26 @@ "University" ), }, - "parent": {"access": {"owned_by": [{"user": "1008812"}]}}, + "parent": { + "access": { + "owned_by": [ + { + "email": "test@example.com", + "identifiers": [ + {"identifier": "jdoe", "scheme": "kc_username"}, + ], + }, + { + "full_name": "John Doe", + "email": "john.doe@example.com", + "identifiers": [ + {"identifier": "0000-0000-0000-0000", "scheme": "orcid"}, + {"identifier": "jdoe", "scheme": "kc_username"}, + ], + }, + ] + } + }, "pids": { "doi": { "client": "datacite", @@ -233,7 +252,7 @@ "provider": "datacite", } }, - "updated": "2023-01-23T14:20:48Z", + # "updated": "2023-01-23T14:20:48Z", }, "expected_serialized": { "record_source": "knowledgeCommons", From 2285f204b0aee0b3bb42f1303e6ca6f7fdaca201 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Thu, 13 Feb 2025 21:12:13 -0500 Subject: [PATCH 09/22] feature(neh; import): Work in progress on import API endpoint; improved test setup; more real-life test data; assigning ownership via access grants; initial validation error handling --- invenio.cfg | 18 +- .../invenio-record-importer-kcworks | 2 +- site/tests/api/test_api_import.py | 576 ++++++++++++++---- site/tests/conftest.py | 44 +- site/tests/fixtures/files.py | 29 +- site/tests/fixtures/identifiers.py | 18 +- site/tests/fixtures/records.py | 10 +- .../fixtures/vocabularies/resource_types.py | 11 +- site/tests/helpers/sample_files/sample.csv | 101 +++ site/tests/helpers/sample_files/sample2.pdf | Bin 0 -> 13264 bytes .../sample_metadata_chapter2_pdf.py | 30 +- .../sample_metadata_chapter_pdf.py | 24 +- .../sample_metadata_journal_article2_pdf.py | 13 +- .../sample_metadata_journal_article_pdf.py | 14 +- 14 files changed, 697 insertions(+), 193 deletions(-) create mode 100644 site/tests/helpers/sample_files/sample.csv create mode 100644 site/tests/helpers/sample_files/sample2.pdf diff --git a/invenio.cfg b/invenio.cfg index aa8b3e2b6..83841617a 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -1250,13 +1250,13 @@ RDM_RECORDS_IDENTIFIERS_SCHEMES.update( "validator": idutils.is_doi, "datacite": "Other", }, - "import_id": { - "label": _("Import ID"), + "import-recid": { + "label": _("Import record ID"), "validator": always_valid, "datacite": "Other", }, - "neh_id": { - "label": _("NEH ID"), + "neh-recid": { + "label": _("NEH record ID"), "validator": always_valid, "datacite": "Other", }, @@ -1285,6 +1285,16 @@ RDM_RECORDS_PERSONORG_SCHEMES.update( "validator": always_valid, "datacite": "Other", }, + "neh_user_id": { + "label": _("NEH user ID"), + "validator": always_valid, + "datacite": "Other", + }, + "import_user_id": { + "label": _("Import user ID"), + "validator": always_valid, + "datacite": "Other", + }, } ) diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index 66a0f8166..19e2e0edf 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit 66a0f816615b302c060932f4dabcb7fda73e9a59 +Subproject commit 19e2e0edff3414887a06de3780c3e29114cc3515 diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index 9c7bbd7c7..68dc67c9b 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -1,4 +1,8 @@ +from invenio_vocabularies.proxies import current_service as current_vocabulary_service +from invenio_vocabularies.records.api import Vocabulary +from invenio_access.permissions import system_identity import copy +from flask import Flask from flask_login import login_user from invenio_access.permissions import authenticated_user, system_identity from invenio_access.utils import get_identity @@ -27,13 +31,13 @@ # sample_metadata_conference_proceedings_pdf, # sample_metadata_interview_transcript_pdf, sample_metadata_journal_article_pdf, - # sample_metadata_journal_article2_pdf, + sample_metadata_journal_article2_pdf, # sample_metadata_thesis_pdf, # sample_metadata_white_paper_pdf, ) -class BaseImportRecordsLoaderLoadTest: +class BaseImportLoaderTest: """Base class for testing record imports with different metadata sources.""" @property @@ -137,6 +141,7 @@ def check_result_assigned_owners( elif result.status == "new_record": assert result.assigned_owners == { "owner_id": user_id, + "owner_email": "test@example.com", "owner_type": "user", "access_grants": [], } @@ -151,6 +156,7 @@ def check_result_submitted( self, result: LoaderResult, test_metadata: TestRecordMetadata, + app, ): """Check the submitted of the result.""" submitted_data = copy.deepcopy(test_metadata.metadata_in) @@ -162,24 +168,67 @@ def check_result_submitted( # record creation because we will be adding it back in later if submitted_data.get("files", {}).get("entries"): submitted_data["files"].pop("entries") + # Add an empty "access" field to the expected submitted data + # if it wasn't present in the sample data, since it gets added + # by the loader + if not submitted_data.get("access"): + submitted_data["access"] = {} assert result.submitted["data"] == submitted_data - assert result.submitted["files"] == test_metadata.metadata_in["files"] + # The test sometimes adds checksums and ids to the input file list + # so we need to remove them for the comparison + submitted_files = copy.deepcopy(test_metadata.metadata_in["files"]) + if submitted_files.get("entries"): + submitted_files["entries"] = { + k: {k: v for k, v in v.items() if k != "checksum" and k != "id"} + for k, v in submitted_files["entries"].items() + } + assert result.submitted["files"] == submitted_files assert result.submitted["owners"] == test_metadata.metadata_in.get( "parent", {} ).get("access", {}).get("owned_by", []) + def check_result_errors(self, result: LoaderResult): + """Check the errors of the result.""" + assert result.errors == [] + def test_import_records_loader_load( self, - running_app, db, + running_app, + search_clear, minimal_community_factory, user_factory, record_metadata, mock_send_remote_api_update_fixture, celery_worker, - search_clear, ): app = running_app.app + + # find the resource type id for "textDocument" + rt = current_vocabulary_service.read( + system_identity, + id_=("resourcetypes", "textDocument-journalArticle"), + ) + app.logger.debug(f"textDocument rec: {pformat(rt.to_dict())}") + + Vocabulary.index.refresh() + + # Search for all resourcetypes + search_result = current_vocabulary_service.search( + system_identity, + type="resourcetypes", + ) + app.logger.debug(f"search_result: {pformat(search_result.to_dict())}") + + # Get the hits from the search result + resource_types = search_result.to_dict()["hits"]["hits"] + + # Print each resource type + for rt in resource_types: + app.logger.debug( + f"resource type: ID: {rt['id']}, Title: {rt['title']['en']}" + ) + # Get the email of the first owner of the record if owners are specified owners = ( self.metadata_source.get("parent", {}).get("access", {}).get("owned_by", []) @@ -220,25 +269,21 @@ def test_import_records_loader_load( user_id=user_id, community_id=community["id"] ).load(index=0, import_data=copy.deepcopy(test_metadata.metadata_in)) - self.check_result_submitted(result, test_metadata) - + assert result.log_object + assert result.source_id + self.check_result_submitted(result, test_metadata, app) self.check_result_record_created(result, test_metadata) - self.check_result_status(result) - self.check_result_primary_community(result, community) - self.check_result_existing_record(result) - self.check_result_uploaded_files(result) community.update({"links": {}}) # FIXME: Why are links not expanded? self.check_result_community_review_result(result, community, test_metadata) - self.check_result_assigned_owners(result, user_id, test_metadata, app) - self.check_result_added_to_collections(result) + self.check_result_errors(result) # class TestImportLoaderLoadThesisPDF(BaseImportRecordsLoaderLoadTest): @@ -259,22 +304,15 @@ def test_import_records_loader_load( # return sample_metadata_chapter2_pdf["input"] -class TestImportLoaderLoadJournalArticlePDF(BaseImportRecordsLoaderLoadTest): +class TestImportLoaderJArticle(BaseImportLoaderTest): @property def metadata_source(self): return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) -class TestImportLoaderLoadJournalArticleBadTitle(BaseImportRecordsLoaderLoadTest): - """Test importing a journal article with an empty title.""" - - @property - def metadata_source(self): - return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) - - def modify_metadata(self, test_metadata: TestRecordMetadata): - test_metadata.update_metadata({"metadata|title": ""}) +class BaseImportLoaderErrorTest(BaseImportLoaderTest): + """Base class for testing record imports with errors.""" def check_result_status(self, result: LoaderResult): """Check the status of the result.""" @@ -297,15 +335,73 @@ def check_result_community_review_result( assert result.community_review_result == {} -class BaseImportRecordsLoaderLoadWithFilesTest: - """Base class for testing record imports with files.""" +class TestImportLoaderJArticleErrorTitle(BaseImportLoaderErrorTest): + """Test importing a journal article with an empty title.""" @property def metadata_source(self): - """Override this in subclasses to provide specific metadata.""" - raise NotImplementedError + return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) + + def modify_metadata(self, test_metadata: TestRecordMetadata): + test_metadata.update_metadata({"metadata|title": ""}) + + def check_result_errors(self, result: LoaderResult): + """Check the errors of the result.""" + assert result.errors == [ + { + "validation_error": { + "metadata": {"title": ["Missing data for required field."]} + } + } + ] + + +class TestImportLoaderJArticleErrorIDScheme(BaseImportLoaderErrorTest): + """Test importing a journal article with an empty title.""" + + @property + def metadata_source(self): + return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) + + def modify_metadata(self, test_metadata: TestRecordMetadata): + test_metadata.update_metadata( + { + "metadata|identifiers": [ + {"identifier": "hc:33383", "scheme": "made-up-scheme"} + ] + } + ) + + def check_result_errors(self, result: LoaderResult): + """Check the errors of the result.""" + assert result.errors == [ + { + "validation_error": { + "metadata": {"identifiers": {0: {"scheme": "Invalid scheme."}}} + } + } + ] - def test_import_records_loader_load_with_files( + +class BaseImportLoaderWithFilesTest(BaseImportLoaderTest): + """Base class for testing record imports with files.""" + + def check_result_uploaded_files(self, result: LoaderResult): + """Check the uploaded files of the result.""" + assert result.uploaded_files == { + "sample.jpg": ["uploaded", []], + "sample.pdf": ["uploaded", []], + } + + def check_result_record_created( + self, result: LoaderResult, test_metadata: TestRecordMetadata + ): + """Check the record created of the result.""" + assert test_metadata.compare_published(result.record_created["record_data"]) + # assert result.record_created["record_data"]["revision_id"] == 4 + # FIXME: sometimes 3, sometimes 4 + + def test_import_records_loader_load( self, running_app, db, @@ -317,6 +413,31 @@ def test_import_records_loader_load_with_files( celery_worker, ): app = running_app.app + + # find the resource type id for "textDocument" + rt = current_vocabulary_service.read( + system_identity, + id_=("resourcetypes", "textDocument-journalArticle"), + ) + app.logger.debug(f"textDocument rec: {pformat(rt.to_dict())}") + + Vocabulary.index.refresh() + # Search for all resourcetypes + search_result = current_vocabulary_service.search( + system_identity, + type="resourcetypes", + ) + app.logger.debug(f"search_result: {pformat(search_result.to_dict())}") + + # Get the hits from the search result + resource_types = search_result.to_dict()["hits"]["hits"] + + # Print each resource type + for rt in resource_types: + app.logger.debug( + f"resource type: ID: {rt['id']}, Title: {rt['title']['en']}" + ) + u = user_factory(email="test@example.com", token=True, saml_id=None) user_id = u.user.id identity = get_identity(u.user) @@ -404,7 +525,7 @@ def test_import_records_loader_load_with_files( user_id=user_id, community_id=community["id"] ).load( index=0, - import_data=test_metadata.metadata_in, + import_data=copy.deepcopy(test_metadata.metadata_in), files=files, ) file1.close() @@ -420,42 +541,19 @@ def test_import_records_loader_load_with_files( ] test_metadata.file_entries = file_entries test_metadata.record_id = record_created_id - metadata_expected = test_metadata.published - - # check result.status - assert result.status == "new_record" - - # check result.primary_community - assert result.primary_community["id"] == community["id"] - assert result.primary_community["metadata"]["title"] == "My Community" - assert result.primary_community["slug"] == "my-community" - - # check result.record_created - assert test_metadata.compare_published(result.record_created["record_data"]) - - # check result.uploaded_files - assert result.uploaded_files == { - "sample.jpg": ["uploaded", []], - "sample.pdf": ["uploaded", []], - } - # check result.community_review_result - assert result.community_review_result["is_closed"] - assert not result.community_review_result["is_expired"] - assert not result.community_review_result["is_open"] - assert ( - result.community_review_result["receiver"]["community"] == community["id"] - ) - - # check result.assigned_owners - assert result.assigned_owners == { - "owner_id": user_id, - "owner_type": "user", - "access_grants": [], - } - - # check result.added_to_collections - assert result.added_to_collections == [] + self.check_result_status(result) + self.check_result_primary_community(result, community) + self.check_result_existing_record(result) + self.check_result_record_created(result, test_metadata) + self.check_result_uploaded_files(result) + self.check_result_community_review_result(result, community, test_metadata) + self.check_result_assigned_owners(result, user_id, test_metadata, app) + self.check_result_added_to_collections(result) + self.check_result_submitted(result, test_metadata, app) + self.check_result_errors(result) + assert result.log_object + assert result.source_id # now check the record in the database/search rdm_record = records_service.read( @@ -463,7 +561,7 @@ def test_import_records_loader_load_with_files( ).to_dict() assert rdm_record["files"] == { k: v - for k, v in metadata_expected["files"].items() + for k, v in test_metadata.published["files"].items() if k != "default_preview" } @@ -476,7 +574,6 @@ def test_import_records_loader_load_with_files( "sample.jpg/content" ) assert file_response2.status_code == 200 - app.logger.debug(file_response2.headers) assert ( "inline" in file_response2.headers["Content-Disposition"] ) # FIXME: why not attachment? @@ -512,36 +609,205 @@ def test_import_records_loader_load_with_files( file2.close() -class TestImportLoaderLoadWithFilesChapterPDF(BaseImportRecordsLoaderLoadWithFilesTest): - @property - def metadata_source(self): - return sample_metadata_chapter_pdf["input"] - - -class TestImportLoaderLoadWithFilesChapter2PDF( - BaseImportRecordsLoaderLoadWithFilesTest -): - @property - def metadata_source(self): - return sample_metadata_chapter2_pdf["input"] +# class TestImportLoaderLoadWithFilesChapterPDF(BaseImportLoaderWithFilesTest): +# @property +# def metadata_source(self): +# return copy.deepcopy(sample_metadata_chapter_pdf["input"]) -# class TestImportLoaderLoadWithFilesJournalArticlePDF( -# BaseImportRecordsLoaderLoadWithFilesTest -# ): +# class TestImportLoaderLoadWithFilesChapter2PDF(BaseImportLoaderWithFilesTest): # @property # def metadata_source(self): -# return sample_metadata_journal_article_pdf["input"] +# return copy.deepcopy(sample_metadata_chapter2_pdf["input"]) -class BaseImportRecordsServiceLoadTest: +class TestImportLoaderWithFilesJArticle(BaseImportLoaderWithFilesTest): + @property + def metadata_source(self): + return sample_metadata_journal_article_pdf["input"] + + +class BaseImportServiceTest: """Base class for testing record imports with the service.""" @property - def metadata_source(self): + def metadata_sources(self): """Override this in subclasses to provide specific metadata.""" raise NotImplementedError + @property + def expected_errors(self): + """Override this in subclasses to provide specific expected errors.""" + return [[]] * len(self.metadata_sources) + + def check_result_status(self, import_results: dict): + assert len(import_results["data"]) == len(self.metadata_sources) + assert import_results.get("status") == "success" + assert import_results.get("message") == "All records were successfully imported" + + def check_result_errors(self, import_results: dict): + assert import_results.get("errors") == [] + + def _check_successful_import( + self, + actual: dict, + app: Flask, + record_files: list, + expected: TestRecordMetadata, + community: dict, + uploader_id: str, + ): + actual_metadata = actual.get("metadata") + assert actual_metadata + + actual_record_id = actual.get("record_id") + assert actual_record_id + + actual_record_url = actual.get("record_url") + assert ( + actual_record_url + == f"{app.config['SITE_UI_URL']}/records/{actual_record_id}" + ) + + actual_collection_id = actual.get("collection_id") + assert actual_collection_id == community["id"] + assert actual_collection_id == actual_metadata.get("parent", {}).get( + "communities", {} + ).get("entries", [])[0].get("id") + + assert actual.get("errors") == [] + + # comparing file list separately from file entries in metadata + actual_files = actual.get("files") + assert actual_files == { + f.filename.split("/")[-1]: ["uploaded", []] for f in record_files + } + + # add ids and checksums from actual file entries to the expected + # file entries to compare file entries in metadata + for k, f in expected.file_entries.items(): + f["id"] = actual_metadata["files"]["entries"][k]["id"] + f["checksum"] = actual_metadata["files"]["entries"][k]["checksum"] + assert expected.compare_published(actual_metadata) + + # check owners + expected_owners = ( + expected.metadata_in.get("parent", {}).get("access", {}).get("owned_by") + ) + if expected_owners: + first_expected_owner = expected.metadata_in["parent"]["access"]["owned_by"][ + 0 + ] + first_actual_owner = current_accounts.datastore.get_user_by_id( + actual_metadata["parent"]["access"]["owned_by"]["user"] + ) + assert first_actual_owner.email == first_expected_owner["email"] + if len(expected_owners) > 1: + other_expected_owners = expected.metadata_in["parent"]["access"][ + "owned_by" + ][1:] + other_actual_owners = actual_metadata["parent"]["access"]["grants"] + for oe, oa in zip(other_expected_owners, other_actual_owners): + user = current_accounts.datastore.get_user_by_email(oe["email"]) + assert oa["subject"]["id"] == str(user.id) + assert user.email == oe["email"] + + if oe.get("identifiers"): + kc_username = next( + ( + i["identifier"] + for i in oe["identifiers"] + if i["scheme"] == "kc_username" + ), + None, + ) + orcid = next( + ( + i["identifier"] + for i in oe["identifiers"] + if i["scheme"] == "orcid" + ), + None, + ) + neh_id = next( + ( + i["identifier"] + for i in oe["identifiers"] + if i["scheme"] == "neh_user_id" + ), + None, + ) + import_id = next( + ( + i["identifier"] + for i in oe["identifiers"] + if i["scheme"] == "import_user_id" + ), + None, + ) + if kc_username: + assert user.username in [ + kc_username, + f"knowledgeCommons-{kc_username}", + ] + if orcid: + assert user.user_profile["identifier_orcid"] == orcid + if neh_id: + other_user_ids = json.loads( + user.user_profile["identifier_other"] + ) + assert neh_id in other_user_ids.values() + if import_id: + other_user_ids = json.loads( + user.user_profile["identifier_other"] + ) + assert import_id in other_user_ids.values() + else: + assert actual_metadata["parent"]["access"]["owned_by"] == { + "user": uploader_id + } + assert actual_metadata["parent"]["access"]["grants"] == [] + + def _check_failed_import( + self, import_result: dict, expected_error_list: list[dict] + ): + assert import_result["status"] == "error" + assert import_result.get("errors") == expected_error_list + + def check_result_data( + self, + import_results: dict, + app: Flask, + files: list, + metadata_sources: list, + community: dict, + expected_errors: list, + uploader_id: str, + ): + assert len(import_results["data"]) + len(import_results["errors"]) == len( + metadata_sources + ) + files_per_item = len(files) // len(metadata_sources) + for idx, record_result in enumerate(import_results["data"]): + expected_error_list = expected_errors[idx] + + record_files = files[idx * files_per_item : (idx + 1) * files_per_item] + app.logger.info(f"record_files in check_result_data: {record_files}") + + assert record_result["item_index"] == idx + + if expected_error_list: + self._check_failed_import(record_result, expected_error_list) + else: + self._check_successful_import( + record_result, + app, + record_files, + metadata_sources[idx], + community, + uploader_id, + ) + def test_import_records_service_load( self, running_app, @@ -571,9 +837,15 @@ def test_import_records_service_load( / "tests/helpers/sample_files/sample.pdf", Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.jpg", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample2.pdf", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.csv", ] file1 = open(file_paths[0], "rb") file2 = open(file_paths[1], "rb") + file3 = open(file_paths[2], "rb") + file4 = open(file_paths[3], "rb") files = [ FileData( filename=str( @@ -595,6 +867,26 @@ def test_import_records_service_load( mimetype="image/jpeg", mimetype_params={}, ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample2.pdf" + ), + stream=file3, + content_type="application/pdf", + mimetype="application/pdf", + mimetype_params={}, + ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.csv" + ), + stream=file4, + content_type="text/csv", + mimetype="text/csv", + mimetype_params={}, + ), ] file_list = [ { @@ -607,71 +899,101 @@ def test_import_records_service_load( "mimetype": "image/jpeg", "size": 1174188, }, + { + "key": "sample2.pdf", + "mimetype": "application/pdf", + "size": 13264, # FIXME: Check reporting of mismatch + }, + { + "key": "sample.csv", + "mimetype": "text/csv", + "size": 17261, + }, ] - file_entries = {f["key"]: f for f in file_list} - test_metadata = TestRecordMetadataWithFiles( - metadata_in=self.metadata_source, - community_list=[community], - owner_id=u.user.id, - file_entries=file_entries, - ) + metadata_sources = [] + for idx, d in enumerate(self.metadata_sources): + files_per_item = len(file_list) // len(self.metadata_sources) + item_files = file_list[idx * files_per_item : (idx + 1) * files_per_item] + app.logger.info(f"item_files: {item_files}") + file_entries = {f["key"]: f for f in item_files} + app.logger.info(f"file_entries: {file_entries}") + test_metadata = TestRecordMetadataWithFiles( + metadata_in=d, + community_list=[community], + owner_id=u.user.id, + file_entries=file_entries, + ) - test_metadata.update_metadata( - { - "metadata|identifiers": [ - {"identifier": "1234567890", "scheme": "import_id"} - ] - } - ) + test_metadata.update_metadata( + { + "metadata|identifiers": [ + { + "identifier": f"1234567890{str(idx)}", + "scheme": "neh-recid", + } + ] + } + ) + metadata_sources.append(test_metadata) service = current_record_importer_service import_results = service.import_records( file_data=files, - metadata=[test_metadata.metadata_in], + metadata=[copy.deepcopy(m.metadata_in) for m in metadata_sources], user_id=user_id, community_id=community["id"], ) file1.close() file2.close() + file3.close() + file4.close() + + self.check_result_status(import_results) + self.check_result_errors(import_results) + self.check_result_data( + import_results, + app, + files, + metadata_sources, + community, + self.expected_errors, + user_id, + ) - assert import_results.get("status") == "success" - assert len(import_results["data"]) == 1 - assert import_results.get("message") == "All records were successfully imported" - assert import_results.get("errors") == [] - record_result1 = import_results["data"][0] - record_id1 = record_result1.get("record_id") - assert record_id1 - assert ( - record_result1.get("record_url") - == f"{app.config['SITE_UI_URL']}/records/{record_id1}" - ) - assert record_result1.get("files") == { - "sample.jpg": ["uploaded", []], - "sample.pdf": ["uploaded", []], - } - assert record_result1.get("errors") == [] - assert record_result1.get("collection_id") == community["id"] - result_metadata1 = record_result1.get("metadata") +# class TestImportServiceChapter(BaseImportRecordsServiceLoadTest): +# @property +# def metadata_source(self): +# return sample_metadata_chapter_pdf["input"] - # add ids and checksums from actual file entries to the expected file entries - for k, f in file_entries.items(): - f["id"] = result_metadata1["files"]["entries"][k]["id"] - f["checksum"] = result_metadata1["files"]["entries"][k]["checksum"] - assert test_metadata.compare_published(result_metadata1) + +# class TestImportServiceChapter2(BaseImportRecordsServiceLoadTest): +# @property +# def metadata_source(self): +# return sample_metadata_chapter2_pdf["input"] -class TestImportRecordsServiceMetadataOnlyChapter(BaseImportRecordsServiceLoadTest): +class TestImportServiceJArticle(BaseImportServiceTest): @property - def metadata_source(self): - return sample_metadata_chapter_pdf["input"] + def metadata_sources(self): + return [ + sample_metadata_journal_article_pdf["input"], + sample_metadata_journal_article2_pdf["input"], + ] -class TestImportRecordsServiceMetadataOnlyChapter2(BaseImportRecordsServiceLoadTest): +class BaseImportServiceErrorTest(BaseImportServiceTest): + """Base class for testing record imports with errors.""" + + def check_result_errors(self, import_results: dict): + assert import_results.get("errors") == [] + + +class TestImportServiceJArticleErrorTitle(BaseImportServiceErrorTest): @property - def metadata_source(self): + def metadata_sources(self): return sample_metadata_chapter2_pdf["input"] diff --git a/site/tests/conftest.py b/site/tests/conftest.py index 28643ae3c..f3e2fb079 100644 --- a/site/tests/conftest.py +++ b/site/tests/conftest.py @@ -269,21 +269,21 @@ def running_app( ) -# @pytest.fixture(scope="function") -# def search_clear(search_clear): -# """Clear search indices after test finishes (function scope).""" -# # # current_search_client.indices.delete(index="*") -# # # current_search_client.indices.delete_template("*") -# # # list(current_search.create()) -# # # list(current_search.put_templates()) -# yield search_clear +@pytest.fixture(scope="function") +def search_clear(search_clear): + """Clear search indices after test finishes (function scope).""" + # # # current_search_client.indices.delete(index="*") + # # # current_search_client.indices.delete_template("*") + # # # list(current_search.create()) + # # # list(current_search.put_templates()) + yield search_clear -# from invenio_vocabularies.records.api import Vocabulary + # FIXME: Resource types are getting deleted from the index after + # class finishes -# Vocabulary.index.refresh() -# # current_search_client.indices.delete(index="*") + # # current_search_client.indices.delete(index="*") -# # current_search_client.indices.delete_template("*") + # # current_search_client.indices.delete_template("*") @pytest.fixture(scope="module") @@ -319,19 +319,19 @@ def app( app_config, database, search, - affiliations_v, + # affiliations_v, # awards_v, - community_type_v, - contributors_role_v, - creators_role_v, - date_type_v, - description_type_v, + # community_type_v, + # contributors_role_v, + # creators_role_v, + # date_type_v, + # description_type_v, # funders_v, - language_v, - licenses_v, + # language_v, + # licenses_v, # relation_type_v, - resource_type_v, - subject_v, + # resource_type_v, + # subject_v, # title_type_v, template_loader, admin_roles, diff --git a/site/tests/fixtures/files.py b/site/tests/fixtures/files.py index 627e45c24..afc4d6ad5 100644 --- a/site/tests/fixtures/files.py +++ b/site/tests/fixtures/files.py @@ -1,4 +1,5 @@ import hashlib +import os def file_md5(bytes_object): @@ -6,14 +7,26 @@ def file_md5(bytes_object): def build_file_links(record_id, base_api_url, filename): - return { + extension = os.path.splitext(filename)[1] + + links = { "content": f"{base_api_url}/records/{record_id}/files/{filename}/content", - "iiif_api": ( - f"{base_api_url}/iiif/record:{record_id}:{filename}/full/full/0/" - "default.png" - ), - "iiif_base": f"{base_api_url}/iiif/record:{record_id}:{filename}", - "iiif_canvas": f"{base_api_url}/iiif/record:{record_id}/canvas/{filename}", - "iiif_info": f"{base_api_url}/iiif/record:{record_id}:{filename}/info.json", "self": f"{base_api_url}/records/{record_id}/files/{filename}", } + if extension not in [".csv", ".zip"]: + links.update( + { + "iiif_api": ( + f"{base_api_url}/iiif/record:{record_id}:{filename}/full/full/0/" + "default.png" + ), + "iiif_base": f"{base_api_url}/iiif/record:{record_id}:{filename}", + "iiif_canvas": ( + f"{base_api_url}/iiif/record:{record_id}/canvas/{filename}" + ), + "iiif_info": ( + f"{base_api_url}/iiif/record:{record_id}:{filename}/info.json" + ), + } + ) + return links diff --git a/site/tests/fixtures/identifiers.py b/site/tests/fixtures/identifiers.py index 9e4684d46..bcd8d8440 100644 --- a/site/tests/fixtures/identifiers.py +++ b/site/tests/fixtures/identifiers.py @@ -150,13 +150,13 @@ def _(x): "validator": always_valid, "datacite": "Other", }, - "import_id": { - "label": _("Import ID"), + "import-recid": { + "label": _("Import Record ID"), "validator": always_valid, "datacite": "Other", }, - "neh_id": { - "label": _("NEH ID"), + "neh-recid": { + "label": _("NEH Record ID"), "validator": always_valid, "datacite": "Other", }, @@ -183,6 +183,16 @@ def _(x): "validator": always_valid, "datacite": "Other", }, + "neh_user_id": { + "label": _("NEH user ID"), + "validator": always_valid, + "datacite": "Other", + }, + "import_user_id": { + "label": _("Import user ID"), + "validator": always_valid, + "datacite": "Other", + }, }, "VOCABULARIES_IDENTIFIER_SCHEMES": { "grid": {"label": _("GRID"), "validator": lambda x: True}, diff --git a/site/tests/fixtures/records.py b/site/tests/fixtures/records.py index f5bf1cfdf..781ce6975 100644 --- a/site/tests/fixtures/records.py +++ b/site/tests/fixtures/records.py @@ -330,10 +330,6 @@ def metadata_in(self) -> dict: self._metadata_in["files"] = {"enabled": False} return self._metadata_in - @metadata_in.setter - def metadata_in(self, value: dict) -> None: - self._metadata_in = value - @staticmethod def build_draft_record_links(record_id, base_url, ui_base_url): return { @@ -411,7 +407,7 @@ def draft(self): Fields that can't be set before record creation: """ - metadata_out_draft = self.metadata_in.copy() + metadata_out_draft = copy.deepcopy(self.metadata_in) metadata_out_draft.get("access", {})["embargo"] = { "active": False, "reason": None, @@ -423,7 +419,7 @@ def draft(self): metadata_out_draft["is_published"] = False current_resource_type = [ t - for t in RESOURCE_TYPES + for t in copy.deepcopy(RESOURCE_TYPES) if t["id"] == metadata_out_draft["metadata"]["resource_type"]["id"] ][0] metadata_out_draft["metadata"]["resource_type"]["title"] = ( @@ -544,7 +540,7 @@ def published(self): Fields that can't be set before record creation: """ - metadata_out_published = self.draft.copy() + metadata_out_published = copy.deepcopy(self.draft) metadata_out_published["is_draft"] = False metadata_out_published["is_published"] = True metadata_out_published["versions"] = { diff --git a/site/tests/fixtures/vocabularies/resource_types.py b/site/tests/fixtures/vocabularies/resource_types.py index 8a81b7bb4..2e2119057 100644 --- a/site/tests/fixtures/vocabularies/resource_types.py +++ b/site/tests/fixtures/vocabularies/resource_types.py @@ -1,6 +1,8 @@ +import copy import pytest from invenio_access.permissions import system_identity +from invenio_pidstore.errors import PIDAlreadyExists from invenio_vocabularies.records.api import Vocabulary from invenio_vocabularies.proxies import current_service as vocabulary_service @@ -250,9 +252,14 @@ def resource_type_type(app): @pytest.fixture(scope="module") -def resource_type_v(app, resource_type_type): +def resource_types(): + return copy.deepcopy(RESOURCE_TYPES) + + +@pytest.fixture(scope="module") +def resource_type_v(app, resource_type_type, resource_types): """Resource type vocabulary record.""" - for resource_type in RESOURCE_TYPES: + for resource_type in resource_types: vocabulary_service.create(system_identity, resource_type) Vocabulary.index.refresh() diff --git a/site/tests/helpers/sample_files/sample.csv b/site/tests/helpers/sample_files/sample.csv new file mode 100644 index 000000000..2041c1594 --- /dev/null +++ b/site/tests/helpers/sample_files/sample.csv @@ -0,0 +1,101 @@ +Index,Customer Id,First Name,Last Name,Company,City,Country,Phone 1,Phone 2,Email,Subscription Date,Website +1,DD37Cf93aecA6Dc,Sheryl,Baxter,Rasmussen Group,East Leonard,Chile,229.077.5154,397.884.0519x718,zunigavanessa@smith.info,2020-08-24,http://www.stephenson.com/ +2,1Ef7b82A4CAAD10,Preston,Lozano,Vega-Gentry,East Jimmychester,Djibouti,5153435776,686-620-1820x944,vmata@colon.com,2021-04-23,http://www.hobbs.com/ +3,6F94879bDAfE5a6,Roy,Berry,Murillo-Perry,Isabelborough,Antigua and Barbuda,+1-539-402-0259,(496)978-3969x58947,beckycarr@hogan.com,2020-03-25,http://www.lawrence.com/ +4,5Cef8BFA16c5e3c,Linda,Olsen,"Dominguez, Mcmillan and Donovan",Bensonview,Dominican Republic,001-808-617-6467x12895,+1-813-324-8756,stanleyblackwell@benson.org,2020-06-02,http://www.good-lyons.com/ +5,053d585Ab6b3159,Joanna,Bender,"Martin, Lang and Andrade",West Priscilla,Slovakia (Slovak Republic),001-234-203-0635x76146,001-199-446-3860x3486,colinalvarado@miles.net,2021-04-17,https://goodwin-ingram.com/ +6,2d08FB17EE273F4,Aimee,Downs,Steele Group,Chavezborough,Bosnia and Herzegovina,(283)437-3886x88321,999-728-1637,louis27@gilbert.com,2020-02-25,http://www.berger.net/ +7,EA4d384DfDbBf77,Darren,Peck,"Lester, Woodard and Mitchell",Lake Ana,Pitcairn Islands,(496)452-6181x3291,+1-247-266-0963x4995,tgates@cantrell.com,2021-08-24,https://www.le.com/ +8,0e04AFde9f225dE,Brett,Mullen,"Sanford, Davenport and Giles",Kimport,Bulgaria,001-583-352-7197x297,001-333-145-0369,asnow@colon.com,2021-04-12,https://hammond-ramsey.com/ +9,C2dE4dEEc489ae0,Sheryl,Meyers,Browning-Simon,Robersonstad,Cyprus,854-138-4911x5772,+1-448-910-2276x729,mariokhan@ryan-pope.org,2020-01-13,https://www.bullock.net/ +10,8C2811a503C7c5a,Michelle,Gallagher,Beck-Hendrix,Elaineberg,Timor-Leste,739.218.2516x459,001-054-401-0347x617,mdyer@escobar.net,2021-11-08,https://arias.com/ +11,216E205d6eBb815,Carl,Schroeder,"Oconnell, Meza and Everett",Shannonville,Guernsey,637-854-0256x825,114.336.0784x788,kirksalas@webb.com,2021-10-20,https://simmons-hurley.com/ +12,CEDec94deE6d69B,Jenna,Dodson,"Hoffman, Reed and Mcclain",East Andrea,Vietnam,(041)737-3846,+1-556-888-3485x42608,mark42@robbins.com,2020-11-29,http://www.douglas.net/ +13,e35426EbDEceaFF,Tracey,Mata,Graham-Francis,South Joannamouth,Togo,001-949-844-8787,(855)713-8773,alex56@walls.org,2021-12-02,http://www.beck.com/ +14,A08A8aF8BE9FaD4,Kristine,Cox,Carpenter-Cook,Jodyberg,Sri Lanka,786-284-3358x62152,+1-315-627-1796x8074,holdenmiranda@clarke.com,2021-02-08,https://www.brandt.com/ +15,6fEaA1b7cab7B6C,Faith,Lutz,Carter-Hancock,Burchbury,Singapore,(781)861-7180x8306,207-185-3665,cassieparrish@blevins-chapman.net,2022-01-26,http://stevenson.org/ +16,8cad0b4CBceaeec,Miranda,Beasley,Singleton and Sons,Desireeshire,Oman,540.085.3135x185,+1-600-462-6432x21881,vduncan@parks-hardy.com,2022-04-12,http://acosta.org/ +17,a5DC21AE3a21eaA,Caroline,Foley,Winters-Mendoza,West Adriennestad,Western Sahara,936.222.4746x9924,001-469-948-6341x359,holtgwendolyn@watson-davenport.com,2021-03-10,http://www.benson-roth.com/ +18,F8Aa9d6DfcBeeF8,Greg,Mata,Valentine LLC,Lake Leslie,Mozambique,(701)087-2415,(195)156-1861x26241,jaredjuarez@carroll.org,2022-03-26,http://pitts-cherry.com/ +19,F160f5Db3EfE973,Clifford,Jacobson,Simon LLC,Harmonview,South Georgia and the South Sandwich Islands,001-151-330-3524x0469,(748)477-7174,joseph26@jacobson.com,2020-09-24,https://mcconnell.com/ +20,0F60FF3DdCd7aB0,Joanna,Kirk,Mays-Mccormick,Jamesshire,French Polynesia,(266)131-7001x711,(283)312-5579x11543,tuckerangie@salazar.net,2021-09-24,https://www.camacho.net/ +21,9F9AdB7B8A6f7F2,Maxwell,Frye,Patterson Inc,East Carly,Malta,423.262.3059,202-880-0688x7491,fgibson@drake-webb.com,2022-01-12,http://www.roberts.com/ +22,FBd0Ded4F02a742,Kiara,Houston,"Manning, Hester and Arroyo",South Alvin,Netherlands,001-274-040-3582x10611,+1-528-175-0973x4684,blanchardbob@wallace-shannon.com,2020-09-15,https://www.reid-potts.com/ +23,2FB0FAA1d429421,Colleen,Howard,Greer and Sons,Brittanyview,Paraguay,1935085151,(947)115-7711x5488,rsingleton@ryan-cherry.com,2020-08-19,http://paul.biz/ +24,010468dAA11382c,Janet,Valenzuela,Watts-Donaldson,Veronicamouth,Lao People's Democratic Republic,354.259.5062x7538,500.433.2022,stefanie71@spence.com,2020-09-08,https://moreno.biz/ +25,eC1927Ca84E033e,Shane,Wilcox,Tucker LLC,Bryanville,Albania,(429)005-9030x11004,541-116-4501,mariah88@santos.com,2021-04-06,https://www.ramos.com/ +26,09D7D7C8Fe09aea,Marcus,Moody,Giles Ltd,Kaitlyntown,Panama,674-677-8623,909-277-5485x566,donnamullins@norris-barrett.org,2022-05-24,https://www.curry.com/ +27,aBdfcF2c50b0bfD,Dakota,Poole,Simmons Group,Michealshire,Belarus,(371)987-8576x4720,071-152-1376,stacey67@fields.org,2022-02-20,https://sanford-wilcox.biz/ +28,b92EBfdF8a3f0E6,Frederick,Harper,"Hinton, Chaney and Stokes",South Marissatown,Switzerland,+1-077-121-1558x0687,264.742.7149,jacobkhan@bright.biz,2022-05-26,https://callahan.org/ +29,3B5dAAFA41AFa22,Stefanie,Fitzpatrick,Santana-Duran,Acevedoville,Saint Vincent and the Grenadines,(752)776-3286,+1-472-021-4814x85074,wterrell@clark.com,2020-07-30,https://meyers.com/ +30,EDA69ca7a6e96a2,Kent,Bradshaw,Sawyer PLC,North Harold,Tanzania,+1-472-143-5037x884,126.922.6153,qjimenez@boyd.com,2020-04-26,http://maynard-ho.com/ +31,64DCcDFaB9DFd4e,Jack,Tate,"Acosta, Petersen and Morrow",West Samuel,Zimbabwe,965-108-4406x20714,046.906.1442x6784,gfigueroa@boone-zavala.com,2021-09-15,http://www.hawkins-ramsey.com/ +32,679c6c83DD872d6,Tom,Trujillo,Mcgee Group,Cunninghamborough,Denmark,416-338-3758,(775)890-7209,tapiagreg@beard.info,2022-01-13,http://www.daniels-klein.com/ +33,7Ce381e4Afa4ba9,Gabriel,Mejia,Adkins-Salinas,Port Annatown,Liechtenstein,4077245425,646.044.0696x66800,coleolson@jennings.net,2021-04-24,https://patel-hanson.info/ +34,A09AEc6E3bF70eE,Kaitlyn,Santana,Herrera Group,New Kaitlyn,United States of America,6303643286,447-710-6202x07313,georgeross@miles.org,2021-09-21,http://pham.com/ +35,aA9BAFfBc3710fe,Faith,Moon,"Waters, Chase and Aguilar",West Marthaburgh,Bahamas,+1-586-217-0359x6317,+1-818-199-1403,willistonya@randolph-baker.com,2021-11-03,https://spencer-charles.info/ +36,E11dfb2DB8C9f72,Tammie,Haley,"Palmer, Barnes and Houston",East Teresa,Belize,001-276-734-4113x6087,(430)300-8770,harrisisaiah@jenkins.com,2022-01-04,http://evans-simon.com/ +37,889eCf90f68c5Da,Nicholas,Sosa,Jordan Ltd,South Hunter,Uruguay,(661)425-6042,975-998-1519,fwolfe@dorsey.com,2021-08-10,https://www.fleming-richards.com/ +38,7a1Ee69F4fF4B4D,Jordan,Gay,Glover and Sons,South Walter,Solomon Islands,7208417020,8035336772,tiffanydavies@harris-mcfarland.org,2021-02-24,http://www.lee.org/ +39,dca4f1D0A0fc5c9,Bruce,Esparza,Huerta-Mclean,Poolefurt,Montenegro,559-529-4424,001-625-000-7132x0367,preese@frye-vega.com,2021-10-22,http://www.farley.org/ +40,17aD8e2dB3df03D,Sherry,Garza,Anderson Ltd,West John,Poland,001-067-713-6440x158,(978)289-8785x5766,ann48@miller.com,2021-11-01,http://spence.com/ +41,2f79Cd309624Abb,Natalie,Gentry,Monroe PLC,West Darius,Dominican Republic,830.996.8238,499.122.5415,tcummings@fitzpatrick-ashley.com,2020-10-10,http://www.dorsey.biz/ +42,6e5ad5a5e2bB5Ca,Bryan,Dunn,Kaufman and Sons,North Jimstad,Burkina Faso,001-710-802-5565,078.699.8982x13881,woodwardandres@phelps.com,2021-09-08,http://www.butler.com/ +43,7E441b6B228DBcA,Wayne,Simpson,Perkins-Trevino,East Rebekahborough,Bolivia,(344)156-8632x1869,463-445-3702x38463,barbarapittman@holder.com,2020-12-13,https://gillespie-holder.com/ +44,D3fC11A9C235Dc6,Luis,Greer,Cross PLC,North Drew,Bulgaria,001-336-025-6849x701,684.698.2911x6092,bstuart@williamson-mcclure.com,2022-05-15,https://fletcher-nielsen.com/ +45,30Dfa48fe5Ede78,Rhonda,Frost,"Herrera, Shepherd and Underwood",Lake Lindaburgh,Monaco,(127)081-9339,+1-431-028-3337x3492,zkrueger@wolf-chavez.net,2021-12-06,http://www.khan.com/ +46,fD780ED8dbEae7B,Joanne,Montes,"Price, Sexton and Mcdaniel",Gwendolynview,Palau,(897)726-7952,(467)886-9467x5721,juan80@henson.net,2020-07-01,http://ochoa.com/ +47,300A40d3ce24bBA,Geoffrey,Guzman,Short-Wiggins,Zimmermanland,Uzbekistan,975.235.8921x269,(983)188-6873,bauercrystal@gay.com,2020-04-23,https://decker-kline.com/ +48,283DFCD0Dba40aF,Gloria,Mccall,"Brennan, Acosta and Ramos",North Kerriton,Ghana,445-603-6729,001-395-959-4736x4524,bartlettjenna@zuniga-moss.biz,2022-03-11,http://burgess-frank.com/ +49,F4Fc91fEAEad286,Brady,Cohen,Osborne-Erickson,North Eileenville,United Arab Emirates,741.849.0139x524,+1-028-691-7497x0894,mccalltyrone@durham-rose.biz,2022-03-10,http://hammond-barron.com/ +50,80F33Fd2AcebF05,Latoya,Mccann,"Hobbs, Garrett and Sanford",Port Sergiofort,Belarus,(530)287-4548x29481,162-234-0249x32790,bobhammond@barry.biz,2021-12-02,https://www.burton.com/ +51,Aa20BDe68eAb0e9,Gerald,Hawkins,"Phelps, Forbes and Koch",New Alberttown,Canada,+1-323-239-1456x96168,(092)508-0269,uwarner@steele-arias.com,2021-03-19,https://valenzuela.com/ +52,e898eEB1B9FE22b,Samuel,Crawford,"May, Goodwin and Martin",South Jasmine,Algeria,802-242-7457,626.116.9535x8578,xpittman@ritter-carney.net,2021-03-27,https://guerrero.org/ +53,faCEF517ae7D8eB,Patricia,Goodwin,"Christian, Winters and Ellis",Cowanfort,Swaziland,322.549.7139x70040,(111)741-4173,vaughanchristy@lara.biz,2021-03-08,http://clark.info/ +54,c09952De6Cda8aA,Stacie,Richard,Byrd Inc,New Deborah,Madagascar,001-622-948-3641x24810,001-731-168-2893x8891,clinton85@colon-arias.org,2020-10-15,https://kim.com/ +55,f3BEf3Be028166f,Robin,West,"Nixon, Blackwell and Sosa",Wallstown,Ecuador,698.303.4267,001-683-837-7651x525,greenemiranda@zimmerman.com,2022-01-13,https://www.mora.com/ +56,C6F2Fc6a7948a4e,Ralph,Haas,Montes PLC,Lake Ellenchester,Palestinian Territory,2239271999,001-962-434-0867x649,goodmancesar@figueroa.biz,2020-05-25,http://may.com/ +57,c8FE57cBBdCDcb2,Phyllis,Maldonado,Costa PLC,Lake Whitney,Saint Barthelemy,4500370767,001-508-064-6725x017,yhanson@warner-diaz.org,2021-01-25,http://www.bernard.com/ +58,B5acdFC982124F2,Danny,Parrish,Novak LLC,East Jaredbury,United Arab Emirates,(669)384-8597x8794,506.731.5952x571,howelldarren@house-cohen.com,2021-03-17,http://www.parsons-hudson.com/ +59,8c7DdF10798bCC3,Kathy,Hill,"Moore, Mccoy and Glass",Selenabury,South Georgia and the South Sandwich Islands,001-171-716-2175x310,888.625.0654,ncamacho@boone-simmons.org,2020-11-15,http://hayden.com/ +60,C681dDd0cc422f7,Kelli,Hardy,Petty Ltd,Huangfort,Sao Tome and Principe,020.324.2191x2022,424-157-8216,kristopher62@oliver.com,2020-12-20,http://www.kidd.com/ +61,a940cE42e035F28,Lynn,Pham,"Brennan, Camacho and Tapia",East Pennyshire,Portugal,846.468.6834x611,001-248-691-0006,mpham@rios-guzman.com,2020-08-21,https://www.murphy.com/ +62,9Cf5E6AFE0aeBfd,Shelley,Harris,"Prince, Malone and Pugh",Port Jasminborough,Togo,423.098.0315x8373,+1-386-458-8944x15194,zachary96@mitchell-bryant.org,2020-12-10,https://www.ryan.com/ +63,aEcbe5365BbC67D,Eddie,Jimenez,Caldwell Group,West Kristine,Ethiopia,+1-235-657-1073x6306,(026)401-7353x2417,kristiwhitney@bernard.com,2022-03-24,http://cherry.com/ +64,FCBdfCEAe20A8Dc,Chloe,Hutchinson,Simon LLC,South Julia,Netherlands,981-544-9452,+1-288-552-4666x060,leah85@sutton-terrell.com,2022-05-15,https://mitchell.info/ +65,636cBF0835E10ff,Eileen,Lynch,"Knight, Abbott and Hubbard",Helenborough,Liberia,+1-158-951-4131x53578,001-673-779-6713x680,levigiles@vincent.com,2021-01-02,http://mckay.com/ +66,fF1b6c9E8Fbf1ff,Fernando,Lambert,Church-Banks,Lake Nancy,Lithuania,497.829.9038,3863743398,fisherlinda@schaefer.net,2021-04-23,https://www.vang.com/ +67,2A13F74EAa7DA6c,Makayla,Cannon,Henderson Inc,Georgeport,New Caledonia,001-215-801-6392x46009,027-609-6460,scottcurtis@hurley.biz,2020-01-20,http://www.velazquez.net/ +68,a014Ec1b9FccC1E,Tom,Alvarado,Donaldson-Dougherty,South Sophiaberg,Kiribati,(585)606-2980x2258,730-797-3594x5614,nicholsonnina@montgomery.info,2020-08-18,http://odom-massey.com/ +69,421a109cABDf5fa,Virginia,Dudley,Warren Ltd,Hartbury,French Southern Territories,027.846.3705x14184,+1-439-171-1846x4636,zvalencia@phelps.com,2021-01-31,http://hunter-esparza.com/ +70,CC68FD1D3Bbbf22,Riley,Good,Wade PLC,Erikaville,Canada,6977745822,855-436-7641,alex06@galloway.com,2020-02-03,http://conway.org/ +71,CBCd2Ac8E3eBDF9,Alexandria,Buck,Keller-Coffey,Nicolasfort,Iran,078-900-4760x76668,414-112-8700x68751,lee48@manning.com,2021-02-20,https://ramsey.org/ +72,Ef859092FbEcC07,Richard,Roth,Conway-Mcbride,New Jasmineshire,Morocco,581-440-6539,9857827463,aharper@maddox-townsend.org,2020-02-23,https://www.brooks.com/ +73,F560f2d3cDFb618,Candice,Keller,Huynh and Sons,East Summerstad,Zimbabwe,001-927-965-8550x92406,001-243-038-4271x53076,buckleycory@odonnell.net,2020-08-22,https://www.lucero.com/ +74,A3F76Be153Df4a3,Anita,Benson,Parrish Ltd,Skinnerport,Russian Federation,874.617.5668x69878,(399)820-6418x0071,angie04@oconnell.com,2020-02-09,http://oconnor.com/ +75,D01Af0AF7cBbFeA,Regina,Stein,Guzman-Brown,Raystad,Solomon Islands,001-469-848-0724x4407,001-085-360-4426x00357,zrosario@rojas-hardin.net,2022-01-15,http://www.johnston.info/ +76,d40e89dCade7b2F,Debra,Riddle,"Chang, Aguirre and Leblanc",Colinhaven,United States Virgin Islands,+1-768-182-6014x14336,(303)961-4491,shieldskerry@robles.com,2020-07-11,http://kaiser.info/ +77,BF6a1f9bd1bf8DE,Brittany,Zuniga,Mason-Hester,West Reginald,Kyrgyz Republic,(050)136-9025,001-480-851-2496x0157,mchandler@cochran-huerta.org,2021-07-24,http://www.boyle.com/ +78,FfaeFFbbbf280db,Cassidy,Mcmahon,"Mcguire, Huynh and Hopkins",Lake Sherryborough,Myanmar,5040771311,684-682-0021x1326,katrinalane@fitzgerald.com,2020-10-21,https://hurst.com/ +79,CbAE1d1e9a8dCb1,Laurie,Pennington,"Sanchez, Marsh and Hale",Port Katherineville,Dominica,007.155.3406x553,+1-809-862-5566x277,cookejill@powell.com,2020-06-08,http://www.hebert.com/ +80,A7F85c1DE4dB87f,Alejandro,Blair,"Combs, Waller and Durham",Thomasland,Iceland,(690)068-4641x51468,555.509.8691x2329,elizabethbarr@ewing.com,2020-09-19,https://mercado-blevins.com/ +81,D6CEAfb3BDbaa1A,Leslie,Jennings,Blankenship-Arias,Coreybury,Micronesia,629.198.6346,075.256.0829,corey75@wiggins.com,2021-11-13,https://www.juarez.com/ +82,Ebdb6F6F7c90b69,Kathleen,Mckay,"Coffey, Lamb and Johnson",Lake Janiceton,Saint Vincent and the Grenadines,(733)910-9968,(691)247-4128x0665,chloelester@higgins-wilkinson.com,2021-09-12,http://www.owens-mooney.com/ +83,E8E7e8Cfe516ef0,Hunter,Moreno,Fitzpatrick-Lawrence,East Clinton,Isle of Man,(733)833-6754,001-761-013-7121,isaac26@benton-finley.com,2020-12-28,http://walls.info/ +84,78C06E9b6B3DF20,Chad,Davidson,Garcia-Jimenez,South Joshuashire,Oman,8275702958,(804)842-4715,justinwalters@jimenez.com,2021-11-15,http://www.garner-oliver.com/ +85,03A1E62ADdeb31c,Corey,Holt,"Mcdonald, Bird and Ramirez",New Glenda,Fiji,001-439-242-4986x7918,3162708934,maurice46@morgan.com,2020-02-18,http://www.watson.com/ +86,C6763c99d0bd16D,Emma,Cunningham,Stephens Inc,North Jillianview,New Zealand,128-059-0206x60217,(312)164-4545x2284,walter83@juarez.org,2022-05-13,http://www.reid.info/ +87,ebe77E5Bf9476CE,Duane,Woods,Montoya-Miller,Lyonsberg,Maldives,(636)544-7783x7288,(203)287-1003x5932,kmercer@wagner.com,2020-07-21,http://murray.org/ +88,E4Bbcd8AD81fC5f,Alison,Vargas,"Vaughn, Watts and Leach",East Cristinabury,Benin,365-273-8144,053-308-7653x6287,vcantu@norton.com,2020-11-10,http://mason.info/ +89,efeb73245CDf1fF,Vernon,Kane,Carter-Strickland,Thomasfurt,Yemen,114-854-1159x555,499-608-4612,hilljesse@barrett.info,2021-04-15,http://www.duffy-hensley.net/ +90,37Ec4B395641c1E,Lori,Flowers,Decker-Mcknight,North Joeburgh,Namibia,679.415.1210,945-842-3659x4581,tyrone77@valenzuela.info,2021-01-09,http://www.deleon-crosby.com/ +91,5ef6d3eefdD43bE,Nina,Chavez,Byrd-Campbell,Cassidychester,Bhutan,053-344-3205,+1-330-920-5422x571,elliserica@frank.com,2020-03-26,https://www.pugh.com/ +92,98b3aeDcC3B9FF3,Shane,Foley,Rocha-Hart,South Dannymouth,Hungary,+1-822-569-0302,001-626-114-5844x55073,nsteele@sparks.com,2021-07-06,https://www.holt-sparks.com/ +93,aAb6AFc7AfD0fF3,Collin,Ayers,Lamb-Peterson,South Lonnie,Anguilla,404-645-5351x012,001-257-582-8850x8516,dudleyemily@gonzales.biz,2021-06-29,http://www.ruiz.com/ +94,54B5B5Fe9F1B6C5,Sherry,Young,"Lee, Lucero and Johnson",Frankchester,Solomon Islands,158-687-1764,(438)375-6207x003,alan79@gates-mclaughlin.com,2021-04-04,https://travis.net/ +95,BE91A0bdcA49Bbc,Darrell,Douglas,"Newton, Petersen and Mathis",Daisyborough,Mali,001-084-845-9524x1777,001-769-564-6303,grayjean@lowery-good.com,2022-02-17,https://banks.biz/ +96,cb8E23e48d22Eae,Karl,Greer,Carey LLC,East Richard,Guyana,(188)169-1674x58692,001-841-293-3519x614,hhart@jensen.com,2022-01-30,http://hayes-perez.com/ +97,CeD220bdAaCfaDf,Lynn,Atkinson,"Ware, Burns and Oneal",New Bradview,Sri Lanka,+1-846-706-2218,605.413.3198,vkemp@ferrell.com,2021-07-10,https://novak-allison.com/ +98,28CDbC0dFe4b1Db,Fred,Guerra,Schmitt-Jones,Ortegaland,Solomon Islands,+1-753-067-8419x7170,+1-632-666-7507x92121,swagner@kane.org,2021-09-18,https://www.ross.com/ +99,c23d1D9EE8DEB0A,Yvonne,Farmer,Fitzgerald-Harrell,Lake Elijahview,Aruba,(530)311-9786,001-869-452-0943x12424,mccarthystephen@horn-green.biz,2021-08-11,http://watkins.info/ +100,2354a0E336A91A1,Clarence,Haynes,"Le, Nash and Cross",Judymouth,Honduras,(753)813-6941,783.639.1472,colleen91@faulkner.biz,2020-03-11,http://www.hatfield-saunders.net/ diff --git a/site/tests/helpers/sample_files/sample2.pdf b/site/tests/helpers/sample_files/sample2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..774c2ea70c55104973794121eae56bcad918da97 GIT binary patch literal 13264 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 literal 0 HcmV?d00001 diff --git a/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py b/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py index b268ae30b..ce5d51554 100644 --- a/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py +++ b/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py @@ -1,6 +1,6 @@ sample_metadata_chapter2_pdf = { "input": { - "created": "2019-01-29T03:57:00Z", + # "created": "2019-01-29T03:57:00Z", "pids": { "doi": { "client": "datacite", @@ -50,7 +50,7 @@ "hclegacy:record_creation_date": "2019-01-29T03:57:00Z", }, "files": { - "default_preview": "55710426.pdf", + # "default_preview": "55710426.pdf", "enabled": True, "entries": { "55710426.pdf": { @@ -217,8 +217,19 @@ "publisher": "Zalman Shazar Center", "title": "מגדר וזמן בכתבי ר׳ שניאור זלמן מלאדי", }, - "parent": {"access": {"owned_by": [{"user": "1017065"}]}}, - "updated": "2019-01-29T03:57:00Z", + "parent": { + "access": { + "owned_by": [ + { + "email": "test@example.com", + "identifiers": [ + {"identifier": "1017065", "scheme": "neh_user_id"}, + ], + } + ] + } + }, + # "updated": "2019-01-29T03:57:00Z", }, "expected_serialized": { "record_source": "knowledgeCommons", @@ -383,8 +394,15 @@ "publisher": "Zalman Shazar Center", "title": "מגדר וזמן בכתבי ר׳ שניאור זלמן מלאדי", }, - "parent": {"access": {"owned_by": [{"user": "1017065"}]}}, - "updated": "2019-01-29T03:57:00Z", + "parent": { + "access": { + "owned_by": [ + {"identifier": "1017065", "scheme": "neh_user_id"}, + {"email": "test@example.com"}, + ] + } + }, + # "updated": "2019-01-29T03:57:00Z", }, "expected_loaded": { "record_source": "knowledgeCommons", diff --git a/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py b/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py index c06e62a77..1a57039ec 100644 --- a/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py +++ b/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py @@ -1,6 +1,6 @@ sample_metadata_chapter_pdf = { "input": { - "created": "2017-03-08T05:01:44Z", + # "created": "2017-03-08T05:01:44Z", "pids": {}, "custom_fields": { "hclegacy:collection": "hccollection:1", @@ -42,7 +42,7 @@ ], }, "files": { - "default_preview": "female_agency_ophelia.pdf", + # "default_preview": "female_agency_ophelia.pdf", "enabled": True, "entries": { "female_agency_ophelia.pdf": { @@ -259,8 +259,22 @@ "The Paradox of Female Agency: Ophelia and East Asian " "Sensibilities" ), }, - "parent": {"access": {"owned_by": [{"user": "49"}]}}, - "updated": "2017-09-16T16:41:52Z", + "parent": { + "access": { + "owned_by": [ + { + "email": "test@example.com", + "identifiers": [ + { + "identifier": "49", + "scheme": "neh_user_id", + } + ], + } + ] + } + }, + # "updated": "2017-09-16T16:41:52Z", }, "expected_serialized": { "record_source": "knowledgeCommons", @@ -725,6 +739,6 @@ ), }, "parent": {"access": {"owned_by": [{"user": "49"}]}}, - "updated": "2017-09-16T16:41:52Z", + # "updated": "2017-09-16T16:41:52Z", }, } diff --git a/site/tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py b/site/tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py index d5495d193..8d9c1b39a 100644 --- a/site/tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py +++ b/site/tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py @@ -201,7 +201,18 @@ "and Adaptations" ), }, - "parent": {"access": {"owned_by": [{"user": "1011841"}]}}, + "parent": { + "access": { + "owned_by": [ + { + "email": "test@example.com", + "identifiers": [ + {"identifier": "1011841", "scheme": "neh_user_id"} + ], + } + ] + } + }, "updated": "2021-11-10T15:06:20Z", }, "expected_serialized": { diff --git a/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py b/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py index fcf7882f2..75da0109a 100644 --- a/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py +++ b/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py @@ -1,10 +1,12 @@ sample_metadata_journal_article_pdf = { "input": { "access": { - "embargo": {"active": True, "reason": None, "until": "2030-11-25"}, - "files": "restricted", + # "embargo": {"active": True, "reason": None, "until": "2030-11-25"}, + # "files": "restricted", + "files": "public", "record": "public", - "status": "embargoed", + # "status": "embargoed", + "status": "open", }, # "created": "2020-11-25T12:35:10Z", "custom_fields": { @@ -58,7 +60,7 @@ ], }, "files": { - "default_preview": "24519197_005_03-04_s004_text.pdf", + # "default_preview": "24519197_005_03-04_s004_text.pdf", "enabled": True, "entries": { "24519197_005_03-04_s004_text.pdf": { @@ -231,14 +233,14 @@ { "email": "test@example.com", "identifiers": [ - {"identifier": "jdoe", "scheme": "kc_username"}, + {"identifier": "test", "scheme": "neh_user_id"}, ], }, { "full_name": "John Doe", "email": "john.doe@example.com", "identifiers": [ - {"identifier": "0000-0000-0000-0000", "scheme": "orcid"}, + {"identifier": "0000-0002-1825-0097", "scheme": "orcid"}, {"identifier": "jdoe", "scheme": "kc_username"}, ], }, From 06873bc430718d6c0ce017b9248dac564b888007 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Fri, 14 Feb 2025 17:31:42 -0500 Subject: [PATCH 10/22] feature(neh; import): Work in progress on import API endpoint; basic error handling working on service for validation and file errors --- .../invenio-record-importer-kcworks | 2 +- .../invenio-remote-api-provisioner | 2 +- site/tests/api/test_api_import.py | 322 ++++++++++++------ site/tests/fixtures/records.py | 2 - 4 files changed, 227 insertions(+), 101 deletions(-) diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index 19e2e0edf..65194dfec 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit 19e2e0edff3414887a06de3780c3e29114cc3515 +Subproject commit 65194dfec871b859a5314a197398979c465d6a27 diff --git a/site/kcworks/dependencies/invenio-remote-api-provisioner b/site/kcworks/dependencies/invenio-remote-api-provisioner index a3a8ff200..fe40e6e84 160000 --- a/site/kcworks/dependencies/invenio-remote-api-provisioner +++ b/site/kcworks/dependencies/invenio-remote-api-provisioner @@ -1 +1 @@ -Subproject commit a3a8ff200127a1f817e6cc76fee247913388f6ff +Subproject commit fe40e6e845950d9a3ca1030efa3a962b955267bb diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index 68dc67c9b..8e6336a02 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -251,6 +251,13 @@ def test_import_records_loader_load( community_list=[community], owner_id=user_id, ) + test_metadata.update_metadata( + { + "metadata|identifiers": [ + {"identifier": "1234567890", "scheme": "import-recid"} + ] + } + ) self.modify_metadata(test_metadata) for u in ( @@ -367,7 +374,8 @@ def modify_metadata(self, test_metadata: TestRecordMetadata): test_metadata.update_metadata( { "metadata|identifiers": [ - {"identifier": "hc:33383", "scheme": "made-up-scheme"} + {"identifier": "hc:33383", "scheme": "my-made-up-scheme"}, + {"identifier": "1234567890", "scheme": "import-recid"}, ] } ) @@ -497,6 +505,13 @@ def test_import_records_loader_load( owner_id=user_id, file_entries=file_entries, ) + test_metadata.update_metadata( + { + "metadata|identifiers": [ + {"identifier": "hc:33383", "scheme": "import-recid"} + ] + } + ) for u in ( test_metadata.metadata_in.get("parent", {}) .get("access", {}) @@ -635,9 +650,103 @@ def metadata_sources(self): """Override this in subclasses to provide specific metadata.""" raise NotImplementedError + @property + def files_to_upload(self): + """Override this in subclasses to provide different files to upload. + + The default defined here assumes two input records with two files each. + """ + + file_paths = [ + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample2.pdf", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.csv", + ] + file1 = open(file_paths[0], "rb") + file2 = open(file_paths[1], "rb") + file3 = open(file_paths[2], "rb") + file4 = open(file_paths[3], "rb") + files = [ + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf" + ), + stream=file1, + content_type="application/pdf", + mimetype="application/pdf", + mimetype_params={}, + ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg" + ), + stream=file2, + content_type="image/jpeg", + mimetype="image/jpeg", + mimetype_params={}, + ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample2.pdf" + ), + stream=file3, + content_type="application/pdf", + mimetype="application/pdf", + mimetype_params={}, + ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.csv" + ), + stream=file4, + content_type="text/csv", + mimetype="text/csv", + mimetype_params={}, + ), + ] + file_list = [ + { + "key": "sample.pdf", + "mimetype": "application/pdf", + "size": 13264, # FIXME: Check reporting of mismatch + }, + { + "key": "sample.jpg", + "mimetype": "image/jpeg", + "size": 1174188, + }, + { + "key": "sample2.pdf", + "mimetype": "application/pdf", + "size": 13264, # FIXME: Check reporting of mismatch + }, + { + "key": "sample.csv", + "mimetype": "text/csv", + "size": 17261, + }, + ] + file_streams = [file1, file2, file3, file4] + return files, file_list, file_streams + @property def expected_errors(self): - """Override this in subclasses to provide specific expected errors.""" + """Override this in subclasses to provide specific expected errors. + + The expected errors should be a list of lists, where each inner list + contains the expected errors for a record. If the record is expected to + succeed, the inner list should be empty. The outer list should have the + same length as the metadata sources. + """ return [[]] * len(self.metadata_sources) def check_result_status(self, import_results: dict): @@ -832,87 +941,12 @@ def test_import_records_service_load( community_record = minimal_community_factory(owner=u.user.id) community = community_record.to_dict() - file_paths = [ - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.pdf", - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.jpg", - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample2.pdf", - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.csv", - ] - file1 = open(file_paths[0], "rb") - file2 = open(file_paths[1], "rb") - file3 = open(file_paths[2], "rb") - file4 = open(file_paths[3], "rb") - files = [ - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.pdf" - ), - stream=file1, - content_type="application/pdf", - mimetype="application/pdf", - mimetype_params={}, - ), - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.jpg" - ), - stream=file2, - content_type="image/jpeg", - mimetype="image/jpeg", - mimetype_params={}, - ), - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample2.pdf" - ), - stream=file3, - content_type="application/pdf", - mimetype="application/pdf", - mimetype_params={}, - ), - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.csv" - ), - stream=file4, - content_type="text/csv", - mimetype="text/csv", - mimetype_params={}, - ), - ] - file_list = [ - { - "key": "sample.pdf", - "mimetype": "application/pdf", - "size": 13264, # FIXME: Check reporting of mismatch - }, - { - "key": "sample.jpg", - "mimetype": "image/jpeg", - "size": 1174188, - }, - { - "key": "sample2.pdf", - "mimetype": "application/pdf", - "size": 13264, # FIXME: Check reporting of mismatch - }, - { - "key": "sample.csv", - "mimetype": "text/csv", - "size": 17261, - }, - ] + # Remember to close the file streams after the import is complete + files, file_list, file_streams = self.files_to_upload - metadata_sources = [] + metadata_source_objects = [] for idx, d in enumerate(self.metadata_sources): + app.logger.info(f"d: {pformat(d)}") files_per_item = len(file_list) // len(self.metadata_sources) item_files = file_list[idx * files_per_item : (idx + 1) * files_per_item] app.logger.info(f"item_files: {item_files}") @@ -935,20 +969,18 @@ def test_import_records_service_load( ] } ) - metadata_sources.append(test_metadata) + metadata_source_objects.append(test_metadata) service = current_record_importer_service import_results = service.import_records( file_data=files, - metadata=[copy.deepcopy(m.metadata_in) for m in metadata_sources], + metadata=[copy.deepcopy(m.metadata_in) for m in metadata_source_objects], user_id=user_id, community_id=community["id"], ) - file1.close() - file2.close() - file3.close() - file4.close() + for file in file_streams: + file.close() self.check_result_status(import_results) self.check_result_errors(import_results) @@ -956,7 +988,7 @@ def test_import_records_service_load( import_results, app, files, - metadata_sources, + metadata_source_objects, community, self.expected_errors, user_id, @@ -975,7 +1007,7 @@ def test_import_records_service_load( # return sample_metadata_chapter2_pdf["input"] -class TestImportServiceJArticle(BaseImportServiceTest): +class TestImportServiceJArticleSuccess(BaseImportServiceTest): @property def metadata_sources(self): return [ @@ -984,17 +1016,113 @@ def metadata_sources(self): ] -class BaseImportServiceErrorTest(BaseImportServiceTest): +class BaseImportServiceErrorTestAllOrNone(BaseImportServiceTest): """Base class for testing record imports with errors.""" + def check_result_status(self, import_results: dict): + assert len(import_results["data"]) == 0 + assert import_results.get("status") == "error" + # if only some records are expected to fail + if len([e for e in self.expected_errors if e]) < len(self.metadata_sources): + assert ( + import_results.get("message") + == "Some records could not be imported, and the 'all_or_none' flag was " + "set to True, so the import was aborted." + ) # noqa: E501 + # if all records are expected to fail + else: + assert import_results.get("message") == "" + def check_result_errors(self, import_results: dict): - assert import_results.get("errors") == [] + error_item_indices = [ + index for index, error in enumerate(self.expected_errors) if error + ] + assert len(import_results["errors"]) == len(error_item_indices) + for i, actual_error_item in enumerate(import_results["errors"]): + assert actual_error_item["item_index"] == error_item_indices[i] + assert ( + actual_error_item["errors"] + == self.expected_errors[error_item_indices[i]] + ) + if actual_error_item[ + "metadata" + ]: # make sure metadata present when expected + item_recid = actual_error_item["metadata"]["id"] + assert item_recid not in [ + r["metadata"]["id"] for r in import_results["data"] + ] + created_record = records_service.read( + system_identity, id_=item_recid + ).to_dict() + assert created_record["status"] == "deleted" + def check_result_data(self, import_results: dict, *args, **kwargs): + assert len(import_results["data"]) == 0 -class TestImportServiceJArticleErrorTitle(BaseImportServiceErrorTest): + +class TestImportServiceJArticleErrorTitle(BaseImportServiceErrorTestAllOrNone): @property def metadata_sources(self): - return sample_metadata_chapter2_pdf["input"] + meta1 = copy.deepcopy(sample_metadata_chapter_pdf["input"]) + meta1["metadata"]["title"] = "" + meta2 = copy.deepcopy(sample_metadata_chapter2_pdf["input"]) + return [meta1, meta2] + + @property + def expected_errors(self): + return [ + [ + { + "validation_error": { + "metadata": {"title": ["Missing data for required field."]} + } + } + ], + [], + ] + + +class TestImportServiceJArticleErrorMissingFile(BaseImportServiceErrorTestAllOrNone): + @property + def metadata_sources(self): + meta1 = copy.deepcopy(sample_metadata_chapter_pdf["input"]) + meta1["metadata"]["title"] = "" + meta2 = copy.deepcopy(sample_metadata_chapter2_pdf["input"]) + return [meta1, meta2] + + @property + def files_to_upload(self): + """Override the default files to upload to remove the first file. + + The first record should fail now, even though the second record + is the one with the invalid metadata. + """ + files, file_list, file_streams = super().files_to_upload + file_streams[0].close() + file_streams = file_streams[1:] + files = files[1:] + # leave the file list the same so that there's a mismatch between + # the files and the file list (entries) + return files, file_list, file_streams + + @property + def expected_errors(self): + """ + The first record should fail because the file is missing. + The second record should fail because the metadata is invalid. + """ + return [ + [ + { + "file upload failures": { + "sample.pdf": [ + "failed", + ["File sample.pdf not found in list of files."], + ] + }, + }, + ], + ] class BaseImportRecordsAPITest: @@ -1093,16 +1221,16 @@ def test_import_records_api_metadata_only( assert not rdm_record["files"]["enabled"] -class TestImportRecordsAPIMetadataOnlyChapter(BaseImportRecordsAPITest): +class TestImportAPIMetadataOnlyJournalArticle(BaseImportRecordsAPITest): @property def metadata_source(self): - return sample_metadata_chapter_pdf["input"] + return sample_metadata_journal_article_pdf["input"] -class TestImportRecordsAPIMetadataOnlyChapter2(BaseImportRecordsAPITest): +class TestImportAPIMetadataOnlyJournalArticle2(BaseImportRecordsAPITest): @property def metadata_source(self): - return sample_metadata_chapter2_pdf["input"] + return sample_metadata_journal_article2_pdf["input"] class BaseImportRecordsAPIWithFilesTest: diff --git a/site/tests/fixtures/records.py b/site/tests/fixtures/records.py index 781ce6975..f5ab2cc57 100644 --- a/site/tests/fixtures/records.py +++ b/site/tests/fixtures/records.py @@ -312,9 +312,7 @@ def update_metadata(self, metadata_updates: dict[str, Any] = {}) -> None: are the new values to update the metadata with at those paths. """ for key, val in metadata_updates.items(): - self.app.logger.debug(f"updating metadata key {key} with value {val}") new_metadata_in = replace_value_in_nested_dict(self.metadata_in, key, val) - self.app.logger.debug(f"new metadata_in: {pformat(new_metadata_in)}") self._metadata_in = ( new_metadata_in if isinstance(new_metadata_in, dict) From 79a1c0b66a2e91dfaa09da8d6499b4cfd2e38c6f Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Sun, 16 Feb 2025 17:46:52 -0500 Subject: [PATCH 11/22] feature(neh; import): Work in progress on import API endpoint; basic error handling working on service for validation and file errors --- .../invenio-record-importer-kcworks | 2 +- site/tests/api/test_api_import.py | 771 ++++++++++++------ .../sample_metadata_journal_article_pdf.py | 6 +- 3 files changed, 542 insertions(+), 237 deletions(-) diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index 65194dfec..3d4b3ec4b 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit 65194dfec871b859a5314a197398979c465d6a27 +Subproject commit 3d4b3ec4bf4a5bddf5578167b72c6b11b1fc8bdc diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index 8e6336a02..c3a4cd686 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -639,7 +639,7 @@ def test_import_records_loader_load( class TestImportLoaderWithFilesJArticle(BaseImportLoaderWithFilesTest): @property def metadata_source(self): - return sample_metadata_journal_article_pdf["input"] + return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) class BaseImportServiceTest: @@ -750,56 +750,30 @@ def expected_errors(self): return [[]] * len(self.metadata_sources) def check_result_status(self, import_results: dict): - assert len(import_results["data"]) == len(self.metadata_sources) - assert import_results.get("status") == "success" - assert import_results.get("message") == "All records were successfully imported" + if not self.expected_errors: + assert len(import_results["data"]) == len(self.metadata_sources) + assert import_results.get("status") == "success" + assert ( + import_results.get("message") + == "All records were successfully imported" + ) + else: + assert import_results.get("status") == "error" + assert import_results.get("message") == ( + "No records were successfully imported. Please check the list of " + "failed records in the 'errors' field for more information. Each " + "failed item should have its own list of specific errors." + ) def check_result_errors(self, import_results: dict): assert import_results.get("errors") == [] - def _check_successful_import( + def _check_owners( self, - actual: dict, - app: Flask, - record_files: list, + actual_metadata: dict, expected: TestRecordMetadata, - community: dict, uploader_id: str, ): - actual_metadata = actual.get("metadata") - assert actual_metadata - - actual_record_id = actual.get("record_id") - assert actual_record_id - - actual_record_url = actual.get("record_url") - assert ( - actual_record_url - == f"{app.config['SITE_UI_URL']}/records/{actual_record_id}" - ) - - actual_collection_id = actual.get("collection_id") - assert actual_collection_id == community["id"] - assert actual_collection_id == actual_metadata.get("parent", {}).get( - "communities", {} - ).get("entries", [])[0].get("id") - - assert actual.get("errors") == [] - - # comparing file list separately from file entries in metadata - actual_files = actual.get("files") - assert actual_files == { - f.filename.split("/")[-1]: ["uploaded", []] for f in record_files - } - - # add ids and checksums from actual file entries to the expected - # file entries to compare file entries in metadata - for k, f in expected.file_entries.items(): - f["id"] = actual_metadata["files"]["entries"][k]["id"] - f["checksum"] = actual_metadata["files"]["entries"][k]["checksum"] - assert expected.compare_published(actual_metadata) - - # check owners expected_owners = ( expected.metadata_in.get("parent", {}).get("access", {}).get("owned_by") ) @@ -877,6 +851,56 @@ def _check_successful_import( } assert actual_metadata["parent"]["access"]["grants"] == [] + def _check_successful_import( + self, + actual: dict, + app: Flask, + record_files: list, + expected: TestRecordMetadata, + community: dict, + uploader_id: str, + ): + actual_metadata = actual.get("metadata") + assert actual_metadata + + actual_import_id = actual.get("record_id") + assert actual_import_id == next( + i.get("identifier") + for i in actual_metadata.get("identifiers") + if i.get("scheme") == "import-recid" + ) + + actual_record_id = actual_metadata.get("id") + + actual_record_url = actual.get("record_url") + assert ( + actual_record_url + == f"{app.config['SITE_UI_URL']}/records/{actual_record_id}" + ) + + actual_collection_id = actual.get("collection_id") + assert actual_collection_id in [community["id"], community["slug"]] + assert actual_collection_id == actual_metadata.get("parent", {}).get( + "communities", {} + ).get("entries", [])[0].get("id") + + assert actual.get("errors") == [] + + # comparing file list separately from file entries in metadata + actual_files = actual.get("files") + assert actual_files == { + f.filename.split("/")[-1]: ["uploaded", []] for f in record_files + } + + # add ids and checksums from actual file entries to the expected + # file entries to compare file entries in metadata + for k, f in expected.file_entries.items(): + f["id"] = actual_metadata["files"]["entries"][k]["id"] + f["checksum"] = actual_metadata["files"]["entries"][k]["checksum"] + assert expected.compare_published(actual_metadata) + + self._check_owners(actual_metadata, expected, uploader_id) + def _check_failed_import( self, import_result: dict, expected_error_list: list[dict] ): @@ -890,26 +914,24 @@ def check_result_data( files: list, metadata_sources: list, community: dict, - expected_errors: list, uploader_id: str, ): assert len(import_results["data"]) + len(import_results["errors"]) == len( metadata_sources ) files_per_item = len(files) // len(metadata_sources) - for idx, record_result in enumerate(import_results["data"]): - expected_error_list = expected_errors[idx] - - record_files = files[idx * files_per_item : (idx + 1) * files_per_item] - app.logger.info(f"record_files in check_result_data: {record_files}") + for idx, actual_record_result in enumerate(import_results["data"]): - assert record_result["item_index"] == idx + expected_error_list = self.expected_errors[idx] + assert actual_record_result["item_index"] == idx if expected_error_list: - self._check_failed_import(record_result, expected_error_list) + self._check_failed_import(actual_record_result, expected_error_list) else: + record_files = files[idx * files_per_item : (idx + 1) * files_per_item] + self._check_successful_import( - record_result, + actual_record_result, app, record_files, metadata_sources[idx], @@ -943,15 +965,12 @@ def test_import_records_service_load( # Remember to close the file streams after the import is complete files, file_list, file_streams = self.files_to_upload + files_per_item = len(file_list) // len(self.metadata_sources) metadata_source_objects = [] for idx, d in enumerate(self.metadata_sources): - app.logger.info(f"d: {pformat(d)}") - files_per_item = len(file_list) // len(self.metadata_sources) item_files = file_list[idx * files_per_item : (idx + 1) * files_per_item] - app.logger.info(f"item_files: {item_files}") file_entries = {f["key"]: f for f in item_files} - app.logger.info(f"file_entries: {file_entries}") test_metadata = TestRecordMetadataWithFiles( metadata_in=d, community_list=[community], @@ -1011,8 +1030,8 @@ class TestImportServiceJArticleSuccess(BaseImportServiceTest): @property def metadata_sources(self): return [ - sample_metadata_journal_article_pdf["input"], - sample_metadata_journal_article2_pdf["input"], + copy.deepcopy(sample_metadata_journal_article_pdf["input"]), + copy.deepcopy(sample_metadata_journal_article2_pdf["input"]), ] @@ -1129,225 +1148,515 @@ class BaseImportRecordsAPITest: """Base class for testing record imports with the API.""" @property - def metadata_source(self): + def metadata_sources(self): """Override this in subclasses to provide specific metadata.""" raise NotImplementedError - def test_import_records_api_metadata_only( + @property + def files_to_upload(self): + """Override this in subclasses to provide specific files to upload.""" + file_paths = [ + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample2.pdf", + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.csv", + ] + file1 = open(file_paths[0], "rb") + file2 = open(file_paths[1], "rb") + file3 = open(file_paths[2], "rb") + file4 = open(file_paths[3], "rb") + files = [ + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.pdf" + ), + stream=file1, + content_type="application/pdf", + mimetype="application/pdf", + mimetype_params={}, + ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.jpg" + ), + stream=file2, + content_type="image/jpeg", + mimetype="image/jpeg", + mimetype_params={}, + ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample2.pdf" + ), + stream=file3, + content_type="application/pdf", + mimetype="application/pdf", + mimetype_params={}, + ), + FileData( + filename=str( + Path(__file__).parent.parent.parent + / "tests/helpers/sample_files/sample.csv" + ), + stream=file4, + content_type="text/csv", + mimetype="text/csv", + mimetype_params={}, + ), + ] + file_list = [ + { + "key": "sample.pdf", + "mimetype": "application/pdf", + "size": 13264, # FIXME: Check reporting of mismatch + }, + { + "key": "sample.jpg", + "mimetype": "image/jpeg", + "size": 1174188, + }, + { + "key": "sample2.pdf", + "mimetype": "application/pdf", + "size": 13264, # FIXME: Check reporting of mismatch + }, + { + "key": "sample.csv", + "mimetype": "text/csv", + "size": 17261, + }, + ] + file_streams = [file1, file2, file3, file4] + return files, file_list, file_streams + + @property + def expected_errors(self): + """Override this in subclasses to provide specific expected errors.""" + return [[]] * len(self.metadata_sources) + + def check_response_status(self, response): + if not any([e for e in self.expected_errors if e]): + assert response.status_code == 201 + assert response.json["status"] == "success" + assert response.json["message"] == "All records were successfully imported" + else: + assert response.status_code == 400 + assert response.json["status"] == "error" + assert response.json["message"] == ( + "Some records could not be imported, and the 'all_or_none' flag was " + "set to True, so the import was aborted." + ) # noqa: E501 + + def check_response_errors(self, response): + assert response.json["errors"] == [] + + def _check_successful_import( self, - running_app, - db, - minimal_community_factory, - user_factory, - minimal_record_metadata, - search_clear, - mock_send_remote_api_update_fixture, - celery_worker, + actual_record: dict, + app: Flask, + community: dict, + uploader_id: str, + expected: TestRecordMetadataWithFiles, + record_files: list, ): - app = running_app.app - u = user_factory(email="test@example.com", token=True, saml_id=None) - token = u.allowed_token - user_id = u.user.id - identity = get_identity(u.user) - identity.provides.add(authenticated_user) + actual_metadata = actual_record.get("metadata") + assert actual_metadata - community_record = minimal_community_factory(owner=user_id) - community = community_record.to_dict() + actual_import_id = actual_record.get("record_id") + assert actual_import_id + assert actual_import_id == next( + i.get("identifier") + for i in actual_metadata.get("identifiers") + if i.get("scheme") == "import-recid" + ) - test_metadata = TestRecordMetadata( - metadata_in=self.metadata_source, - community_list=[community], - owner_id=user_id, + actual_record_id = actual_metadata.get("id") + + actual_record_url = actual_record.get("record_url") + assert actual_record_url == ( + f"{app.config['SITE_UI_URL']}/records/{actual_record_id}" ) - test_metadata.update_metadata( + + actual_collection_id = actual_metadata.get("collection_id") + assert actual_collection_id in [community["id"], community["slug"]] + + assert actual_collection_id == actual_metadata.get("parent", {}).get( + "communities", {} + ).get("entries", [])[0].get("id") + assert actual_collection_id == actual_metadata.get("parent", {}).get( + "communities", {} + ).get("entries", [])[0].get("id") + + assert actual_record.get("errors") == [] + + # comparing file list separately from file entries in metadata + actual_files = actual_record.get("files") + self.check_response_files(actual_files, record_files) + + # add ids and checksums from actual file entries to the expected + # file entries to compare file entries in metadata + for k, f in expected.file_entries.items(): + f["id"] = actual_metadata["files"]["entries"][k]["id"] + f["checksum"] = actual_metadata["files"]["entries"][k]["checksum"] + + community.update( { - "metadata|identifiers": [ - {"identifier": "1234567890", "scheme": "import_id"} - ] + "links": {}, + "metadata": { + **community["metadata"], + "type": {"id": "event"}, + }, } - ) + ) # FIXME: Why are links and title not expanded? + assert expected.compare_published(actual_metadata) - with app.test_client() as client: - response = client.post( - f"{app.config['SITE_API_URL']}/import/{community['slug']}", - content_type="multipart/form-data", - data={ - "metadata": json.dumps([test_metadata.metadata_in]), - "id_scheme": "import_id", - "review_required": "true", - "strict_validation": "true", - "all_or_none": "true", - "files": [], - }, - headers={ - "Content-Type": "multipart/form-data", - "Authorization": f"Bearer {token}", - }, - ) - assert response.status_code == 201 - assert response.json["status"] == "success" - assert response.json["message"] == "All records were successfully imported" - assert response.json["errors"] == [] - assert len(response.json["data"]) == 1 - for index, record_result in enumerate(response.json["data"]): - assert record_result.get("item_index") == index - assert record_result.get("record_id") is not None - assert record_result.get("record_url") is not None - assert record_result.get("collection_id") in [ - community["id"], - community["slug"], - ] - assert record_result.get("files") == {} - assert record_result.get("errors") == [] - community.update( - { - "links": {}, - "metadata": { - **community["metadata"], - "type": {"id": "event"}, - }, - } - ) # FIXME: Why are links and title not expanded? - assert test_metadata.compare_published(record_result.get("metadata")) + self._check_owners(actual_metadata, expected, uploader_id) - # Check the record in the database - record_id1 = record_result.get("record_id") - rdm_record = records_service.read( - system_identity, id_=record_id1 - ).to_dict() - assert rdm_record["files"]["entries"] == {} - assert rdm_record["files"]["order"] == [] - assert rdm_record["files"]["total_bytes"] == 0 - assert not rdm_record["files"]["enabled"] + # Check the record in the database + record_id1 = actual_record.get("record_id") + rdm_record = records_service.read(system_identity, id_=record_id1).to_dict() + assert expected.compare_published(rdm_record) + def _check_response_files(self, actual_files, record_files): + assert actual_files == { + f.filename.split("/")[-1]: ["uploaded", []] for f in record_files + } -class TestImportAPIMetadataOnlyJournalArticle(BaseImportRecordsAPITest): - @property - def metadata_source(self): - return sample_metadata_journal_article_pdf["input"] + def _check_owners( + self, + actual_metadata: dict, + expected: TestRecordMetadataWithFiles, + uploader_id: str, + ): + expected_owners = ( + expected.metadata_in.get("parent", {}).get("access", {}).get("owned_by") + ) + if expected_owners: + first_expected_owner = expected.metadata_in["parent"]["access"]["owned_by"][ + 0 + ] + first_actual_owner = current_accounts.datastore.get_user_by_id( + actual_metadata["parent"]["access"]["owned_by"]["user"] + ) + assert first_actual_owner.email == first_expected_owner["email"] + if len(expected_owners) > 1: + other_expected_owners = expected.metadata_in["parent"]["access"][ + "owned_by" + ][1:] + other_actual_owners = actual_metadata["parent"]["access"]["grants"] + for oe, oa in zip(other_expected_owners, other_actual_owners): + user = current_accounts.datastore.get_user_by_email(oe["email"]) + assert oa["subject"]["id"] == str(user.id) + assert user.email == oe["email"] + + if oe.get("identifiers"): + kc_username = next( + ( + i["identifier"] + for i in oe["identifiers"] + if i["scheme"] == "kc_username" + ), + None, + ) + orcid = next( + ( + i["identifier"] + for i in oe["identifiers"] + if i["scheme"] == "orcid" + ), + None, + ) + neh_id = next( + ( + i["identifier"] + for i in oe["identifiers"] + if i["scheme"] == "neh_user_id" + ), + None, + ) + import_id = next( + ( + i["identifier"] + for i in oe["identifiers"] + if i["scheme"] == "import_user_id" + ), + None, + ) + if kc_username: + assert user.username in [ + kc_username, + f"knowledgeCommons-{kc_username}", + ] + if orcid: + assert user.user_profile["identifier_orcid"] == orcid + if neh_id: + other_user_ids = json.loads( + user.user_profile["identifier_other"] + ) + assert neh_id in other_user_ids.values() + if import_id: + other_user_ids = json.loads( + user.user_profile["identifier_other"] + ) + assert import_id in other_user_ids.values() + else: + assert actual_metadata["parent"]["access"]["owned_by"] == { + "user": uploader_id + } + assert actual_metadata["parent"]["access"]["grants"] == [] + def _check_failed_import( + self, import_result: dict, expected_error_list: list[dict] + ): + assert import_result["status"] == "error" + assert import_result.get("errors") == expected_error_list -class TestImportAPIMetadataOnlyJournalArticle2(BaseImportRecordsAPITest): - @property - def metadata_source(self): - return sample_metadata_journal_article2_pdf["input"] + def check_response_data( + self, + response, + app: Flask, + metadata_sources: list, + files: list, + community: dict, + uploader_id: str, + ): + expected_error_count = len([e for e in self.expected_errors if e]) + assert ( + len(response.json["data"]) == len(metadata_sources) - expected_error_count + ) + files_per_item = len(files) // len(metadata_sources) + for idx, actual_record_result in enumerate(response.json["data"]): + expected_error_list = self.expected_errors[idx] + assert actual_record_result["item_index"] == idx -class BaseImportRecordsAPIWithFilesTest: - """Base class for testing record imports with files via API.""" + if expected_error_list: + continue + else: + record_files = files[idx * files_per_item : (idx + 1) * files_per_item] - @property - def metadata_source(self): - """Override this in subclasses to provide specific metadata.""" - raise NotImplementedError + self._check_successful_import( + actual_record_result, + app, + community, + uploader_id, + metadata_sources[idx], + record_files, + ) - def test_import_records_api_with_files( + def test_import_records_api( self, running_app, db, minimal_community_factory, user_factory, + minimal_record_metadata, search_clear, mock_send_remote_api_update_fixture, + celery_worker, ): app = running_app.app - community_record = minimal_community_factory() - community = community_record.to_dict() u = user_factory(email="test@example.com", token=True, saml_id=None) token = u.allowed_token + user_id = u.user.id identity = get_identity(u.user) identity.provides.add(authenticated_user) - file_paths = [ - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.pdf", - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.jpg", - ] - file_list = [{"key": "sample.pdf"}, {"key": "sample.jpg"}] - file_entries = { - "sample.pdf": { - "key": "sample.pdf", - "size": 13264, - "mimetype": "application/pdf", - }, - "sample.jpg": { - "key": "sample.jpg", - "size": 1174188, - "mimetype": "image/jpeg", - }, - } - # TODO: We'll have to update this to allow multiple records in one test import - test_metadata = TestRecordMetadataWithFiles( - metadata_in=self.metadata_source, - community_list=[community], - owner_id=u.user.id, - file_entries=file_entries, - ) + community_record = minimal_community_factory(owner=user_id) + community = community_record.to_dict() + + # Remember to close the file streams after the import is complete + files, file_list, file_streams = self.files_to_upload + app.logger.debug(f"file_list type: {type(file_list)}") + app.logger.debug(f"files: {files}") + app.logger.debug(f"file_list: {file_list}") + app.logger.debug(f"file_streams: {file_streams}") + files_per_item = len(file_list) // len(self.metadata_sources) + + metadata_source_objects = [] + for idx, metadata_source in enumerate(self.metadata_sources): + item_files = file_list[idx * files_per_item : (idx + 1) * files_per_item] + file_entries = {f["key"]: f for f in item_files} + test_metadata = TestRecordMetadataWithFiles( + metadata_in=metadata_source, + community_list=[community], + owner_id=u.user.id, + file_entries=file_entries, + ) + + test_metadata.update_metadata( + { + "metadata|identifiers": [ + { + "identifier": f"1234567890{str(idx)}", + "scheme": "import-recid", + } + ] + } + ) + metadata_source_objects.append(test_metadata) with app.test_client() as client: - response = client.post( + actual_response = client.post( f"{app.config['SITE_API_URL']}/import/{community['slug']}", content_type="multipart/form-data", data={ - "metadata": json.dumps([test_metadata.metadata_in]), + "metadata": json.dumps( + [copy.deepcopy(m.metadata_in) for m in metadata_source_objects] + ), + "id_scheme": "import-recid", "review_required": "true", "strict_validation": "true", "all_or_none": "true", - "files": [open(file_path, "rb") for file_path in file_paths], + "files": file_streams, }, headers={ "Content-Type": "multipart/form-data", "Authorization": f"Bearer {token}", }, ) - print(response.text) - assert response.status_code == 201 - assert response.json["status"] == "success" - assert response.json["message"] == "All records were successfully imported" - assert response.json["errors"] == [] - assert len(response.json["data"]) == 1 - for index, record_result in enumerate(response.json["data"]): - - for k, f in file_entries.items(): - f["id"] = record_result.get("metadata")["files"]["entries"][k]["id"] - f["checksum"] = record_result.get("metadata")["files"]["entries"][ - k - ]["checksum"] - test_metadata.file_entries = file_entries - - assert record_result.get("item_index") == index - assert record_result.get("record_id") is not None - assert ( - record_result.get("record_url") - == f"{app.config['SITE_UI_URL']}/records/{record_result.get('record_id')}" # noqa: E501 - ) - assert record_result.get("collection_id") in [ - community["id"], - community["slug"], - ] - assert record_result.get("files") == { - f["key"]: ["uploaded", []] for f in file_list - } - assert record_result.get("errors") == [] - community.update( - { - "links": {}, - "metadata": { - **community["metadata"], - "type": {"id": "event"}, - }, - } - ) # FIXME: Why are links and title not expanded? - test_metadata.community_list = [community] - assert test_metadata.compare_published(record_result.get("metadata")) - - # Check the record in the database - record_id1 = record_result.get("record_id") - rdm_record = records_service.read( - system_identity, id_=record_id1 - ).to_dict() - assert len(rdm_record["files"]["entries"].keys()) == 2 - assert rdm_record["files"]["order"] == [] # FIXME: Why no order list? - assert rdm_record["files"]["total_bytes"] == 1187452 + for file in file_streams: + file.close() + + self.check_response_status(actual_response) + self.check_response_errors(actual_response) + self.check_response_data( + actual_response, app, metadata_source_objects, files, community, user_id + ) + + +class TestImportAPIJournalArticle(BaseImportRecordsAPITest): + @property + def metadata_sources(self): + return [ + copy.deepcopy(sample_metadata_journal_article_pdf["input"]), + copy.deepcopy(sample_metadata_journal_article2_pdf["input"]), + ] + + +# class BaseImportRecordsAPIWithFilesTest: +# """Base class for testing record imports with files via API.""" + +# @property +# def metadata_source(self): +# """Override this in subclasses to provide specific metadata.""" +# raise NotImplementedError + +# def test_import_records_api_with_files( +# self, +# running_app, +# db, +# minimal_community_factory, +# user_factory, +# search_clear, +# mock_send_remote_api_update_fixture, +# ): +# app = running_app.app +# community_record = minimal_community_factory() +# community = community_record.to_dict() +# u = user_factory(email="test@example.com", token=True, saml_id=None) +# token = u.allowed_token +# identity = get_identity(u.user) +# identity.provides.add(authenticated_user) + +# file_paths = [ +# Path(__file__).parent.parent.parent +# / "tests/helpers/sample_files/sample.pdf", +# Path(__file__).parent.parent.parent +# / "tests/helpers/sample_files/sample.jpg", +# ] +# file_list = [{"key": "sample.pdf"}, {"key": "sample.jpg"}] +# file_entries = { +# "sample.pdf": { +# "key": "sample.pdf", +# "size": 13264, +# "mimetype": "application/pdf", +# }, +# "sample.jpg": { +# "key": "sample.jpg", +# "size": 1174188, +# "mimetype": "image/jpeg", +# }, +# } +# # TODO: We'll have to update this to allow multiple records in one test import +# test_metadata = TestRecordMetadataWithFiles( +# metadata_in=self.metadata_source, +# community_list=[community], +# owner_id=u.user.id, +# file_entries=file_entries, +# ) + +# with app.test_client() as client: +# response = client.post( +# f"{app.config['SITE_API_URL']}/import/{community['slug']}", +# content_type="multipart/form-data", +# data={ +# "metadata": json.dumps([test_metadata.metadata_in]), +# "review_required": "true", +# "strict_validation": "true", +# "all_or_none": "true", +# "files": [open(file_path, "rb") for file_path in file_paths], +# }, +# headers={ +# "Content-Type": "multipart/form-data", +# "Authorization": f"Bearer {token}", +# }, +# ) +# print(response.text) +# assert response.status_code == 201 +# assert response.json["status"] == "success" +# assert response.json["message"] == "All records were successfully imported" +# assert response.json["errors"] == [] +# assert len(response.json["data"]) == 1 +# for index, record_result in enumerate(response.json["data"]): + +# for k, f in file_entries.items(): +# f["id"] = record_result.get("metadata")["files"]["entries"][k]["id"] +# f["checksum"] = record_result.get("metadata")["files"]["entries"][ +# k +# ]["checksum"] +# test_metadata.file_entries = file_entries + +# assert record_result.get("item_index") == index +# assert record_result.get("record_id") is not None +# assert ( +# record_result.get("record_url") +# == f"{app.config['SITE_UI_URL']}/records/{record_result.get('record_id')}" # noqa: E501 +# ) +# assert record_result.get("collection_id") in [ +# community["id"], +# community["slug"], +# ] +# assert record_result.get("files") == { +# f["key"]: ["uploaded", []] for f in file_list +# } +# assert record_result.get("errors") == [] + +# community.update( +# { +# "links": {}, +# "metadata": { +# **community["metadata"], +# "type": {"id": "event"}, +# }, +# } +# ) # FIXME: Why are links and title not expanded? +# test_metadata.community_list = [community] +# assert test_metadata.compare_published(record_result.get("metadata")) + +# # Check the record in the database +# record_id1 = record_result.get("record_id") +# rdm_record = records_service.read( +# system_identity, id_=record_id1 +# ).to_dict() +# assert len(rdm_record["files"]["entries"].keys()) == 2 +# assert rdm_record["files"]["order"] == [] # FIXME: Why no order list? +# assert rdm_record["files"]["total_bytes"] == 1187452 diff --git a/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py b/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py index 75da0109a..a34f0b714 100644 --- a/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py +++ b/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py @@ -170,11 +170,7 @@ "philologically." ), "identifiers": [ - {"identifier": "hc:33383", "scheme": "hclegacy-pid"}, - { - "identifier": "1000360-40298", - "scheme": "hclegacy-record-id", - }, + {"identifier": "1234567890", "scheme": "import-recid"}, {"identifier": "10.1163/24519197-BJA10007", "scheme": "doi"}, {"identifier": "2451-9197", "scheme": "issn"}, ], From f776e304e37931e95362d9a279ba21e6fa7715be Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Mon, 17 Feb 2025 21:47:40 -0500 Subject: [PATCH 12/22] feature(neh; import): Work in progress on import API endpoint; basic error handling working on service for validation and file errors --- .../invenio-record-importer-kcworks | 2 +- site/tests/api/test_api_import.py | 752 ++++-------------- site/tests/fixtures/records.py | 15 +- 3 files changed, 175 insertions(+), 594 deletions(-) diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index 3d4b3ec4b..7459be92e 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit 3d4b3ec4bf4a5bddf5578167b72c6b11b1fc8bdc +Subproject commit 7459be92ea20f275d22895975429b6e255db2cab diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index c3a4cd686..29f3eaafd 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -1,6 +1,5 @@ from invenio_vocabularies.proxies import current_service as current_vocabulary_service from invenio_vocabularies.records.api import Vocabulary -from invenio_access.permissions import system_identity import copy from flask import Flask from flask_login import login_user @@ -16,10 +15,10 @@ ) import json from pathlib import Path - from pprint import pformat import re import sys +from typing import Optional from ..fixtures.files import file_md5 from ..fixtures.records import TestRecordMetadata, TestRecordMetadataWithFiles from ..helpers.sample_records import ( @@ -645,6 +644,10 @@ def metadata_source(self): class BaseImportServiceTest: """Base class for testing record imports with the service.""" + @property + def by_api(self): + return False + @property def metadata_sources(self): """Override this in subclasses to provide specific metadata.""" @@ -749,8 +752,10 @@ def expected_errors(self): """ return [[]] * len(self.metadata_sources) - def check_result_status(self, import_results: dict): - if not self.expected_errors: + def check_result_status(self, import_results: dict, status_code: Optional[int]): + if not any([e for e in self.expected_errors if e]): + if self.by_api: + assert status_code == 201 assert len(import_results["data"]) == len(self.metadata_sources) assert import_results.get("status") == "success" assert ( @@ -758,20 +763,63 @@ def check_result_status(self, import_results: dict): == "All records were successfully imported" ) else: + if self.by_api: + assert status_code == 400 + assert len(import_results["data"]) == 0 assert import_results.get("status") == "error" - assert import_results.get("message") == ( - "No records were successfully imported. Please check the list of " - "failed records in the 'errors' field for more information. Each " - "failed item should have its own list of specific errors." - ) - def check_result_errors(self, import_results: dict): - assert import_results.get("errors") == [] + # if only some records are expected to fail + if len([e for e in self.expected_errors if e]) < len(self.metadata_sources): + assert import_results.get("message") == ( + "Some records could not be imported, and the 'all_or_none' flag " + "was set to True, so the import was aborted and no records were " + "created. Please check the list of failed records in the " + "'errors' field for more information. Each failed item should have " + "its own list of specific errors." + ) + # if all records are expected to fail + else: + assert import_results.get("message") == ( + "No records were successfully imported. Please check the list of " + "failed records in the 'errors' field for more information. Each " + "failed item should have its own list of specific errors." + ) + + def _check_response_files(self, actual_files, record_files): + assert actual_files == { + f.filename.split("/")[-1]: ["uploaded", []] for f in record_files + } + + def check_result_errors(self, import_results: dict) -> None: + if not any([e for e in self.expected_errors if e]): + assert import_results.get("errors") == [] + return + error_item_indices = [ + index for index, error in enumerate(self.expected_errors) if error + ] + assert len(import_results["errors"]) == len(error_item_indices) + for i, actual_error_item in enumerate(import_results["errors"]): + assert actual_error_item["item_index"] == error_item_indices[i] + assert ( + actual_error_item["errors"] + == self.expected_errors[error_item_indices[i]] + ) + if actual_error_item[ + "metadata" + ]: # make sure metadata present when expected + item_recid = actual_error_item["metadata"]["id"] + assert item_recid not in [ + r["metadata"]["id"] for r in import_results["data"] + ] + created_record = records_service.read( + system_identity, id_=item_recid + ).to_dict() + assert created_record["status"] == "deleted" def _check_owners( self, actual_metadata: dict, - expected: TestRecordMetadata, + expected: TestRecordMetadataWithFiles, uploader_id: str, ): expected_owners = ( @@ -856,26 +904,26 @@ def _check_successful_import( actual: dict, app: Flask, record_files: list, - expected: TestRecordMetadata, + expected: TestRecordMetadataWithFiles, community: dict, uploader_id: str, ): actual_metadata = actual.get("metadata") assert actual_metadata - actual_import_id = actual.get("record_id") + actual_import_id = actual.get("source_id") assert actual_import_id == next( i.get("identifier") - for i in actual_metadata.get("identifiers") + for i in actual_metadata.get("metadata", {}).get("identifiers") if i.get("scheme") == "import-recid" ) actual_record_id = actual_metadata.get("id") + assert actual_record_id == actual.get("record_id") actual_record_url = actual.get("record_url") - assert ( - actual_record_url - == f"{app.config['SITE_UI_URL']}/records/{actual_record_id}" + assert actual_record_url == ( + f"{app.config['SITE_UI_URL']}/records/{actual_record_id}" ) actual_collection_id = actual.get("collection_id") @@ -887,10 +935,7 @@ def _check_successful_import( assert actual.get("errors") == [] # comparing file list separately from file entries in metadata - actual_files = actual.get("files") - assert actual_files == { - f.filename.split("/")[-1]: ["uploaded", []] for f in record_files - } + self._check_response_files(actual.get("files"), record_files) # add ids and checksums from actual file entries to the expected # file entries to compare file entries in metadata @@ -901,6 +946,11 @@ def _check_successful_import( self._check_owners(actual_metadata, expected, uploader_id) + # Check the record in the database + record_id1 = actual_metadata.get("id") + rdm_record = records_service.read(system_identity, id_=record_id1).to_dict() + assert expected.compare_published(rdm_record) + def _check_failed_import( self, import_result: dict, expected_error_list: list[dict] ): @@ -915,9 +965,13 @@ def check_result_data( metadata_sources: list, community: dict, uploader_id: str, - ): - assert len(import_results["data"]) + len(import_results["errors"]) == len( - metadata_sources + ) -> None: + expected_error_count = len([e for e in self.expected_errors if e]) + if expected_error_count > 0: + assert len(import_results["data"]) == 0 + return + assert ( + len(import_results["data"]) == len(metadata_sources) - expected_error_count ) files_per_item = len(files) // len(metadata_sources) for idx, actual_record_result in enumerate(import_results["data"]): @@ -928,7 +982,9 @@ def check_result_data( if expected_error_list: self._check_failed_import(actual_record_result, expected_error_list) else: - record_files = files[idx * files_per_item : (idx + 1) * files_per_item] + record_files = files[ + idx * files_per_item : (idx + 1) * files_per_item # noqa: E203 + ] self._check_successful_import( actual_record_result, @@ -939,6 +995,36 @@ def check_result_data( uploader_id, ) + def _do_api_import( + self, + app: Flask, + community: dict, + file_streams: list, + token: str, + metadata_source_objects: list[TestRecordMetadataWithFiles], + ) -> tuple[Optional[dict], int]: + with app.test_client() as client: + actual_response = client.post( + f"{app.config['SITE_API_URL']}/import/{community['slug']}", + content_type="multipart/form-data", + data={ + "metadata": json.dumps( + [copy.deepcopy(m.metadata_in) for m in metadata_source_objects] + ), + "id_scheme": "import-recid", + "review_required": "true", + "strict_validation": "true", + "all_or_none": "true", + "files": file_streams, + }, + headers={ + "Content-Type": "multipart/form-data", + "Authorization": f"Bearer {token}", + }, + ) + + return actual_response.json, actual_response.status_code + def test_import_records_service_load( self, running_app, @@ -950,10 +1036,13 @@ def test_import_records_service_load( ): app = running_app.app u = user_factory(email="test@example.com", token=True, saml_id=None) - identity = get_identity(u.user) user_id = u.user.id + identity = get_identity(u.user) identity.provides.add(authenticated_user) - login_user(u.user) + if self.by_api: + token = u.allowed_token + else: + login_user(u.user) # FIXME: We need to actually create a KC account for the users # assigned as owners, not just a KCWorks account. Or maybe send @@ -968,11 +1057,13 @@ def test_import_records_service_load( files_per_item = len(file_list) // len(self.metadata_sources) metadata_source_objects = [] - for idx, d in enumerate(self.metadata_sources): - item_files = file_list[idx * files_per_item : (idx + 1) * files_per_item] + for idx, metadata_source in enumerate(self.metadata_sources): + item_files = file_list[ + idx * files_per_item : (idx + 1) * files_per_item # noqa: E203 + ] file_entries = {f["key"]: f for f in item_files} test_metadata = TestRecordMetadataWithFiles( - metadata_in=d, + metadata_in=metadata_source, community_list=[community], owner_id=u.user.id, file_entries=file_entries, @@ -983,25 +1074,38 @@ def test_import_records_service_load( "metadata|identifiers": [ { "identifier": f"1234567890{str(idx)}", - "scheme": "neh-recid", + "scheme": "import-recid", } ] } ) metadata_source_objects.append(test_metadata) - service = current_record_importer_service - import_results = service.import_records( - file_data=files, - metadata=[copy.deepcopy(m.metadata_in) for m in metadata_source_objects], - user_id=user_id, - community_id=community["id"], - ) + if self.by_api: + import_results, status_code = self._do_api_import( + app, + community, + file_streams, + token, + metadata_source_objects, + ) + else: + service = current_record_importer_service + import_results = service.import_records( + file_data=files, + metadata=[ + copy.deepcopy(m.metadata_in) for m in metadata_source_objects + ], + user_id=user_id, + community_id=community["id"], + ) + status_code = None for file in file_streams: file.close() - self.check_result_status(import_results) + assert import_results is not None + self.check_result_status(import_results, status_code) self.check_result_errors(import_results) self.check_result_data( import_results, @@ -1009,7 +1113,6 @@ def test_import_records_service_load( files, metadata_source_objects, community, - self.expected_errors, user_id, ) @@ -1035,51 +1138,7 @@ def metadata_sources(self): ] -class BaseImportServiceErrorTestAllOrNone(BaseImportServiceTest): - """Base class for testing record imports with errors.""" - - def check_result_status(self, import_results: dict): - assert len(import_results["data"]) == 0 - assert import_results.get("status") == "error" - # if only some records are expected to fail - if len([e for e in self.expected_errors if e]) < len(self.metadata_sources): - assert ( - import_results.get("message") - == "Some records could not be imported, and the 'all_or_none' flag was " - "set to True, so the import was aborted." - ) # noqa: E501 - # if all records are expected to fail - else: - assert import_results.get("message") == "" - - def check_result_errors(self, import_results: dict): - error_item_indices = [ - index for index, error in enumerate(self.expected_errors) if error - ] - assert len(import_results["errors"]) == len(error_item_indices) - for i, actual_error_item in enumerate(import_results["errors"]): - assert actual_error_item["item_index"] == error_item_indices[i] - assert ( - actual_error_item["errors"] - == self.expected_errors[error_item_indices[i]] - ) - if actual_error_item[ - "metadata" - ]: # make sure metadata present when expected - item_recid = actual_error_item["metadata"]["id"] - assert item_recid not in [ - r["metadata"]["id"] for r in import_results["data"] - ] - created_record = records_service.read( - system_identity, id_=item_recid - ).to_dict() - assert created_record["status"] == "deleted" - - def check_result_data(self, import_results: dict, *args, **kwargs): - assert len(import_results["data"]) == 0 - - -class TestImportServiceJArticleErrorTitle(BaseImportServiceErrorTestAllOrNone): +class TestImportServiceJArticleErrorTitle(BaseImportServiceTest): @property def metadata_sources(self): meta1 = copy.deepcopy(sample_metadata_chapter_pdf["input"]) @@ -1101,7 +1160,7 @@ def expected_errors(self): ] -class TestImportServiceJArticleErrorMissingFile(BaseImportServiceErrorTestAllOrNone): +class TestImportServiceJArticleErrorMissingFile(BaseImportServiceTest): @property def metadata_sources(self): meta1 = copy.deepcopy(sample_metadata_chapter_pdf["input"]) @@ -1144,396 +1203,13 @@ def expected_errors(self): ] -class BaseImportRecordsAPITest: - """Base class for testing record imports with the API.""" +class TestImportAPIJournalArticle(BaseImportServiceTest): + """Test importing two journal articles via the API with no errors.""" @property - def metadata_sources(self): - """Override this in subclasses to provide specific metadata.""" - raise NotImplementedError + def by_api(self): + return True - @property - def files_to_upload(self): - """Override this in subclasses to provide specific files to upload.""" - file_paths = [ - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.pdf", - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.jpg", - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample2.pdf", - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.csv", - ] - file1 = open(file_paths[0], "rb") - file2 = open(file_paths[1], "rb") - file3 = open(file_paths[2], "rb") - file4 = open(file_paths[3], "rb") - files = [ - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.pdf" - ), - stream=file1, - content_type="application/pdf", - mimetype="application/pdf", - mimetype_params={}, - ), - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.jpg" - ), - stream=file2, - content_type="image/jpeg", - mimetype="image/jpeg", - mimetype_params={}, - ), - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample2.pdf" - ), - stream=file3, - content_type="application/pdf", - mimetype="application/pdf", - mimetype_params={}, - ), - FileData( - filename=str( - Path(__file__).parent.parent.parent - / "tests/helpers/sample_files/sample.csv" - ), - stream=file4, - content_type="text/csv", - mimetype="text/csv", - mimetype_params={}, - ), - ] - file_list = [ - { - "key": "sample.pdf", - "mimetype": "application/pdf", - "size": 13264, # FIXME: Check reporting of mismatch - }, - { - "key": "sample.jpg", - "mimetype": "image/jpeg", - "size": 1174188, - }, - { - "key": "sample2.pdf", - "mimetype": "application/pdf", - "size": 13264, # FIXME: Check reporting of mismatch - }, - { - "key": "sample.csv", - "mimetype": "text/csv", - "size": 17261, - }, - ] - file_streams = [file1, file2, file3, file4] - return files, file_list, file_streams - - @property - def expected_errors(self): - """Override this in subclasses to provide specific expected errors.""" - return [[]] * len(self.metadata_sources) - - def check_response_status(self, response): - if not any([e for e in self.expected_errors if e]): - assert response.status_code == 201 - assert response.json["status"] == "success" - assert response.json["message"] == "All records were successfully imported" - else: - assert response.status_code == 400 - assert response.json["status"] == "error" - assert response.json["message"] == ( - "Some records could not be imported, and the 'all_or_none' flag was " - "set to True, so the import was aborted." - ) # noqa: E501 - - def check_response_errors(self, response): - assert response.json["errors"] == [] - - def _check_successful_import( - self, - actual_record: dict, - app: Flask, - community: dict, - uploader_id: str, - expected: TestRecordMetadataWithFiles, - record_files: list, - ): - actual_metadata = actual_record.get("metadata") - assert actual_metadata - - actual_import_id = actual_record.get("record_id") - assert actual_import_id - assert actual_import_id == next( - i.get("identifier") - for i in actual_metadata.get("identifiers") - if i.get("scheme") == "import-recid" - ) - - actual_record_id = actual_metadata.get("id") - - actual_record_url = actual_record.get("record_url") - assert actual_record_url == ( - f"{app.config['SITE_UI_URL']}/records/{actual_record_id}" - ) - - actual_collection_id = actual_metadata.get("collection_id") - assert actual_collection_id in [community["id"], community["slug"]] - - assert actual_collection_id == actual_metadata.get("parent", {}).get( - "communities", {} - ).get("entries", [])[0].get("id") - assert actual_collection_id == actual_metadata.get("parent", {}).get( - "communities", {} - ).get("entries", [])[0].get("id") - - assert actual_record.get("errors") == [] - - # comparing file list separately from file entries in metadata - actual_files = actual_record.get("files") - self.check_response_files(actual_files, record_files) - - # add ids and checksums from actual file entries to the expected - # file entries to compare file entries in metadata - for k, f in expected.file_entries.items(): - f["id"] = actual_metadata["files"]["entries"][k]["id"] - f["checksum"] = actual_metadata["files"]["entries"][k]["checksum"] - - community.update( - { - "links": {}, - "metadata": { - **community["metadata"], - "type": {"id": "event"}, - }, - } - ) # FIXME: Why are links and title not expanded? - assert expected.compare_published(actual_metadata) - - self._check_owners(actual_metadata, expected, uploader_id) - - # Check the record in the database - record_id1 = actual_record.get("record_id") - rdm_record = records_service.read(system_identity, id_=record_id1).to_dict() - assert expected.compare_published(rdm_record) - - def _check_response_files(self, actual_files, record_files): - assert actual_files == { - f.filename.split("/")[-1]: ["uploaded", []] for f in record_files - } - - def _check_owners( - self, - actual_metadata: dict, - expected: TestRecordMetadataWithFiles, - uploader_id: str, - ): - expected_owners = ( - expected.metadata_in.get("parent", {}).get("access", {}).get("owned_by") - ) - if expected_owners: - first_expected_owner = expected.metadata_in["parent"]["access"]["owned_by"][ - 0 - ] - first_actual_owner = current_accounts.datastore.get_user_by_id( - actual_metadata["parent"]["access"]["owned_by"]["user"] - ) - assert first_actual_owner.email == first_expected_owner["email"] - if len(expected_owners) > 1: - other_expected_owners = expected.metadata_in["parent"]["access"][ - "owned_by" - ][1:] - other_actual_owners = actual_metadata["parent"]["access"]["grants"] - for oe, oa in zip(other_expected_owners, other_actual_owners): - user = current_accounts.datastore.get_user_by_email(oe["email"]) - assert oa["subject"]["id"] == str(user.id) - assert user.email == oe["email"] - - if oe.get("identifiers"): - kc_username = next( - ( - i["identifier"] - for i in oe["identifiers"] - if i["scheme"] == "kc_username" - ), - None, - ) - orcid = next( - ( - i["identifier"] - for i in oe["identifiers"] - if i["scheme"] == "orcid" - ), - None, - ) - neh_id = next( - ( - i["identifier"] - for i in oe["identifiers"] - if i["scheme"] == "neh_user_id" - ), - None, - ) - import_id = next( - ( - i["identifier"] - for i in oe["identifiers"] - if i["scheme"] == "import_user_id" - ), - None, - ) - if kc_username: - assert user.username in [ - kc_username, - f"knowledgeCommons-{kc_username}", - ] - if orcid: - assert user.user_profile["identifier_orcid"] == orcid - if neh_id: - other_user_ids = json.loads( - user.user_profile["identifier_other"] - ) - assert neh_id in other_user_ids.values() - if import_id: - other_user_ids = json.loads( - user.user_profile["identifier_other"] - ) - assert import_id in other_user_ids.values() - else: - assert actual_metadata["parent"]["access"]["owned_by"] == { - "user": uploader_id - } - assert actual_metadata["parent"]["access"]["grants"] == [] - - def _check_failed_import( - self, import_result: dict, expected_error_list: list[dict] - ): - assert import_result["status"] == "error" - assert import_result.get("errors") == expected_error_list - - def check_response_data( - self, - response, - app: Flask, - metadata_sources: list, - files: list, - community: dict, - uploader_id: str, - ): - expected_error_count = len([e for e in self.expected_errors if e]) - assert ( - len(response.json["data"]) == len(metadata_sources) - expected_error_count - ) - files_per_item = len(files) // len(metadata_sources) - for idx, actual_record_result in enumerate(response.json["data"]): - - expected_error_list = self.expected_errors[idx] - assert actual_record_result["item_index"] == idx - - if expected_error_list: - continue - else: - record_files = files[idx * files_per_item : (idx + 1) * files_per_item] - - self._check_successful_import( - actual_record_result, - app, - community, - uploader_id, - metadata_sources[idx], - record_files, - ) - - def test_import_records_api( - self, - running_app, - db, - minimal_community_factory, - user_factory, - minimal_record_metadata, - search_clear, - mock_send_remote_api_update_fixture, - celery_worker, - ): - app = running_app.app - u = user_factory(email="test@example.com", token=True, saml_id=None) - token = u.allowed_token - user_id = u.user.id - identity = get_identity(u.user) - identity.provides.add(authenticated_user) - - community_record = minimal_community_factory(owner=user_id) - community = community_record.to_dict() - - # Remember to close the file streams after the import is complete - files, file_list, file_streams = self.files_to_upload - app.logger.debug(f"file_list type: {type(file_list)}") - app.logger.debug(f"files: {files}") - app.logger.debug(f"file_list: {file_list}") - app.logger.debug(f"file_streams: {file_streams}") - files_per_item = len(file_list) // len(self.metadata_sources) - - metadata_source_objects = [] - for idx, metadata_source in enumerate(self.metadata_sources): - item_files = file_list[idx * files_per_item : (idx + 1) * files_per_item] - file_entries = {f["key"]: f for f in item_files} - test_metadata = TestRecordMetadataWithFiles( - metadata_in=metadata_source, - community_list=[community], - owner_id=u.user.id, - file_entries=file_entries, - ) - - test_metadata.update_metadata( - { - "metadata|identifiers": [ - { - "identifier": f"1234567890{str(idx)}", - "scheme": "import-recid", - } - ] - } - ) - metadata_source_objects.append(test_metadata) - - with app.test_client() as client: - actual_response = client.post( - f"{app.config['SITE_API_URL']}/import/{community['slug']}", - content_type="multipart/form-data", - data={ - "metadata": json.dumps( - [copy.deepcopy(m.metadata_in) for m in metadata_source_objects] - ), - "id_scheme": "import-recid", - "review_required": "true", - "strict_validation": "true", - "all_or_none": "true", - "files": file_streams, - }, - headers={ - "Content-Type": "multipart/form-data", - "Authorization": f"Bearer {token}", - }, - ) - - for file in file_streams: - file.close() - - self.check_response_status(actual_response) - self.check_response_errors(actual_response) - self.check_response_data( - actual_response, app, metadata_source_objects, files, community, user_id - ) - - -class TestImportAPIJournalArticle(BaseImportRecordsAPITest): @property def metadata_sources(self): return [ @@ -1542,121 +1218,15 @@ def metadata_sources(self): ] -# class BaseImportRecordsAPIWithFilesTest: -# """Base class for testing record imports with files via API.""" +class TestImportAPIJournalArticleErrorTitle(TestImportServiceJArticleErrorTitle): + @property + def by_api(self): + return True -# @property -# def metadata_source(self): -# """Override this in subclasses to provide specific metadata.""" -# raise NotImplementedError - -# def test_import_records_api_with_files( -# self, -# running_app, -# db, -# minimal_community_factory, -# user_factory, -# search_clear, -# mock_send_remote_api_update_fixture, -# ): -# app = running_app.app -# community_record = minimal_community_factory() -# community = community_record.to_dict() -# u = user_factory(email="test@example.com", token=True, saml_id=None) -# token = u.allowed_token -# identity = get_identity(u.user) -# identity.provides.add(authenticated_user) - -# file_paths = [ -# Path(__file__).parent.parent.parent -# / "tests/helpers/sample_files/sample.pdf", -# Path(__file__).parent.parent.parent -# / "tests/helpers/sample_files/sample.jpg", -# ] -# file_list = [{"key": "sample.pdf"}, {"key": "sample.jpg"}] -# file_entries = { -# "sample.pdf": { -# "key": "sample.pdf", -# "size": 13264, -# "mimetype": "application/pdf", -# }, -# "sample.jpg": { -# "key": "sample.jpg", -# "size": 1174188, -# "mimetype": "image/jpeg", -# }, -# } -# # TODO: We'll have to update this to allow multiple records in one test import -# test_metadata = TestRecordMetadataWithFiles( -# metadata_in=self.metadata_source, -# community_list=[community], -# owner_id=u.user.id, -# file_entries=file_entries, -# ) - -# with app.test_client() as client: -# response = client.post( -# f"{app.config['SITE_API_URL']}/import/{community['slug']}", -# content_type="multipart/form-data", -# data={ -# "metadata": json.dumps([test_metadata.metadata_in]), -# "review_required": "true", -# "strict_validation": "true", -# "all_or_none": "true", -# "files": [open(file_path, "rb") for file_path in file_paths], -# }, -# headers={ -# "Content-Type": "multipart/form-data", -# "Authorization": f"Bearer {token}", -# }, -# ) -# print(response.text) -# assert response.status_code == 201 -# assert response.json["status"] == "success" -# assert response.json["message"] == "All records were successfully imported" -# assert response.json["errors"] == [] -# assert len(response.json["data"]) == 1 -# for index, record_result in enumerate(response.json["data"]): - -# for k, f in file_entries.items(): -# f["id"] = record_result.get("metadata")["files"]["entries"][k]["id"] -# f["checksum"] = record_result.get("metadata")["files"]["entries"][ -# k -# ]["checksum"] -# test_metadata.file_entries = file_entries - -# assert record_result.get("item_index") == index -# assert record_result.get("record_id") is not None -# assert ( -# record_result.get("record_url") -# == f"{app.config['SITE_UI_URL']}/records/{record_result.get('record_id')}" # noqa: E501 -# ) -# assert record_result.get("collection_id") in [ -# community["id"], -# community["slug"], -# ] -# assert record_result.get("files") == { -# f["key"]: ["uploaded", []] for f in file_list -# } -# assert record_result.get("errors") == [] - -# community.update( -# { -# "links": {}, -# "metadata": { -# **community["metadata"], -# "type": {"id": "event"}, -# }, -# } -# ) # FIXME: Why are links and title not expanded? -# test_metadata.community_list = [community] -# assert test_metadata.compare_published(record_result.get("metadata")) - -# # Check the record in the database -# record_id1 = record_result.get("record_id") -# rdm_record = records_service.read( -# system_identity, id_=record_id1 -# ).to_dict() -# assert len(rdm_record["files"]["entries"].keys()) == 2 -# assert rdm_record["files"]["order"] == [] # FIXME: Why no order list? -# assert rdm_record["files"]["total_bytes"] == 1187452 + +class TestImportAPIJournalArticleErrorMissingFile( + TestImportServiceJArticleErrorMissingFile +): + @property + def by_api(self): + return True diff --git a/site/tests/fixtures/records.py b/site/tests/fixtures/records.py index f5ab2cc57..55f551935 100644 --- a/site/tests/fixtures/records.py +++ b/site/tests/fixtures/records.py @@ -691,6 +691,7 @@ def compare_published( actual["parent"]["communities"]["default"] == self.community_list[0]["id"] ) + for community in self.community_list: actual_c = [ c @@ -722,10 +723,10 @@ def compare_published( "provider": "datacite", }, } - assert actual["pids"] == { + expected_pids = { "doi": { "client": "datacite", - "identifier": f"{actual['pids']['doi']['identifier']}", + "identifier": actual["pids"]["doi"]["identifier"], "provider": "datacite", }, "oai": { @@ -733,6 +734,16 @@ def compare_published( "provider": "oai", }, } + try: + assert actual["pids"] == expected_pids + except AssertionError as e: + expected_pids["oai"]["identifier"] = expected_pids["oai"][ + "identifier" + ].replace( + app.config["SITE_UI_URL"], "https://localhost:5000" + ) # 127.0.0.1 is not always working in tests + app.logger.error(f"Assertion failed: {e}") + assert actual["pids"] == expected_pids # assert actual["revision_id"] == 4 # NOTE: Too difficult to test assert actual["stats"] == expected["stats"] assert actual["status"] == "published" From 8bd42242dd12b9c0886c45725a51d767d96623ff Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Tue, 18 Feb 2025 13:53:32 -0500 Subject: [PATCH 13/22] fix(docs): API docs updates --- docs/source/api.md | 276 +++++++++++++++++++++++++++++++-------------- 1 file changed, 191 insertions(+), 85 deletions(-) diff --git a/docs/source/api.md b/docs/source/api.md index d64398b61..e9a2eb6ed 100644 --- a/docs/source/api.md +++ b/docs/source/api.md @@ -145,13 +145,15 @@ This request must be made with a multipart/form-data request. The request body m | `strict_validation` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the import request should be rejected if any validation errors are encountered. If this value is "false", the imported work will be created in KCWorks even if some of the provided metadata does not conform to the KCWorks metadata schema, provided these are not required fields. If this value is "true", the import request will be rejected if any validation errors are encountered. (Default: "true") | | `all_or_none` | no | `text/plain` | A string representation of a boolean (either "true" or "false") indicating whether the entire import request should be rejected if any of the works fail to be created (whether for validation errors, upload errors, or other reasons). If this value is "false", the import request will be accepted even if some of the works cannot be created. The response in this case will include a list of works that were successfully created and a list of errors for the works that failed to be created. (Default: "true") | +#### Identifying the owners of the work + The array of owners, if provided in a metadata object's `parent.access.owned_by` property, must include at least the full name and email address of the users to be added as owners of the work. If the user already has a Knowledge Commons account, their username should also be provided. Additional identifiers (e.g., ORCID) may be provided as well to help avoid duplicate accounts, since a KCWorks account will be created for each user if they do not already have one. | key | required | type | description | |-----|----------|------|-------------| | `full_name` | yes | `string` | The full name of the user. | | `email` | yes | `string` | The email address of the user. | -| `identifiers` | no | `array` | An array of identifiers for the user. Any identifier schemes supported by KCWorks will be accepted. If the user already has a KCWorks account, the `kc_username` scheme should be used and the user's username provided as the identifier. | +| `identifiers` | no | `array` | An array of identifiers for the user. Any identifier schemes supported by KCWorks will be accepted. If the user already has a KCWorks account, the `kc_username` scheme should be used and the user's username provided as the identifier. If you wish to provide an ORCID, it is recommended to use the `orcid` scheme. Identifiers for external organizations should be provided using the `import_user_id` scheme. | The resulting `owners` list should be shaped like this: @@ -168,6 +170,10 @@ The resulting `owners` list should be shaped like this: { "identifier": "jdoe", "scheme": "kc_username" + }, + { + "identifier": "1234567890", + "scheme": "import_user_id" } ] } @@ -175,6 +181,126 @@ The resulting `owners` list should be shaped like this: ``` Note that it is *not* assumed that the creators of a work should be the work's owners. The creators will only be added as owners if each of them is listed in the `access.owned_by` property of the work's metadata object. +> Note, too, that only the first member of the owners array will technically be assigned as the work's owner in KCWorks. The other owners will be assigned access grants to the work with "manage" permissions. + +#### Identifying the work for import + +It is crucial that each work to be imported is assigned a unique identifier. This may be an identifier used internally by the importing organization, it may be a universally unique string such as a UUID, or it may be a universal identifier such as a DOI or a handle. In either case it must be unique across all works to be imported for the collection. This identifier will be used to identify the work in the response, and will be used to identify the work when checking for duplicate imports. + +The identifier may be provided in the `metadata` object as an `identifiers` array with the scheme `import-recid`. E.g., + +```json +{ + "identifiers": [ + { + "identifier": "1234567890", + "scheme": "import-recid" + }, + // ... other identifiers ... + ] +} +``` + +### Example import request + +The following example shows a request to import a single work with two files and a single owner. + +#### Metadata JSON object + +The metadata JSON object for a journal article with a PDF file and a Word file, with a single owner might look like this: + +```json +{ + "metadata": { + "resource_type": { + "id": "textDocument-journalArticle", + }, + "creators": [ + { + "person_or_org": { + "type": "personal", + "name": "Fitzpatrick, Kathleen", + "given_name": "Kathleen", + "family_name": "Fitzpatrick", + "identifiers": [ { "identifier": "kfitz", "scheme": "kc_username" } ] + }, + "role": { "id": "author" }, + "affiliations": [ { "name": "Modern Languages Association" } ] + } + ], + "title": "Giving It Away: Sharing and the Future of Scholarly Communication", + "publisher": "University of Toronto Press Inc. (UTPress)", + "publication_date": "2012", + "languages": [ { "id": "eng" } ], + "identifiers": [ + { "identifier": "1234567890", "scheme": "import-recid" }, + { "identifier": "10.3138/jsp.43.4.347", "scheme": "doi" }, + { "identifier": "1710-1166", "scheme": "issn" }, + ], + "rights": [ + { + "id": "cc-by-4.0", + "title": { + "en": "Creative Commons Attribution 4.0 International" + }, + } + ], + "description": "Open access has great potential to transform the future of scholarly communication, but its success will require a focus on values -- and particularly generosity -- rather than on costs." + }, + "custom_fields": { + "journal:journal": { + "title": "Journal of Scholarly Publishing", + "issue": "4", + "volume": "43", + "pages": "347-362", + "issn": "1198-9742" + }, + "kcr:user_defined_tags": [ + "open access", + "Scholarly communication" + ], + }, + "parent": { + "owned_by": [ + { + "full_name": "Kathleen Fitzpatrick", + "email": "kfitz@msu.edu", + "identifiers": [ { "identifier": "kfitz", "scheme": "kc_username" } ] + } + ] + }, + "files": { + "enabled": true, + "entries": { + "fitzpatrick-givingitaway.docx": { + "size": 149619, + "key": "fitzpatrick-givingitaway.docx", + }, + "fitzpatrick-givingitaway.pdf": { + "size": 234567, + "key": "fitzpatrick-givingitaway.pdf", + } + } + }, +} +``` + +#### Request + +To submit the article to be included in the `my-organization` collection, one might use a command line tool like `curl`, with the following command. + +``` +curl -X POST https://works.hcommons.org/api/import/my-collection-id \ + -H "Content-Type: multipart/form-data" \ + -H "Accept: application/json" \ + -H "Authorization: Bearer " \ + -F "files=@path/to/files/fitzpatrick-givingitaway.pdf" \ + -F "files=@path/to/files/fitzpatrick-givingitaway.docx" \ + -F "metadata={// ... metadata JSON object goes here as a string ... //}" +``` + +Of course, in most cases the request will be made programmatically, not via a command line tool. The syntax for the request will vary depending on the programming language and tools being used. + ### A successful import response ``` @@ -194,7 +320,8 @@ Each object in the `data` array will have the following fields: | key | type | description | |-----|------|-------------| | `item_index` | `integer` | The index of the record in the import request. (Starting with 0 for the first record.) | -| `record_id` | `string` | The KCWorks ID of the new work. | +| `record_id` | `string` | The internal KCWorks ID of the new work. | +| `source_id` | `string` | The external identifier for the work that was provided in the import request using the `import-recid` scheme. | | `record_url` | `string` | The URL of the new work. This is the URL of the work's landing page on KCWorks. Other URLs for the work, including the endpoints for API operations, are available in the `links` property of the record's `metadata` object. | | `files` | `object` | An object whose keys are the filenames for the files that were successfully uploaded and whose values are 2 member arrays. The first member is a string representing the status of the file upload operation. The second member is an array of string error messages if any errors occurred during the upload. Further details about the files, including their size and checksum, are available in the `files` property of the `metadata` object. | | `collection_id` | `string` | The ID of the collection to which the work was published, if any. This is provided for convenience. Details about the collection are available in the `parent.communities` property of the `metadata` object. | @@ -280,7 +407,11 @@ The response will include a JSON object with the same shape as the successful re ```json { "status": "error", - "message": "The request metadata is malformed or invalid.", + "message": ( + "No records were successfully imported. Please check the list of failed records " + "in the 'errors' field for more information. Each failed item should have its own " + "list of specific errors." + ), "data": [], "errors": [ { @@ -325,6 +456,8 @@ The response will include a JSON object with the same shape as the successful re ### A partially successful import response +> NOT YET IMPLEMENTED. At present the `all_or_none` request parameter will always be "true". + If only some of the works to be imported are malformed or invalid, and the `all_or_none` request parameter is set to "false", the response will be `207 Multi-Status`. In this case the response will be shaped much like the successful and unsuccessful responses described above, but there will be items in *both* the `data` and `errors` arrays. The items in the `data` array will be works that were successfully created, and the items in the `errors` array will be works that failed to be created. The response will be shaped like this: @@ -332,11 +465,16 @@ The response will be shaped like this: ```json { "status": "multi_status", - "message": "The request metadata is malformed or invalid.", + "message": ( + "Some records were successfully imported, but some failed. Please check the " + "list of failed records in the 'errors' field for more information. Each failed " + "item should have its own list of specific errors." + ), "data": [ { "item_index": 1, "record_id": "1234567891", + "source_id": "xxx1234567891", "record_url": "https://works.hcommons.org/records/1234567891", "files": { "file1.pdf": ["success", []], @@ -353,6 +491,7 @@ The response will be shaped like this: { "item_index": 0, "record_id": null, + "source_id": "xxx1234567890", "record_url": null, "errors": [ { @@ -382,105 +521,72 @@ If the file content is uploaded but for some reason is considered corrupted or i ```json { "status": "error", - "message": "The file content is corrupted or invalid.", + "message": ( + "No records were successfully imported. Please check the list of failed records " + "in the 'errors' field for more information. Each failed item should have its own " + "list of specific errors." + ), + "data": [], "errors": [ { "item_index": 0, + "record_id": null, + "source_id": "xxx1234567890", + "record_url": null, "errors": [ { - "file": "file1.pdf", - "message": "The file size does not match the supplied metadata." - }, - { - "file": "file2.pdf", - "message": "The file checksum does not match the supplied metadata." + "validation_error": { + "metadata": {"title": ["Missing data for required field."]} + } } - ] + ], + "files": { + "file1.pdf": ["uploaded", []] + }, + "collection_id": "1234567890", + "metadata": { + /* ... */ + } }, { "item_index": 1, + "record_id": null, + "source_id": "xxx1234567891", + "record_url": null, "errors": [ { - "file": "file3.pdf", - "message": "The file exceeds the maximum file size." - } - ] - } - ] -} -``` - -If an upload simply fails to complete and times out, the client will instead receive a `504 Gateway Timeout` response. - -#### Only some of the works to be imported failed - -```http -HTTP/1.1 207 Multi-Status -Content-Type: application/json -``` - -If the `all_or_none` request parameter is set to "false", it is possible that some of the works to be imported were successfully created and others were not. In this case, the response will be `207 Multi-Status` and will include a JSON object with the following fields: - -```json -{ - "status": "multi_status", - "data": { - "succeeded": [ - { - "item_index": 0, - "record_id": "1234567890", - "record_url": "https://works.hcommons.org/records/1234567890", - "files": { - "file1.pdf": ["success", []], - "file2.pdf": ["success", []] + "validation_error": { + "metadata": {"creators" {"occupation": ["Unknown field."]}} + } }, - "collection_id": "1234567890", - "errors": [], - "metadata": { - /* ... */ - } - }, - ], - "failed": [ - { - "item_index": 1, - "record_id": null, - "record_url": null, - "message": "The request metadata is malformed or invalid.", - "errors": [ - { - "field": "title", - "message": "Required field missing.", + { + "validation_error": { + "metadata": {"publication_date": ["Date is not in Extended Date Time Format (EDTF)."]} } - ], - "files": {}, - "collection_id": "1234567890", - "metadata": { - /* ... */ - } + }, + { + "file upload failures": { + "sample.pdf": [ + "failed", + ["File sample.pdf not found in list of files."], + ] + }, + }, + ], + "files": { + "sample.pdf": ["failed", ["File sample.pdf not found in list of files."]], }, - { - "item_index": 2, - "record_id": null, - "record_url": null, - "message": "The file content is corrupted or invalid.", - "errors": [ - { - "file": "file3.pdf", - "message": "The file exceeds the maximum file size." - } - ], - "files": {}, - "collection_id": "1234567890", - "metadata": { - /* ... */ - } + "collection_id": "1234567890", + "metadata": { + /* ... */ } - ] - } + } + ] } ``` +If an upload simply fails to complete and times out, the client will instead receive a `504 Gateway Timeout` response. + ### What happens to an import request that fails? If all steps of an import request do not complete successfully, the work will not be created. The files that were successfully uploaded will be deleted, and any draft record created as part of the import request will be deleted. The client may attempt the import request again. From 8fd5a2d58983a93b7b454e9af87f29b1e9b66691 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Tue, 18 Feb 2025 13:53:40 -0500 Subject: [PATCH 14/22] feature(neh; import): Work in progress on import API endpoint; basic error handling working on service for validation and file errors --- .../dependencies/invenio-record-importer-kcworks | 2 +- .../sample_metadata_journal_article_pdf.py | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index 7459be92e..de4c2774d 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit 7459be92ea20f275d22895975429b6e255db2cab +Subproject commit de4c2774d1f851a69a804468f566b59a57823e55 diff --git a/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py b/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py index a34f0b714..27dc9377b 100644 --- a/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py +++ b/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py @@ -179,18 +179,7 @@ "resource_type": {"id": "textDocument-journalArticle"}, "rights": [ { - "description": { - "en": ( - "Proprietary material. No permissions are " - "granted for any kind of copyring or " - "re-use. All rights reserved" - ) - }, "id": "arr", - "icon": "copyright", - "props": { - "url": ("https://en.wikipedia.org/wiki/All_rights_reserved") - }, "title": {"en": "All Rights Reserved"}, } ], From 8d67f67dcd512ec4feed9352b9f32ef5b02b0098 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Tue, 18 Feb 2025 20:09:08 -0500 Subject: [PATCH 15/22] feature(wip): Implemented proper permission policy --- invenio.cfg | 9 ---- .../invenio-record-importer-kcworks | 2 +- site/tests/api/test_api_import.py | 45 ++++++++++++++++--- 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/invenio.cfg b/invenio.cfg index 83841617a..71e22b4ac 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -1861,15 +1861,6 @@ COMMUNITIES_ROLES = [ can_curate=True, can_view=True, ), - # dict( - # name="administrator", - # title=_("Administrator"), - # description=_("Full administrative access to the entire community."), - # can_manage_roles=["administrator", "manager", "curator", "reader"], - # can_manage=True, - # can_curate=True, - # can_view=True, - # ), dict( name="owner", title=_("Owner"), diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index de4c2774d..c341cd7af 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit de4c2774d1f851a69a804468f566b59a57823e55 +Subproject commit c341cd7afa9d772fbe909ce2cdd633ff2fcfbfb4 diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index 29f3eaafd..ea02ce24c 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -6,6 +6,9 @@ from invenio_access.permissions import authenticated_user, system_identity from invenio_access.utils import get_identity from invenio_accounts.proxies import current_accounts +from invenio_communities.proxies import current_communities +from invenio_communities.communities.records.api import Community +from invenio_communities.utils import load_community_needs from invenio_rdm_records.proxies import current_rdm_records_service as records_service from invenio_record_importer_kcworks.proxies import current_record_importer_service from invenio_record_importer_kcworks.record_loader import RecordLoader @@ -648,6 +651,9 @@ class BaseImportServiceTest: def by_api(self): return False + def make_submitter(self, user_factory, community_id): + return None, None + @property def metadata_sources(self): """Override this in subclasses to provide specific metadata.""" @@ -1039,10 +1045,6 @@ def test_import_records_service_load( user_id = u.user.id identity = get_identity(u.user) identity.provides.add(authenticated_user) - if self.by_api: - token = u.allowed_token - else: - login_user(u.user) # FIXME: We need to actually create a KC account for the users # assigned as owners, not just a KCWorks account. Or maybe send @@ -1052,6 +1054,15 @@ def test_import_records_service_load( community_record = minimal_community_factory(owner=u.user.id) community = community_record.to_dict() + submitter_identity, submitter_token = self.make_submitter( + user_factory, community["id"] + ) + if not submitter_identity: + submitter_identity, submitter_token = identity, u.allowed_token + + if not self.by_api: + login_user(submitter_identity.user) + # Remember to close the file streams after the import is complete files, file_list, file_streams = self.files_to_upload files_per_item = len(file_list) // len(self.metadata_sources) @@ -1081,22 +1092,23 @@ def test_import_records_service_load( ) metadata_source_objects.append(test_metadata) - if self.by_api: + if self.by_api and submitter_token: import_results, status_code = self._do_api_import( app, community, file_streams, - token, + submitter_token, metadata_source_objects, ) else: + load_community_needs(identity) service = current_record_importer_service import_results = service.import_records( + identity=submitter_identity, file_data=files, metadata=[ copy.deepcopy(m.metadata_in) for m in metadata_source_objects ], - user_id=user_id, community_id=community["id"], ) status_code = None @@ -1218,6 +1230,25 @@ def metadata_sources(self): ] +class TestImportAPIInsufficientPermissions(TestImportAPIJournalArticle): + + def make_submitter(self, user_factory, community_id): + """Try using API with a user that is just a "reader" in the community.""" + new_user = user_factory(email="another@example.com", token=True, saml_id=None) + + current_communities.service.members.add( + system_identity, + community_id, + data={ + "members": [{"type": "user", "id": str(new_user.user.id)}], + "role": "reader", + }, + ) + Community.index.refresh() + + return new_user.user.id, new_user.allowed_token + + class TestImportAPIJournalArticleErrorTitle(TestImportServiceJArticleErrorTitle): @property def by_api(self): From 8ecbaaf9fa5034a5288aa798e1071d7ca79cdfa3 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Wed, 19 Feb 2025 15:54:58 -0500 Subject: [PATCH 16/22] fix(docs): API docs updates --- docs/source/api.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/source/api.md b/docs/source/api.md index e9a2eb6ed..214585507 100644 --- a/docs/source/api.md +++ b/docs/source/api.md @@ -105,10 +105,9 @@ Why is this API needed? The InvenioRDM REST API can be fragile and difficult to The import API is available to authorized organizations who have obtained an OAuth token for API operations. -If the import is to include placing the work directly in a collection, without passing through the review process, the user to whom -the token is issued must also have sufficient permissions to publish directly in the collection. Exactly what role they must have in the collection ("owner", "manager", "curator", "reader") depends on the collection's review policy. - -The exception to this rule is for collection owners, who may override the collection's review policy and import works directly into the collection without review. +The import API places the works directly in a collection, without passing through the review process. So, the user to whom the token is issued must have sufficient permissions to publish directly in the collection. The exact role required depends on the collection's review policy: +- *If the review policy allows managers and curators to skip the review process*, the user of the import API must have one of the roles "manager," "curator," or "owner" in the collection. +- *If the review policy requires all submissions to be reviewed*, the user of the import API must have the "owner" role in the collection. ### The import request From b4ef59f2a1560bb36c5a7c99f7e25a720b5ad8a7 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Wed, 19 Feb 2025 15:55:09 -0500 Subject: [PATCH 17/22] feature(wip): Fixed permission policy bug --- .../invenio-record-importer-kcworks | 2 +- site/tests/api/test_api_import.py | 125 +++++++++++++----- site/tests/fixtures/communities.py | 12 ++ 3 files changed, 107 insertions(+), 32 deletions(-) diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index c341cd7af..01a8e633c 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit c341cd7afa9d772fbe909ce2cdd633ff2fcfbfb4 +Subproject commit 01a8e633c7b1159feefbabf2d299e31965bb7339 diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index ea02ce24c..9c16dfc85 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -22,6 +22,7 @@ import re import sys from typing import Optional +from ..fixtures.communities import make_community_member from ..fixtures.files import file_md5 from ..fixtures.records import TestRecordMetadata, TestRecordMetadataWithFiles from ..helpers.sample_records import ( @@ -651,6 +652,10 @@ class BaseImportServiceTest: def by_api(self): return False + @property + def community_access_override(self): + return {} + def make_submitter(self, user_factory, community_id): return None, None @@ -758,7 +763,17 @@ def expected_errors(self): """ return [[]] * len(self.metadata_sources) - def check_result_status(self, import_results: dict, status_code: Optional[int]): + def check_result_status( + self, import_results: dict, status_code: Optional[int] + ) -> bool: + """Check the status of the import results. + + Returns True if the status is as expected, False otherwise. + + The boolean return is to allow for short-circuiting the main + test execution if the status reflects a response that will lack + a body with data or errors (e.g., 403). + """ if not any([e for e in self.expected_errors if e]): if self.by_api: assert status_code == 201 @@ -790,6 +805,7 @@ def check_result_status(self, import_results: dict, status_code: Optional[int]): "failed records in the 'errors' field for more information. Each " "failed item should have its own list of specific errors." ) + return True def _check_response_files(self, actual_files, record_files): assert actual_files == { @@ -908,12 +924,12 @@ def _check_owners( def _check_successful_import( self, actual: dict, - app: Flask, record_files: list, expected: TestRecordMetadataWithFiles, community: dict, uploader_id: str, ): + assert self.app actual_metadata = actual.get("metadata") assert actual_metadata @@ -929,7 +945,7 @@ def _check_successful_import( actual_record_url = actual.get("record_url") assert actual_record_url == ( - f"{app.config['SITE_UI_URL']}/records/{actual_record_id}" + f"{self.app.config['SITE_UI_URL']}/records/{actual_record_id}" ) actual_collection_id = actual.get("collection_id") @@ -966,12 +982,12 @@ def _check_failed_import( def check_result_data( self, import_results: dict, - app: Flask, files: list, metadata_sources: list, community: dict, uploader_id: str, ) -> None: + assert self.app expected_error_count = len([e for e in self.expected_errors if e]) if expected_error_count > 0: assert len(import_results["data"]) == 0 @@ -994,7 +1010,6 @@ def check_result_data( self._check_successful_import( actual_record_result, - app, record_files, metadata_sources[idx], community, @@ -1003,15 +1018,15 @@ def check_result_data( def _do_api_import( self, - app: Flask, community: dict, file_streams: list, token: str, metadata_source_objects: list[TestRecordMetadataWithFiles], ) -> tuple[Optional[dict], int]: - with app.test_client() as client: + assert self.app + with self.app.test_client() as client: actual_response = client.post( - f"{app.config['SITE_API_URL']}/import/{community['slug']}", + f"{self.app.config['SITE_API_URL']}/import/{community['slug']}", content_type="multipart/form-data", data={ "metadata": json.dumps( @@ -1040,7 +1055,7 @@ def test_import_records_service_load( search_clear, mock_send_remote_api_update_fixture, ): - app = running_app.app + self.app = running_app.app u = user_factory(email="test@example.com", token=True, saml_id=None) user_id = u.user.id identity = get_identity(u.user) @@ -1051,7 +1066,10 @@ def test_import_records_service_load( # them an email with a link to create a KC account with the same # email address? - community_record = minimal_community_factory(owner=u.user.id) + community_record = minimal_community_factory( + owner=u.user.id, + access=self.community_access_override, + ) community = community_record.to_dict() submitter_identity, submitter_token = self.make_submitter( @@ -1094,7 +1112,6 @@ def test_import_records_service_load( if self.by_api and submitter_token: import_results, status_code = self._do_api_import( - app, community, file_streams, submitter_token, @@ -1117,16 +1134,15 @@ def test_import_records_service_load( file.close() assert import_results is not None - self.check_result_status(import_results, status_code) - self.check_result_errors(import_results) - self.check_result_data( - import_results, - app, - files, - metadata_source_objects, - community, - user_id, - ) + if self.check_result_status(import_results, status_code): + self.check_result_errors(import_results) + self.check_result_data( + import_results, + files, + metadata_source_objects, + community, + user_id, + ) # class TestImportServiceChapter(BaseImportRecordsServiceLoadTest): @@ -1230,22 +1246,69 @@ def metadata_sources(self): ] -class TestImportAPIInsufficientPermissions(TestImportAPIJournalArticle): +class BaseInsufficientPermissionsTest(TestImportAPIJournalArticle): + """Base class for tests that check the API with insufficient permissions.""" + + def check_result_status(self, import_results: dict, status_code: Optional[int]): + if self.by_api: + assert status_code == 403 + assert import_results.get("message") == ( + "The user does not have the necessary permissions to " + "import records via this endpoint." + ) + return False # to stop the test execution from looking for data/errors + + +class TestImportAPIInsufficientPermissionsReader(BaseInsufficientPermissionsTest): + """Test importing records via the API with insufficient permissions. + + The community allows direct publishing by curators and managers + (review policy "open"), but uploader is only a reader. + """ + + @property + def community_access_override(self): + return {"review_policy": "open", "record_policy": "open"} def make_submitter(self, user_factory, community_id): """Try using API with a user that is just a "reader" in the community.""" new_user = user_factory(email="another@example.com", token=True, saml_id=None) + make_community_member(new_user.user.id, "reader", community_id) + return new_user.user.id, new_user.allowed_token - current_communities.service.members.add( - system_identity, - community_id, - data={ - "members": [{"type": "user", "id": str(new_user.user.id)}], - "role": "reader", - }, - ) - Community.index.refresh() +class TestImportAPIInsufficientPermissionsCurator(BaseInsufficientPermissionsTest): + """Test importing records via the API with insufficient permissions. + + The community does not allow direct publishing (review policy "closed"), + and uploader is only a manager. + """ + + @property + def community_access_override(self): + return {"review_policy": "closed", "record_policy": "closed"} + + def make_submitter(self, user_factory, community_id): + """Try using API with a user that is just a "reader" in the community.""" + new_user = user_factory(email="another@example.com", token=True, saml_id=None) + make_community_member(new_user.user.id, "manager", community_id) + return new_user.user.id, new_user.allowed_token + + +class TestImportAPIInsufficientPermissionsOwner(BaseInsufficientPermissionsTest): + """Test importing records via the API with insufficient permissions. + + The community allows direct publishing (review policy "open"), + but uploader is not a community member. + """ + + @property + def community_access_override(self): + return {"review_policy": "open", "record_policy": "open"} + + def make_submitter(self, user_factory, community_id): + """Try using API with a user that is not a community member.""" + new_user = user_factory(email="another@example.com", token=True, saml_id=None) return new_user.user.id, new_user.allowed_token diff --git a/site/tests/fixtures/communities.py b/site/tests/fixtures/communities.py index 4e63fcadc..8d6b86e38 100644 --- a/site/tests/fixtures/communities.py +++ b/site/tests/fixtures/communities.py @@ -9,6 +9,18 @@ from typing import Callable, Optional +def make_community_member(user_id: int, role: str, community_id: str) -> None: + """ + Make a member of a community. + """ + current_communities.service.members.add( + system_identity, + community_id, + data={"members": [{"type": "user", "id": str(user_id)}], "role": role}, + ) + Community.index.refresh() + + @pytest.fixture(scope="function") def communities_links_factory(): """ From d53e65c0e028a55a8e09ecf267d28766758b92c2 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Fri, 21 Feb 2025 18:37:01 -0500 Subject: [PATCH 18/22] feature(wip): Ensured user accounts get created and then linked properly on first login from KC; ensured owners are placed in import collection --- invenio.cfg | 4 +- .../invenio-record-importer-kcworks | 2 +- .../invenio-remote-user-data-kcworks | 2 +- site/kcworks/services/accounts/saml.py | 210 ++++++++++++++++-- site/tests/api/test_accounts.py | 164 ++++++++++++-- site/tests/api/test_api_import.py | 34 ++- site/tests/conftest.py | 27 +++ site/tests/fixtures/saml.py | 13 +- site/tests/fixtures/users.py | 24 +- 9 files changed, 433 insertions(+), 47 deletions(-) diff --git a/invenio.cfg b/invenio.cfg index 71e22b4ac..01dfeb5c1 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -55,7 +55,6 @@ from invenio_rdm_records.services.stats import ( ) from invenio_rdm_records.services import facets from invenio_records_resources.services.custom_fields import TextCF -from invenio_saml.handlers import acs_handler_factory from invenio_stats.contrib.event_builders import build_file_unique_id from invenio_stats.processors import EventsIndexer, anonymize_user, flag_robots from invenio_stats.queries import TermsQuery @@ -127,8 +126,10 @@ from kcworks.metadata_fields.kcr_series_field import ( KCR_SERIES_FIELDS_UI, ) from kcworks.services.accounts.saml import ( + acs_handler_factory, knowledgeCommons_account_setup, knowledgeCommons_account_info, + knowledgeCommons_account_get_user, ) from kcworks.services.notifications.builders import ( CustomCommunityInvitationAcceptNotificationBuilder, @@ -1560,6 +1561,7 @@ SSO_SAML_IDPS = { "knowledgeCommons", account_info=knowledgeCommons_account_info, account_setup=knowledgeCommons_account_setup, + user_lookup=knowledgeCommons_account_get_user, ), # Automatically set `confirmed_at` for users upon # registration, when using the default `acs_handler` diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index 01a8e633c..769f446aa 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit 01a8e633c7b1159feefbabf2d299e31965bb7339 +Subproject commit 769f446aa2fb16f8d216631da6b755c9c6f17586 diff --git a/site/kcworks/dependencies/invenio-remote-user-data-kcworks b/site/kcworks/dependencies/invenio-remote-user-data-kcworks index 0aeda19ec..df3eec011 160000 --- a/site/kcworks/dependencies/invenio-remote-user-data-kcworks +++ b/site/kcworks/dependencies/invenio-remote-user-data-kcworks @@ -1 +1 @@ -Subproject commit 0aeda19ec81c45a996383449827de52865014715 +Subproject commit df3eec011806d4b7223dd7b4f77b105397a2f692 diff --git a/site/kcworks/services/accounts/saml.py b/site/kcworks/services/accounts/saml.py index db69a5d0b..b537abfbd 100644 --- a/site/kcworks/services/accounts/saml.py +++ b/site/kcworks/services/accounts/saml.py @@ -1,13 +1,81 @@ from datetime import datetime, timezone -from flask import current_app +from flask import current_app, abort +from flask_login import current_user from invenio_access.permissions import system_identity -from invenio_accounts.models import User +from invenio_accounts.models import User, UserIdentity from invenio_accounts.proxies import current_accounts +from invenio_db import db from invenio_oauthclient.errors import AlreadyLinkedError +from invenio_oauthclient.utils import ( + create_csrf_disabled_registrationform, + fill_form, +) from invenio_remote_user_data_kcworks.proxies import ( current_remote_user_data_service, ) -from invenio_saml.invenio_accounts.utils import account_link_external_id +from invenio_saml.invenio_accounts.utils import ( + _get_external_id, + account_authenticate, + account_link_external_id, + account_register, +) +from invenio_saml.invenio_app import get_safe_redirect_target + + +def knowledgeCommons_account_get_user(account_info=None): + """Retrieve user object for the given request. + + Extends invenio_saml.invenio_accounts.utils.account_get_user to allow for + retrieving a user by ORCID as well as email. + + Uses either the access token or extracted account information to retrieve + the user object. + + :param account_info: The dictionary with the account info. + (Default: ``None``) + :returns: A :class:`invenio_accounts.models.User` instance or ``None``. + """ + if account_info: + current_app.logger.debug(f"account_info: {account_info}") + external_id = _get_external_id(account_info) + if external_id: + user = UserIdentity.get_user(external_id["method"], external_id["id"]) + if user: + return user + + email = account_info.get("user", {}).get("email") + if email: + current_app.logger.debug(f"email: {email}") + email_match = User.query.filter_by(email=email).one_or_none() + if email_match: + return email_match + orcid = account_info.get("user", {}).get("profile", {}).get("identifier_orcid") + if orcid: + current_app.logger.debug(f"orcid: {orcid}") + orcid_match = User.query.filter( + User._user_profile.op("->>")("identifier_orcid") == orcid + ).one_or_none() + current_app.logger.debug(f"orcid_match: {orcid_match}") + if orcid_match: + return orcid_match + kc_username = ( + account_info.get("user", {}) + .get("profile", {}) + .get("identifier_kc_username") + ) + if kc_username: + current_app.logger.debug(f"kc_username: {kc_username}") + kc_username_match = User.query.filter_by( + username=f"{account_info['external_method']}-{kc_username}" + ).one_or_none() + if not kc_username_match: + kc_username_match = User.query.filter( + User._user_profile.op("->>")("identifier_kc_username") + == kc_username + ).one_or_none() + if kc_username_match: + return kc_username_match + return None def knowledgeCommons_account_setup(user: User, account_info: dict) -> bool: @@ -27,6 +95,8 @@ def knowledgeCommons_account_setup(user: User, account_info: dict) -> bool: ) if not user.active: assert current_accounts.datastore.activate_user(user) + if not user.confirmed_at: + assert current_accounts.datastore.verify_user(user) current_accounts.datastore.commit() current_remote_user_data_service.update_user_from_remote( system_identity, @@ -36,6 +106,11 @@ def knowledgeCommons_account_setup(user: User, account_info: dict) -> bool: ) return True except AlreadyLinkedError: + # FIXME: temporary fix to ensure older users are active and confirmed + if not user.active: + assert current_accounts.datastore.activate_user(user) + if not user.confirmed_at: + assert current_accounts.datastore.verify_user(user) current_remote_user_data_service.update_user_from_remote( system_identity, user.id, @@ -77,13 +152,13 @@ def knowledgeCommons_account_info(attributes: dict, remote_app: str) -> dict: email = attributes.get(mappings["email"], [None])[0] affiliations = "" - if email is None: - remote_data: dict = current_remote_user_data_service.fetch_from_remote_api( - remote_app, external_id - ) - print(f"Remote data: {remote_data}") - email: str = remote_data.get("users", {}).get("email", None) - assert email is not None + remote_data: dict = current_remote_user_data_service.fetch_from_remote_api( + remote_app, external_id + ) + print(f"Remote data: {remote_data}") + orcid: str = remote_data.get("users", {}).get("orcid", None) + email: str = remote_data.get("users", {}).get("email", None) + assert email is not None except KeyError: raise ValueError( f"Missing required KC account username in SAML response from IDP: no " @@ -95,21 +170,124 @@ def knowledgeCommons_account_info(attributes: dict, remote_app: str) -> dict: f"entity with key {mappings['email']} and fetch from KC api failed" ) + profile_dict = dict( + username=username, # shifted from profile to user by register form + full_name=name + " " + surname, + affiliations=affiliations, + identifier_kc_username=external_id.lower(), + ) + if orcid: + profile_dict["identifier_orcid"] = orcid + return dict( user=dict( email=email, - profile=dict( - username=username, - full_name=name + " " + surname, - affiliations=affiliations, - ), + profile=profile_dict, ), external_id=external_id, external_method=remote_app, active=True, confirmed_at=( datetime.now(timezone.utc) - if remote_app_config.get("auto_confirm", False) + if remote_app_config.get("auto_confirm", True) else None ), ) + + +def acs_handler_factory( + remote_app, + account_info=knowledgeCommons_account_info, + account_setup=knowledgeCommons_account_setup, + user_lookup=knowledgeCommons_account_get_user, +): + """Generate ACS handlers with an specific account info and setup functions. + + .. note:: + + In 90% of the cases the ACS handler is going to be the same, only the + way the information is extracted and processed from the IdP will be + different. + + :param remote_app: string representing the name of the identity provider. + + :param account_info: callable to extract the account information from a + dict like object. ``mappings`` key is required whe using it. + This function is expected to return a dictionary similar to this: + + .. code-block:: python + + dict( + user=dict( + email='federico@example.com', + profile=dict(username='federico', + full_name='Federico Fernandez'), + ), + external_id='12345679abcdf', + external_method='example', + active=True + ) + + Where ``external_id`` is the ID provided by the IdP and + ``external_method`` is the name of the IdP as in the configuration + file (not mandatory but recommended). + + :param account_setup: callable to setup the user account with the + corresponding IdP account information. Typically this means creating a + new row under ``UserIdentity`` and maybe extending ``g.identity``. + + :param user_lookup: callable to retrieve any user whose information matches + what is returned by the `account_info` callable. This then returns a + User object if a match is present and None if no match is found. + + :return: function to be used as ACS handler + """ + + def default_acs_handler(auth, next_url): + """Default ACS handler. + + :para auth: A :class:`invenio_saml.utils.SAMLAuth` instance. + :param next_url: String with the next URL to redirect to. + + :return: Next URL + """ + current_app.logger.debug("ACS handler called") + current_app.logger.debug( + "Current user is authenticated: %s", current_user.is_authenticated + ) + if not current_user.is_authenticated: + current_app.logger.debug( + "Metadata received from IdP %s", auth.get_attributes() + ) + _account_info = account_info(auth.get_attributes(), remote_app) + current_app.logger.debug("Metadata extracted from IdP %s", _account_info) + # TODO: signals? + current_app.logger.debug( + f"OAUTHCLIENT_SIGNUP_FORM: {current_app.config['OAUTHCLIENT_SIGNUP_FORM']}" + ) + + user = user_lookup(_account_info) + current_app.logger.debug(f"user: {user}") + + if user is None: + form = create_csrf_disabled_registrationform(remote_app) + form = fill_form(form, _account_info["user"]) + user = account_register( + form, confirmed_at=_account_info["confirmed_at"] + ) + + # if registration fails ... TODO: signup? + if user is None or not account_authenticate(user): + abort(401) + + account_setup(user, _account_info) + + db.session.commit() # type: ignore + + next_url = ( + get_safe_redirect_target(_target=next_url) + or current_app.config["SECURITY_POST_LOGIN_VIEW"] + ) + return next_url + + return default_acs_handler diff --git a/site/tests/api/test_accounts.py b/site/tests/api/test_accounts.py index d5172c646..9bf7f15d5 100644 --- a/site/tests/api/test_accounts.py +++ b/site/tests/api/test_accounts.py @@ -1,13 +1,16 @@ +import copy +from pprint import pformat import pytest import datetime from flask import Flask from invenio_accounts import current_accounts from invenio_accounts.models import User -from invenio_saml.handlers import acs_handler_factory import json from kcworks.services.accounts.saml import ( knowledgeCommons_account_info, knowledgeCommons_account_setup, + knowledgeCommons_account_get_user, + acs_handler_factory, ) import pytz from requests_mock.adapter import _Matcher as Matcher @@ -18,37 +21,32 @@ @pytest.mark.parametrize( - "attributes,output,user_data,api_call_count", + "attributes,output,user_data", [ ( idp_responses["joanjett"]["raw_data"], idp_responses["joanjett"]["extracted_data"], user_data_set["joanjett"], - 0, ), ( idp_responses["user1"]["raw_data"], idp_responses["user1"]["extracted_data"], user_data_set["user1"], - 0, ), ( idp_responses["user2"]["raw_data"], idp_responses["user2"]["extracted_data"], user_data_set["user2"], - 0, ), ( idp_responses["user3"]["raw_data"], idp_responses["user3"]["extracted_data"], user_data_set["user3"], - 1, ), ( idp_responses["user4"]["raw_data"], idp_responses["user4"]["extracted_data"], user_data_set["user4"], - 0, ), ], ) @@ -61,7 +59,6 @@ def test_knowledgeCommons_account_info( user_data: dict, mock_user_data_api: Callable, user_data_to_remote_data: Callable, - api_call_count: int, ) -> None: """ Test the custom handler @@ -75,12 +72,8 @@ def test_knowledgeCommons_account_info( info: dict = knowledgeCommons_account_info( attributes, remote_app="knowledgeCommons" ) - if api_call_count == 1: # Here the api is only called if no email is provided - assert mock_adapter.called - assert mock_adapter.call_count == 1 - else: - assert not mock_adapter.called - assert mock_adapter.call_count == 0 + assert mock_adapter.called + assert mock_adapter.call_count == 1 expected_result_email: str = ( output["user"]["email"] @@ -97,12 +90,145 @@ def test_knowledgeCommons_account_info( assert info["user"]["profile"]["username"] == output["user"]["profile"]["username"] assert info["external_id"] == output["external_id"] assert info["external_method"] == output["external_method"] + assert info["user"]["profile"].get("identifier_orcid", "") == output["user"][ + "profile" + ].get("identifier_orcid", "") + assert info["user"]["profile"].get("identifier_kc_username", "") == output["user"][ + "profile" + ].get("identifier_kc_username", "") assert info["active"] == output["active"] assert datetime.datetime.now(tz=pytz.timezone("US/Eastern")) - info[ "confirmed_at" ] < datetime.timedelta(seconds=10) +@pytest.mark.parametrize( + "original_email,original_orcid,original_kc_username," + "user_data,idp_data,already_linked,user_expected", + [ + ( # pre-existing user with same email and ORCID + user_data_set["user1"]["email"], + user_data_set["user1"]["orcid"], + user_data_set["user1"]["saml_id"], + user_data_set["user1"], + idp_responses["user1"]["extracted_data"], + False, + True, + ), + ( # pre-existing user with same email and empty ORCID + user_data_set["user1"]["email"], + "", + user_data_set["user1"]["saml_id"], + user_data_set["user1"], + idp_responses["user1"]["extracted_data"], + False, + True, + ), + ( # pre-existing user with different email and same ORCID + "other@example.com", + user_data_set["user1"]["orcid"], + user_data_set["user1"]["saml_id"], + user_data_set["user1"], + idp_responses["user1"]["extracted_data"], + False, + True, + ), + ( # already linked user with same email and ORCID + user_data_set["user1"]["email"], + user_data_set["user1"]["orcid"], + user_data_set["user1"]["saml_id"], + user_data_set["user1"], + idp_responses["user1"]["extracted_data"], + True, + True, + ), + ( # pre-existing user with different email and empty ORCID but KC username + "other@example.com", + "", + user_data_set["user1"]["saml_id"], + user_data_set["user1"], + idp_responses["user1"]["extracted_data"], + False, + True, + ), + ( # pre-existing user with different email, empty ORCID, and empty KC username + "other@example.com", + "", + "", + user_data_set["user1"], + idp_responses["user1"]["extracted_data"], + False, + False, + ), + ], +) +def test_knowledgeCommons_account_get_user( + running_app, + appctx, + db, + user_factory: Callable, + original_email: str, + original_orcid: str, + original_kc_username: str, + user_data: dict, + idp_data: dict, + already_linked: bool, + user_expected: bool, + mock_user_data_api: Callable, + user_data_to_remote_data: Callable, +) -> None: + """ + Test the account get user function, which should match a SAML login based on + either email or ORCID. + + case 1: The pre-existing KCWorks user has the same email as the IDP response + case 2: The pre-existing KCWorks user has a different email as the IDP response + case 3: The KCWorks user is already linked to an external ID + """ + app: Flask = running_app.app + + if not already_linked: + u: AugmentedUserFixture = user_factory( + email=original_email, + password="password", + saml_id=None, + orcid=original_orcid, + kc_username=original_kc_username, + ) + assert not u.mock_adapter + else: + u: AugmentedUserFixture = user_factory( + email=original_email, + password="password", + saml_src="knowledgeCommons", + saml_id=user_data["saml_id"], + new_remote_data=user_data, + ) + assert u.user is not None + app.logger.debug(f"user profile: {u.user.user_profile}") + + matched_user: Optional[User] = knowledgeCommons_account_get_user(idp_data) + app.logger.debug(f"matched user: {pformat(matched_user)}") + + if user_expected: + assert matched_user is not None + assert matched_user.id == u.user.id + # email, username, identifier_orcid, identifier_kc_username are not + # updated yet on returned User object + assert matched_user.email == original_email + assert matched_user.username == ( + None if not already_linked else f"knowledgeCommons-{user_data['saml_id']}" + ) + assert matched_user.user_profile.get("identifier_orcid") == ( + original_orcid if original_orcid != "" else None + ) # not updated yet + assert matched_user.user_profile.get("identifier_kc_username") == ( + original_kc_username if original_kc_username != "" else None + ) + else: + assert matched_user is None + + @pytest.mark.parametrize( "user_data,idp_data", [ @@ -183,15 +309,15 @@ def test_knowledgeCommons_account_setup( @pytest.mark.parametrize( "idp_data,user_data,api_call_count", [ - (idp_responses["joanjett"]["raw_data"], user_data_set["joanjett"], 1), - (idp_responses["user1"]["raw_data"], user_data_set["user1"], 1), - (idp_responses["user2"]["raw_data"], user_data_set["user2"], 1), + (idp_responses["joanjett"]["raw_data"], user_data_set["joanjett"], 2), + (idp_responses["user1"]["raw_data"], user_data_set["user1"], 2), + (idp_responses["user2"]["raw_data"], user_data_set["user2"], 2), ( idp_responses["user3"]["raw_data"], user_data_set["user3"], 2, - ), # IDP response has no email - (idp_responses["user4"]["raw_data"], user_data_set["user4"], 1), + ), # IDP response has no email (now making request for everyone) + (idp_responses["user4"]["raw_data"], user_data_set["user4"], 2), ], ) def test_account_register_on_login( diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index 9c16dfc85..a4f7d22f9 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -1,13 +1,10 @@ -from invenio_vocabularies.proxies import current_service as current_vocabulary_service -from invenio_vocabularies.records.api import Vocabulary import copy -from flask import Flask from flask_login import login_user from invenio_access.permissions import authenticated_user, system_identity from invenio_access.utils import get_identity +from invenio_accounts.models import User from invenio_accounts.proxies import current_accounts -from invenio_communities.proxies import current_communities -from invenio_communities.communities.records.api import Community +from invenio_communities.members.records.api import Member from invenio_communities.utils import load_community_needs from invenio_rdm_records.proxies import current_rdm_records_service as records_service from invenio_record_importer_kcworks.proxies import current_record_importer_service @@ -16,6 +13,8 @@ FileData, LoaderResult, ) +from invenio_vocabularies.proxies import current_service as current_vocabulary_service +from invenio_vocabularies.records.api import Vocabulary import json from pathlib import Path from pprint import pformat @@ -838,16 +837,31 @@ def check_result_errors(self, import_results: dict) -> None: ).to_dict() assert created_record["status"] == "deleted" + def _check_owners_in_community( + self, + community_members: list, + user: User, + uploader_id: str, + ): + target_roles = ( + ["reader"] if user.id != uploader_id else ["curator", "manager", "owner"] + ) + assert any( + m.user_id == user.id and m.role in target_roles for m in community_members + ) + def _check_owners( self, actual_metadata: dict, expected: TestRecordMetadataWithFiles, uploader_id: str, + community_id: str, ): expected_owners = ( expected.metadata_in.get("parent", {}).get("access", {}).get("owned_by") ) if expected_owners: + community_members = Member.get_members(community_id) first_expected_owner = expected.metadata_in["parent"]["access"]["owned_by"][ 0 ] @@ -855,6 +869,9 @@ def _check_owners( actual_metadata["parent"]["access"]["owned_by"]["user"] ) assert first_actual_owner.email == first_expected_owner["email"] + self._check_owners_in_community( + community_members, first_actual_owner, uploader_id + ) if len(expected_owners) > 1: other_expected_owners = expected.metadata_in["parent"]["access"][ "owned_by" @@ -915,6 +932,11 @@ def _check_owners( user.user_profile["identifier_other"] ) assert import_id in other_user_ids.values() + # make sure they were added to the community + # as reader (unless they are the uploader) + self._check_owners_in_community( + community_members, user, uploader_id + ) else: assert actual_metadata["parent"]["access"]["owned_by"] == { "user": uploader_id @@ -966,7 +988,7 @@ def _check_successful_import( f["checksum"] = actual_metadata["files"]["entries"][k]["checksum"] assert expected.compare_published(actual_metadata) - self._check_owners(actual_metadata, expected, uploader_id) + self._check_owners(actual_metadata, expected, uploader_id, community["id"]) # Check the record in the database record_id1 = actual_metadata.get("id") diff --git a/site/tests/conftest.py b/site/tests/conftest.py index f3e2fb079..ededc1cb0 100644 --- a/site/tests/conftest.py +++ b/site/tests/conftest.py @@ -2,6 +2,8 @@ import os from pathlib import Path import importlib +import shutil +import tempfile from invenio_app.factory import create_app as create_ui_api from invenio_queues import current_queues from invenio_search.proxies import current_search_client @@ -189,6 +191,31 @@ def celery_enable_logging(): # yield worker +@pytest.yield_fixture(scope="module") +def location(database): + """Creates a simple default location for a test. + + Scope: function + + Use this fixture if your test requires a `files location `_. The location will be a default location with the name + ``pytest-location``. + """ + from invenio_files_rest.models import Location + + uri = tempfile.mkdtemp() + location_obj = Location(name="pytest-location", uri=uri, default=True) + + database.session.add(location_obj) + database.session.commit() + + yield location_obj + + # TODO: Submit PR to pytest-invenio to fix the below line in the stock fixture + shutil.rmtree(uri) + + # This is a namedtuple that holds all the fixtures we're likely to need # in a single test. RunningApp = namedtuple( diff --git a/site/tests/fixtures/saml.py b/site/tests/fixtures/saml.py index aff988dba..f3a538759 100644 --- a/site/tests/fixtures/saml.py +++ b/site/tests/fixtures/saml.py @@ -168,6 +168,7 @@ "profile": { "username": "knowledgeCommons-joanjett", "full_name": "Joan Jett", + "identifier_kc_username": "joanjett", }, }, "external_id": "joanjett", @@ -206,6 +207,9 @@ "username": "knowledgeCommons-user1", "full_name": "User Number One", "affiliations": "Independent Scholar", + # Added from api call + "identifier_orcid": "0000-0002-1825-0097", # official dummy orcid + "identifier_kc_username": "user1", }, }, "external_id": "user1", @@ -240,6 +244,8 @@ "username": "knowledgeCommons-janedoe", "full_name": "Jane Doe", "affiliations": "College Of Human Medicine", + "identifier_orcid": "0000-0002-1825-0097", + "identifier_kc_username": "janedoe", }, }, "external_id": "janedoe", @@ -290,8 +296,9 @@ "email": None, # FIXME: Unobfuscated email not sent by # KC because no email marked as official "profile": { - "full_name": "Ghost Hc", "username": "knowledgeCommons-gihctester", + "full_name": "Ghost Hc", + "identifier_kc_username": "gihctester", }, }, "external_id": "gihctester", @@ -326,8 +333,10 @@ "user": { "email": "jrghosttester@email.ghostinspector.com", "profile": { - "full_name": "Ghost Tester", "username": "knowledgeCommons-ghostrjtester", + "full_name": "Ghost Tester", + "identifier_orcid": "0000-0002-1825-0097", + "identifier_kc_username": "ghostrjtester", }, }, "external_id": "ghostrjtester", diff --git a/site/tests/fixtures/users.py b/site/tests/fixtures/users.py index 102070892..e27fd9735 100644 --- a/site/tests/fixtures/users.py +++ b/site/tests/fixtures/users.py @@ -1,10 +1,12 @@ from typing import Callable, Optional, Union +from flask import current_app from flask_login import login_user from flask_principal import Identity from flask_security.utils import hash_password from invenio_access.models import ActionRoles, Role from invenio_access.permissions import superuser_access from invenio_accounts.models import User +from invenio_accounts.proxies import current_accounts from invenio_accounts.testutils import login_user_via_session from invenio_administration.permissions import administration_access_action from invenio_oauthclient.models import UserIdentity @@ -88,6 +90,8 @@ def make_user( admin: bool = False, saml_src: Optional[str] = "knowledgeCommons", saml_id: Optional[str] = "myuser", + orcid: Optional[str] = "", + kc_username: Optional[str] = "", new_remote_data: dict = {}, ) -> AugmentedUserFixture: """Create a user. @@ -116,6 +120,9 @@ def make_user( # Mock the remote api call. mock_adapter = mock_user_data_api(saml_id, mock_remote_data) + if not orcid and new_remote_data.get("orcid"): + orcid = new_remote_data.get("orcid") + u = AugmentedUserFixture( email=email, password=hash_password(password), @@ -134,10 +141,25 @@ def make_user( ) datastore.add_role_to_user(u.user, role) - if saml_src and saml_id: + if u.user and orcid: + profile = u.user.user_profile + profile["identifier_orcid"] = orcid + u.user.user_profile = profile + + if u.user and kc_username: + profile = u.user.user_profile + profile["identifier_kc_username"] = kc_username + u.user.user_profile = profile + + if u.user and saml_src and saml_id: + u.user.username = f"{saml_src}-{saml_id}" + profile = u.user.user_profile + profile["identifier_kc_username"] = saml_id + u.user.user_profile = profile UserIdentity.create(u.user, saml_src, saml_id) u.mock_adapter = mock_adapter + current_accounts.datastore.commit() db.session.commit() return u From 9b2e7017ce4afea86eef7ecabb5b33d194f8d7dd Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Fri, 21 Feb 2025 18:37:33 -0500 Subject: [PATCH 19/22] fix(docs): API docs updates --- docs/source/api.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/source/api.md b/docs/source/api.md index 214585507..1565669fc 100644 --- a/docs/source/api.md +++ b/docs/source/api.md @@ -182,6 +182,16 @@ Note that it is *not* assumed that the creators of a work should be the work's o > Note, too, that only the first member of the owners array will technically be assigned as the work's owner in KCWorks. The other owners will be assigned access grants to the work with "manage" permissions. +#### KC accounts for work owners + +KCWorks will create an internal KCWorks account for each work owner who does not already have an account on Knowledge Commons. Note that this *does not* create a full Knowledge Commons account. The owner will still need to visit Knowledge Commons to create an account through the usual registration process. When they do so, their KCWorks account will be linked to their Knowledge Commons account and they will be able to manage and edit their uploaded works. + +> It is vital that the owner provide an identifier when they create their Knowledge Commons account that matches an identifier provided for them in the `owned_by` property of the work's metadata object. This allows KCWorks to link the owner's KCWorks account to their Knowledge Commons account after they register. The connecting identifier may be +> - the same primary email address +> - the same ORCID identifier + +If an owner does not already belong to the collection to which the records are being imported, that owner will also be added to the collection's membership with the "reader" role. The allows them access to any records restricted to the collection's membership, but does not afford them any additional permissions. What it does mean is that collection managers will be able to see all of the work owners in the list of collection members on the collection's landing page. + #### Identifying the work for import It is crucial that each work to be imported is assigned a unique identifier. This may be an identifier used internally by the importing organization, it may be a universally unique string such as a UUID, or it may be a universal identifier such as a DOI or a handle. In either case it must be unique across all works to be imported for the collection. This identifier will be used to identify the work in the response, and will be used to identify the work when checking for duplicate imports. From 179b2b49b90f1d99ce942e3c3ffda2f5d3640f2d Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Fri, 21 Feb 2025 18:37:33 -0500 Subject: [PATCH 20/22] fix(docs): API docs updates --- docs/source/api.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/source/api.md b/docs/source/api.md index 04abde259..69aa2ef7a 100644 --- a/docs/source/api.md +++ b/docs/source/api.md @@ -182,6 +182,16 @@ Note that it is *not* assumed that the creators of a work should be the work's o > Note, too, that only the first member of the owners array will technically be assigned as the work's owner in KCWorks. The other owners will be assigned access grants to the work with "manage" permissions. +#### KC accounts for work owners + +KCWorks will create an internal KCWorks account for each work owner who does not already have an account on Knowledge Commons. Note that this *does not* create a full Knowledge Commons account. The owner will still need to visit Knowledge Commons to create an account through the usual registration process. When they do so, their KCWorks account will be linked to their Knowledge Commons account and they will be able to manage and edit their uploaded works. + +> It is vital that the owner provide an identifier when they create their Knowledge Commons account that matches an identifier provided for them in the `owned_by` property of the work's metadata object. This allows KCWorks to link the owner's KCWorks account to their Knowledge Commons account after they register. The connecting identifier may be +> - the same primary email address +> - the same ORCID identifier + +If an owner does not already belong to the collection to which the records are being imported, that owner will also be added to the collection's membership with the "reader" role. The allows them access to any records restricted to the collection's membership, but does not afford them any additional permissions. What it does mean is that collection managers will be able to see all of the work owners in the list of collection members on the collection's landing page. + #### Identifying the work for import It is crucial that each work to be imported is assigned a unique identifier. This may be an identifier used internally by the importing organization, it may be a universally unique string such as a UUID, or it may be a universal identifier such as a DOI or a handle. In either case it must be unique across all works to be imported for the collection. This identifier will be used to identify the work in the response, and will be used to identify the work when checking for duplicate imports. From 0d17fb029a8cf44d99d1b335a7cfa49362416aaa Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Fri, 21 Feb 2025 18:57:31 -0500 Subject: [PATCH 21/22] fix(templates): Improved formatting of moderation notice email templates --- .../user-first-record.create.jinja | 40 ++++++++++------- .../user-first-record.publish.jinja | 44 ++++++++++--------- 2 files changed, 46 insertions(+), 38 deletions(-) diff --git a/site/kcworks/templates/semantic-ui/invenio_notifications/user-first-record.create.jinja b/site/kcworks/templates/semantic-ui/invenio_notifications/user-first-record.create.jinja index 0234894da..e611218b4 100644 --- a/site/kcworks/templates/semantic-ui/invenio_notifications/user-first-record.create.jinja +++ b/site/kcworks/templates/semantic-ui/invenio_notifications/user-first-record.create.jinja @@ -14,39 +14,43 @@ {%- endblock subject -%} {%- block html_body -%} + +

{{ _("KCWorks moderation notice:") }}

+

{{ _("A new user has created their first draft.") }}

- - - - + + - + + - + + - + + - + - + {# - + #}
- {{ _("A new user has created their first draft.") }} -
{{ _("User name: {user_name}").format(user_name=submitter_name) }}{{ _("User name") }}{{ submitter_name }}
{{ _("User email: {user_email}").format(user_email=submitter_email) }}{{ _("User email") }}{{ submitter_email }}
{{ _("User ID: {user_id}").format(user_id=submitter_id) }}{{ _("User ID") }}{{ submitter_id }}
{{ _("Draft title: {record_title}").format(record_title=record_title) }}{{ _("Draft title") }}{{ record_title }}
- {{ _("Draft ID: {draft_id}").format(draft_id=draft_id) }} ({{ _("View draft") }}) + {{ _("Draft ID") }}{{ draft_id }} ({{ _("View draft") }})
{{ _("Full metadata:") }}
{{ notification.context.data | tojson(indent=2) | safe }}
{%- endblock html_body %} {%- block plain_body -%} +{{ _("KCWorks moderation notice:") }} + {{ _("A new user has created their first draft.") }} {{ _("User name: {user_name}").format(user_name=submitter_name) }} @@ -59,14 +63,16 @@ {{ _("Draft ID: {draft_id}").format(draft_id=draft_id) }} ({{ config.get('SITE_UI_URL') }}/records/{{ draft_id }}) -{{ _("Full metadata:") }} +{# {{ _("Full metadata:") }} -{{ notification.context.data | tojson(indent=2) | safe }} +{{ notification.context.data | tojson(indent=2) | safe }} #} {%- endblock plain_body %} {# Markdown for Slack/Mattermost/chat #} {%- block md_body -%} +{{ _("KCWorks moderation notice:") }} + {{ _("A new user has created their first draft.") }} {{ _("User name: {user_name}").format(user_name=submitter_name) }} @@ -79,7 +85,7 @@ {{ _("Draft ID: {draft_id}").format(draft_id=draft_id) }} [View draft]({{ config.get('SITE_UI_URL') }}/records/{{ draft_id }}) -{{ _("Full metadata:") }} +{# {{ _("Full metadata:") }} -{{ notification.context.data | tojson(indent=2) | safe }} +{{ notification.context.data | tojson(indent=2) | safe }} #} {%- endblock md_body %} \ No newline at end of file diff --git a/site/kcworks/templates/semantic-ui/invenio_notifications/user-first-record.publish.jinja b/site/kcworks/templates/semantic-ui/invenio_notifications/user-first-record.publish.jinja index f81a763c3..20bb8fa00 100644 --- a/site/kcworks/templates/semantic-ui/invenio_notifications/user-first-record.publish.jinja +++ b/site/kcworks/templates/semantic-ui/invenio_notifications/user-first-record.publish.jinja @@ -15,42 +15,42 @@ {%- endblock subject -%} {%- block html_body -%} +

{{ _("KCWorks moderation notice:") }}

+

{{ _("A new user has published their first work.") }}

- - - - + + - + + - + + - + + - + - - + {# + - + #}
- {{ _("A new user has published their first work.") }} -
{{ _("User name: {user_name}").format(user_name=submitter_name) }}{{ _("User name") }}{{ submitter_name }}
{{ _("User email: {user_email}").format(user_email=submitter_email) }}{{ _("User email") }}{{ submitter_email }}
{{ _("User ID: {user_id}").format(user_id=submitter_id) }}{{ _("User ID") }}{{ submitter_id }}
{{ _("Work title: {record_title}").format(record_title=record_title) }}{{ _("Work title") }}{{ record_title }}
- {{ _("Work ID: {record_id}").format(record_id=record_id) }} - ( - {{ _("View work") }} - ) + {{ _("Work ID") }}{{ record_id }} ({{ _("View work") }})
{{ _("Full metadata:") }}
{{ _("Full metadata") }}
{{ notification.context.record | tojson(indent=2) | safe }}
{%- endblock html_body %} {%- block plain_body -%} +{{ _("KCWorks moderation notice:") }} + {{ _("A new user has published their first work.") }} {{ _("User name: {user_name}").format(user_name=submitter_name) }} @@ -66,14 +66,16 @@ {{ _("Work ID: {record_id}").format(record_id=record_id) }} ({{ config.get('SITE_UI_URL') }}/records/{{ record_id }}) -{{ _("Full metadata:") }} +{# {{ _("Full metadata:") }} -{{ notification.context.record | tojson(indent=2) | safe }} +{{ notification.context.record | tojson(indent=2) | safe }} #} {%- endblock plain_body %} {# Markdown for Slack/Mattermost/chat #} {%- block md_body -%} +{{ _("KCWorks moderation notice:") }} + {{ _("A new user has published their first work.") }} {{ _("User name: {user_name}").format(user_name=submitter_name) }} @@ -86,7 +88,7 @@ {{ _("Work ID: {record_id}").format(record_id=record_id) }} [View work]({{ config.get('SITE_UI_URL') }}/records/{{ record_id }}) -{{ _("Full metadata:") }} +{# {{ _("Full metadata:") }} -{{ notification.context.record | tojson(indent=2) | safe }} +{{ notification.context.record | tojson(indent=2) | safe }} #} {%- endblock md_body %} \ No newline at end of file From 0045056592bb1ebaa3034ea3047f2369488ff534 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Mon, 24 Feb 2025 17:56:27 -0500 Subject: [PATCH 22/22] feature: Importer and test suite ready to be merged into main --- docs/source/changelog.md | 28 +++++++++++++++++++ .../invenio-record-importer-kcworks | 2 +- .../invenio-remote-user-data-kcworks | 2 +- site/kcworks/services/accounts/saml.py | 12 ++++---- site/tests/api/test_accounts.py | 4 ++- site/tests/api/test_api_import.py | 22 ++++++++++++--- site/tests/fixtures/communities.py | 1 + 7 files changed, 58 insertions(+), 13 deletions(-) diff --git a/docs/source/changelog.md b/docs/source/changelog.md index 6f876f44d..e0b3e9675 100644 --- a/docs/source/changelog.md +++ b/docs/source/changelog.md @@ -4,6 +4,34 @@ # Changes +## 0.4.0-beta9 (2025-02-25) + +- Importer + - Added a new streamlined importer API. +- Remote user data service + - Fixed bug where user profile data was not being updated because comparison with initial data was not being made correctly. + - Improved handling of timeout errors when fetching data from the remote source. +- Documentation + - Added documentation for the new importer API. + - Improved documentation for other API endpoints and metadata fields. + - Added documentation of InvenioRDM service architecture for developers. +- Email notifications + - Improved formatting of moderation email notifications for first uploads/publications. +- Testing + - Extensive improvements to the test suite, including new tests for the new importer API and remote user data service. + - Added workflow to run tests on Github +- User data sync + - Fixed several bugs in the user data sync process. + - Added cli commands to fetch KCWorks user and group data +- Search provisioning + - Fixed bugs in search provisioning and implemented new tests. +- Export menu + - Fixed a bug preventing the export menu from working on the detail page. +- Large uploads + - Raised max content length for large uploads. +- Account linking + - Now can link existing KCWorks accounts to KC accounts on login based on email address, ORCID id, or KC username. + ## 0.3.5-beta8 (2025-01-10) - Dashboard works search diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index 769f446aa..f168c2fea 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit 769f446aa2fb16f8d216631da6b755c9c6f17586 +Subproject commit f168c2feadc90d76e9ff7b552f12b949350af79e diff --git a/site/kcworks/dependencies/invenio-remote-user-data-kcworks b/site/kcworks/dependencies/invenio-remote-user-data-kcworks index df3eec011..46649b727 160000 --- a/site/kcworks/dependencies/invenio-remote-user-data-kcworks +++ b/site/kcworks/dependencies/invenio-remote-user-data-kcworks @@ -1 +1 @@ -Subproject commit df3eec011806d4b7223dd7b4f77b105397a2f692 +Subproject commit 46649b72793e8a1820674545001c9a71b7c32f6e diff --git a/site/kcworks/services/accounts/saml.py b/site/kcworks/services/accounts/saml.py index b537abfbd..e607f7aaa 100644 --- a/site/kcworks/services/accounts/saml.py +++ b/site/kcworks/services/accounts/saml.py @@ -43,12 +43,6 @@ def knowledgeCommons_account_get_user(account_info=None): if user: return user - email = account_info.get("user", {}).get("email") - if email: - current_app.logger.debug(f"email: {email}") - email_match = User.query.filter_by(email=email).one_or_none() - if email_match: - return email_match orcid = account_info.get("user", {}).get("profile", {}).get("identifier_orcid") if orcid: current_app.logger.debug(f"orcid: {orcid}") @@ -75,6 +69,12 @@ def knowledgeCommons_account_get_user(account_info=None): ).one_or_none() if kc_username_match: return kc_username_match + email = account_info.get("user", {}).get("email") + if email: + current_app.logger.debug(f"email: {email}") + email_match = User.query.filter_by(email=email).one_or_none() + if email_match: + return email_match return None diff --git a/site/tests/api/test_accounts.py b/site/tests/api/test_accounts.py index 9bf7f15d5..685205e64 100644 --- a/site/tests/api/test_accounts.py +++ b/site/tests/api/test_accounts.py @@ -385,10 +385,12 @@ def test_account_register_on_login( assert user.external_identifiers[0].id == user_data["saml_id"] assert user.external_identifiers[0].id_user == user.id assert user.external_identifiers[0].method == "knowledgeCommons" - assert [r.name for r in user.roles] == ( + expected_roles = ( [f"knowledgeCommons---{g['id']}|{g['role']}" for g in user_data["groups"]] if "groups" in user_data.keys() else [] ) + assert all([r for r in user.roles if r.name in expected_roles]) + assert not any([r for r in user.roles if r.name not in expected_roles]) assert next_url == "https://localhost/next-url.com" diff --git a/site/tests/api/test_api_import.py b/site/tests/api/test_api_import.py index a4f7d22f9..5cec08561 100644 --- a/site/tests/api/test_api_import.py +++ b/site/tests/api/test_api_import.py @@ -839,16 +839,26 @@ def check_result_errors(self, import_results: dict) -> None: def _check_owners_in_community( self, - community_members: list, + community_members: list[Member], user: User, - uploader_id: str, + uploader_id: int, ): target_roles = ( ["reader"] if user.id != uploader_id else ["curator", "manager", "owner"] ) - assert any( - m.user_id == user.id and m.role in target_roles for m in community_members + self.app.logger.debug( + f"user.id: {user.id}, type(user.id): {type(user.id)}, uploader_id: {uploader_id}, type(uploader_id): {type(uploader_id)}, target_roles: {target_roles}" + ) + self.app.logger.debug( + f"community_members: {pformat([(m.user_id, type(m.user_id), m.role) for m in community_members])}" ) + matching_ids = [m for m in community_members if m.user_id == user.id] + self.app.logger.debug( + f"matching_ids: {pformat([(m.user_id, m.role) for m in matching_ids])}" + ) + assert matching_ids + assert matching_ids[0].role in target_roles + assert len(matching_ids) == 1 def _check_owners( self, @@ -862,6 +872,10 @@ def _check_owners( ) if expected_owners: community_members = Member.get_members(community_id) + self.app.logger.debug(f"community_members: {pformat(community_members)}") + self.app.logger.debug( + f"community_members: {pformat([(m.user_id, m.role) for m in community_members])}" + ) first_expected_owner = expected.metadata_in["parent"]["access"]["owned_by"][ 0 ] diff --git a/site/tests/fixtures/communities.py b/site/tests/fixtures/communities.py index 8d6b86e38..70ac168cb 100644 --- a/site/tests/fixtures/communities.py +++ b/site/tests/fixtures/communities.py @@ -3,6 +3,7 @@ from invenio_access.utils import get_identity from invenio_accounts.proxies import current_accounts from invenio_communities.communities.records.api import Community +from invenio_communities.members.records.api import Member from invenio_communities.proxies import current_communities import marshmallow as ma import traceback