From 54446bcae2e920581d3d4a6848bdcfa8706d6b22 Mon Sep 17 00:00:00 2001 From: Marcin Procyk Date: Tue, 7 Jun 2022 10:32:15 +0200 Subject: [PATCH] refactor: add missing client test data (DEV-979) (#2072) * add missing ontology client test data * add missing candeletelist client test data * add delete list node comments route tests * update client test data * fix def name --- webapi/scripts/expected-client-test-data.txt | 4 + .../DeleteListItemsRouteADME2ESpec.scala | 77 +++++++++++++------ .../webapi/e2e/v2/OntologyV2R2RSpec.scala | 15 +++- 3 files changed, 70 insertions(+), 26 deletions(-) diff --git a/webapi/scripts/expected-client-test-data.txt b/webapi/scripts/expected-client-test-data.txt index 1fb5baffb4..3449a91634 100644 --- a/webapi/scripts/expected-client-test-data.txt +++ b/webapi/scripts/expected-client-test-data.txt @@ -18,6 +18,7 @@ test-data/admin/lists/add-child-to-second-child-request.json test-data/admin/lists/add-child-to-second-child-response.json test-data/admin/lists/add-second-child-to-root-request.json test-data/admin/lists/add-second-child-to-root-response.json +test-data/admin/lists/candeletelist-response.json test-data/admin/lists/create-child-node-request.json test-data/admin/lists/create-child-node-response.json test-data/admin/lists/create-child-node-with-custom-IRI-request.json @@ -26,6 +27,7 @@ test-data/admin/lists/create-list-request.json test-data/admin/lists/create-list-response.json test-data/admin/lists/create-list-with-custom-IRI-request.json test-data/admin/lists/create-list-with-custom-IRI-response.json +test-data/admin/lists/delete-list-node-comments-response.json test-data/admin/lists/delete-list-node-response.json test-data/admin/lists/delete-list-response.json test-data/admin/lists/get-anything-project-lists-response.json @@ -194,7 +196,9 @@ test-data/v2/ontologies/create-ontology-with-comment-request.json test-data/v2/ontologies/create-ontology-with-comment-response.json test-data/v2/ontologies/create-value-property-request.json test-data/v2/ontologies/create-value-property-response.json +test-data/v2/ontologies/delete-class-comment-response.json test-data/v2/ontologies/delete-ontology-response.json +test-data/v2/ontologies/delete-property-comment-response.json test-data/v2/ontologies/get-class-anything-thing-with-allLanguages-response.json test-data/v2/ontologies/get-class-image-bild-response.json test-data/v2/ontologies/get-class-incunabula-book-response.json diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/admin/lists/DeleteListItemsRouteADME2ESpec.scala b/webapi/src/test/scala/org/knora/webapi/e2e/admin/lists/DeleteListItemsRouteADME2ESpec.scala index d6a8743bea..f92bd7a015 100644 --- a/webapi/src/test/scala/org/knora/webapi/e2e/admin/lists/DeleteListItemsRouteADME2ESpec.scala +++ b/webapi/src/test/scala/org/knora/webapi/e2e/admin/lists/DeleteListItemsRouteADME2ESpec.scala @@ -51,6 +51,19 @@ class DeleteListItemsRouteADME2ESpec // Collects client test data private val clientTestDataCollector = new ClientTestDataCollector(settings) + // Collects client test data + private def collectClientTestData(fileName: String, fileContent: String): Unit = + clientTestDataCollector.addFile( + TestDataFileContent( + filePath = TestDataFilePath( + directoryPath = clientTestDataPath, + filename = fileName, + fileExtension = "json" + ), + text = fileContent + ) + ) + override lazy val rdfDataObjects = List( RdfDataObject(path = "test_data/demo_data/images-demo-data.ttl", name = "http://www.knora.org/data/00FF/images"), RdfDataObject(path = "test_data/all_data/anything-data.ttl", name = "http://www.knora.org/data/0001/anything") @@ -125,16 +138,7 @@ class DeleteListItemsRouteADME2ESpec val firstChild = children.head firstChild.children.size should be(5) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "delete-list-node-response", - fileExtension = "json" - ), - text = responseToString(response) - ) - ) + collectClientTestData("delete-list-node-response", responseToString(response)) } "delete the single child of a node" in { @@ -161,22 +165,13 @@ class DeleteListItemsRouteADME2ESpec val deletedStatus = AkkaHttpUtils.httpResponseToJson(response).fields("deleted") deletedStatus.convertTo[Boolean] should be(true) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "delete-list-response", - fileExtension = "json" - ), - text = responseToString(response) - ) - ) + collectClientTestData("delete-list-response", responseToString(response)) } } "Candeletelist route (/admin/lists/candelete)" when { "used to query if list can be deleted" should { - "return TRUE for unused list" in { + "return positive response for unused list" in { val unusedList = "http://rdfh.ch/lists/0001/notUsedList" val unusedListEncoded = java.net.URLEncoder.encode(unusedList, "utf-8") val request = Get(baseApiUrl + s"/admin/lists/candelete/" + unusedListEncoded) ~> addCredentials( @@ -190,9 +185,11 @@ class DeleteListItemsRouteADME2ESpec canDelete.convertTo[Boolean] should be(true) val listIri = AkkaHttpUtils.httpResponseToJson(response).fields("listIri") listIri.convertTo[String] should be(unusedList) + + collectClientTestData("candeletelist-response", responseToString(response)) } - "return FALSE for used list" in { + "return negative response for used list" in { val usedList = "http://rdfh.ch/lists/0001/treeList01" val usedListEncoded = java.net.URLEncoder.encode(usedList, "utf-8") val request = Get(baseApiUrl + s"/admin/lists/candelete/" + usedListEncoded) ~> addCredentials( @@ -220,4 +217,40 @@ class DeleteListItemsRouteADME2ESpec } } } + + "DeleteListNodeComments route (/admin/lists/comments)" when { + "deleting comments" should { + "delete child node comments" in { + val childNodeIri = "http://rdfh.ch/lists/0001/testList01" + val childNodeIriEncoded = java.net.URLEncoder.encode(childNodeIri, "utf-8") + val request = Delete(s"$baseApiUrl/admin/lists/comments/$childNodeIriEncoded") ~> addCredentials( + BasicHttpCredentials(rootCreds.email, rootCreds.password) + ) + + val response: HttpResponse = singleAwaitingRequest(request) + val responseStr = responseToString(response) + + response.status should be(StatusCodes.OK) + val commentsDeleted = AkkaHttpUtils.httpResponseToJson(response).fields("commentsDeleted") + commentsDeleted.convertTo[Boolean] should be(true) + val nodeIri = AkkaHttpUtils.httpResponseToJson(response).fields("nodeIri") + nodeIri.convertTo[String] should be(childNodeIri) + + collectClientTestData("delete-list-node-comments-response", responseStr) + } + + "return exception for root node comments" in { + val childNodeIri = "http://rdfh.ch/lists/0001/testList" + val childNodeIriEncoded = java.net.URLEncoder.encode(childNodeIri, "utf-8") + val request = Delete(s"$baseApiUrl/admin/lists/comments/$childNodeIriEncoded") ~> addCredentials( + BasicHttpCredentials(rootCreds.email, rootCreds.password) + ) + + val response: HttpResponse = singleAwaitingRequest(request) + val responseStr = responseToString(response) + + response.status should be(StatusCodes.BadRequest) + } + } + } } diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala b/webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala index e5f98c3286..f8c9d21c0a 100644 --- a/webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala +++ b/webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala @@ -983,8 +983,9 @@ class OntologyV2R2RSpec extends R2RSpec { Delete( s"/v2/ontologies/properties/comment/$propertySegment?lastModificationDate=$lastModificationDate" ) ~> addCredentials(BasicHttpCredentials(anythingUsername, password)) ~> ontologiesPath ~> check { - assert(status == StatusCodes.OK, response.toString) - val responseJsonDoc: JsonLDDocument = responseToJsonLDDocument(response) + val responseStr = responseAs[String] + assert(status == StatusCodes.OK, responseStr) + val responseJsonDoc = JsonLDUtil.parseJsonLD(responseStr) val newFreetestLastModDate = responseJsonDoc.requireDatatypeValueInObject( key = OntologyConstants.KnoraApiV2Complex.LastModificationDate, expectedDatatype = OntologyConstants.Xsd.DateTimeStamp.toSmartIri, @@ -1047,9 +1048,12 @@ class OntologyV2R2RSpec extends R2RSpec { val responseFromJsonLD: InputOntologyV2 = InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + responseFromJsonLD.properties.head._2.predicates.toSet should ===( expectedResponseToCompare.properties.head._2.predicates.toSet ) + + CollectClientTestData("delete-property-comment-response", responseStr) } } @@ -1061,8 +1065,9 @@ class OntologyV2R2RSpec extends R2RSpec { Delete( s"/v2/ontologies/classes/comment/$classSegment?lastModificationDate=$lastModificationDate" ) ~> addCredentials(BasicHttpCredentials(anythingUsername, password)) ~> ontologiesPath ~> check { - assert(status == StatusCodes.OK, response.toString) - val responseJsonDoc: JsonLDDocument = responseToJsonLDDocument(response) + val responseStr = responseAs[String] + assert(status == StatusCodes.OK, responseStr) + val responseJsonDoc: JsonLDDocument = JsonLDUtil.parseJsonLD(responseStr) val newFreetestLastModDate = responseJsonDoc.requireDatatypeValueInObject( key = OntologyConstants.KnoraApiV2Complex.LastModificationDate, expectedDatatype = OntologyConstants.Xsd.DateTimeStamp.toSmartIri, @@ -1125,6 +1130,8 @@ class OntologyV2R2RSpec extends R2RSpec { responseFromJsonLD.classes.head._2.predicates.toSet should ===( expectedResponseToCompare.classes.head._2.predicates.toSet ) + + CollectClientTestData("delete-class-comment-response", responseStr) } }