From c4618dd2fb070eefcdb38bca7b92fe32da766702 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Wed, 25 Jul 2018 12:18:34 -0700 Subject: more external ident handling --- rust/tests/test_api_server.rs | 215 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 210 insertions(+), 5 deletions(-) (limited to 'rust/tests') diff --git a/rust/tests/test_api_server.rs b/rust/tests/test_api_server.rs index b831f122..b9880ba1 100644 --- a/rust/tests/test_api_server.rs +++ b/rust/tests/test_api_server.rs @@ -299,7 +299,7 @@ fn test_post_creator() { #[test] fn test_post_file() { - let (headers, router, _conn) = setup(); + let (headers, router, conn) = setup(); check_response( request::post( @@ -315,12 +315,15 @@ fn test_post_file() { check_response( request::post( "http://localhost:9411/v0/file", - headers, + headers.clone(), r#"{"size": 76543, - "sha1": "f013d66c7f6817d08b7eb2a93e6d0440c1f3e7f8", + "sha1": "f0000000000000008b7eb2a93e6d0440c1f3e7f8", "md5": "0b6d347b01d437a092be84c2edfce72c", "sha256": "a77e4c11a57f1d757fca5754a8f83b5d4ece49a2d28596889127c1a2f3f28832", - "url": "http://archive.org/asdf.txt", + "urls": [ + {"url": "http://archive.org/asdf.txt", "rel": "web" }, + {"url": "http://web.archive.org/2/http://archive.org/asdf.txt", "rel": "webarchive" } + ], "mimetype": "application/pdf", "releases": [ "aaaaaaaaaaaaarceaaaaaaaaae", @@ -332,7 +335,33 @@ fn test_post_file() { ), status::Created, None, - ); // TODO: "secret paper" + ); + + let editor_id = Uuid::parse_str("00000000-0000-0000-AAAA-000000000001").unwrap(); + let editgroup_id = get_or_create_editgroup(editor_id, &conn).unwrap(); + check_response( + request::post( + &format!( + "http://localhost:9411/v0/editgroup/{}/accept", + uuid2fcid(&editgroup_id) + ), + headers.clone(), + "", + &router, + ), + status::Ok, + None, + ); + + check_response( + request::get( + "http://localhost:9411/v0/file/lookup?sha1=f0000000000000008b7eb2a93e6d0440c1f3e7f8", + headers.clone(), + &router, + ), + status::Ok, + Some("web.archive.org/2/http"), + ); } #[test] @@ -377,6 +406,9 @@ fn test_post_release() { r#"{"title": "secret paper", "release_type": "journal-article", "doi": "10.1234/abcde.781231231239", + "pmid": "54321", + "pmcid": "PMC12345", + "wikidata_qid": "Q12345", "volume": "439", "issue": "IV", "pages": "1-399", @@ -637,3 +669,176 @@ fn test_edit_gets() { None, ); } + +#[test] +fn test_bad_external_idents() { + let (headers, router, _conn) = setup(); + + // Bad wikidata QID + check_response( + request::post( + "http://localhost:9411/v0/release", + headers.clone(), + r#"{"title": "secret paper", + "wikidata_qid": "P12345" + }"#, + &router, + ), + status::BadRequest, + Some("Wikidata QID"), + ); + check_response( + request::post( + "http://localhost:9411/v0/container", + headers.clone(), + r#"{"name": "my journal", + "wikidata_qid": "P12345" + }"#, + &router, + ), + status::BadRequest, + Some("Wikidata QID"), + ); + check_response( + request::post( + "http://localhost:9411/v0/creator", + headers.clone(), + r#"{"display_name": "some body", + "wikidata_qid": "P12345" + }"#, + &router, + ), + status::BadRequest, + Some("Wikidata QID"), + ); + + // Bad PMCID + check_response( + request::post( + "http://localhost:9411/v0/release", + headers.clone(), + r#"{"title": "secret paper", + "pmcid": "12345" + }"#, + &router, + ), + status::BadRequest, + Some("PMCID"), + ); + + // Bad PMID + check_response( + request::post( + "http://localhost:9411/v0/release", + headers.clone(), + r#"{"title": "secret paper", + "pmid": "not-a-number" + }"#, + &router, + ), + status::BadRequest, + Some("PMID"), + ); + + // Bad DOI + check_response( + request::post( + "http://localhost:9411/v0/release", + headers.clone(), + r#"{"title": "secret paper", + "doi": "asdf" + }"#, + &router, + ), + status::BadRequest, + Some("DOI"), + ); + + // Good identifiers + check_response( + request::post( + "http://localhost:9411/v0/release", + headers.clone(), + r#"{"title": "secret paper", + "doi": "10.1234/abcde.781231231239", + "pmid": "54321", + "pmcid": "PMC12345", + "wikidata_qid": "Q12345" + }"#, + &router, + ), + status::Created, + None, + ); +} + +#[test] +fn test_abstracts() { + let (headers, router, conn) = setup(); + + check_response( + request::post( + "http://localhost:9411/v0/release", + headers.clone(), + r#"{"title": "some paper", + "doi": "10.1234/iiiiiii", + "abstracts": [ + {"lang": "zh", + "mimetype": "text/plain", + "content": "some rando abstract 24iu3i25u2" }, + {"lang": "en", + "mimetype": "application/xml+jats", + "content": "some other abstract 99139405" } + ] + }"#, + &router, + ), + status::Created, + None, + ); + + let editor_id = Uuid::parse_str("00000000-0000-0000-AAAA-000000000001").unwrap(); + let editgroup_id = get_or_create_editgroup(editor_id, &conn).unwrap(); + check_response( + request::post( + &format!( + "http://localhost:9411/v0/editgroup/{}/accept", + uuid2fcid(&editgroup_id) + ), + headers.clone(), + "", + &router, + ), + status::Ok, + None, + ); + + check_response( + request::get( + "http://localhost:9411/v0/release/lookup?doi=10.1234/iiiiiii", + headers.clone(), + &router, + ), + status::Ok, + // SHA-1 of first abstract string + Some("4e30ded694c6a7775b9e7b019dfda6be0dd60944"), + ); + check_response( + request::get( + "http://localhost:9411/v0/release/lookup?doi=10.1234/iiiiiii", + headers.clone(), + &router, + ), + status::Ok, + Some("99139405"), + ); + check_response( + request::get( + "http://localhost:9411/v0/release/lookup?doi=10.1234/iiiiiii", + headers.clone(), + &router, + ), + status::Ok, + Some("24iu3i25u2"), + ); +} -- cgit v1.2.3