diff --git a/marklogic-client-api/src/test/java/com/marklogic/client/test/document/ReadDocumentPageTest.java b/marklogic-client-api/src/test/java/com/marklogic/client/test/document/ReadDocumentPageTest.java index 364485d9a..258a611bb 100644 --- a/marklogic-client-api/src/test/java/com/marklogic/client/test/document/ReadDocumentPageTest.java +++ b/marklogic-client-api/src/test/java/com/marklogic/client/test/document/ReadDocumentPageTest.java @@ -4,10 +4,14 @@ package com.marklogic.client.test.document; import com.marklogic.client.DatabaseClient; -import com.marklogic.client.document.DocumentPage; -import com.marklogic.client.document.DocumentRecord; +import com.marklogic.client.document.*; +import com.marklogic.client.io.BytesHandle; +import com.marklogic.client.io.DocumentMetadataHandle; import com.marklogic.client.io.StringHandle; +import com.marklogic.client.query.StructuredQueryBuilder; +import com.marklogic.client.query.StructuredQueryDefinition; import com.marklogic.client.test.Common; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -20,13 +24,49 @@ void test() { Common.deleteUrisWithPattern("/aaa-page/*"); final String uri = "/aaa-page/太田佳伸のXMLファイル.xml"; - DatabaseClient client = Common.newClient(); - client.newXMLDocumentManager().write(uri, Common.newDefaultMetadata(), - new StringHandle("太田佳伸のXMLファイル")); - - DocumentPage page = client.newXMLDocumentManager().read(uri); - assertTrue(page.hasNext()); - DocumentRecord record = page.next(); - assertEquals(uri, record.getUri()); + DocumentRecord documentRecord; + try (DatabaseClient client = Common.newClient()) { + client.newXMLDocumentManager().write(uri, Common.newDefaultMetadata(), + new StringHandle("太田佳伸のXMLファイル")); + + try (DocumentPage page = client.newXMLDocumentManager().read(uri)) { + assertTrue(page.hasNext()); + documentRecord = page.next(); + } + } + assertEquals(uri, documentRecord.getUri()); + } + + @Test + @Disabled("Disabling for now because this seems to be a server bug.") + void testEmptyDocWithNoExtension() { + final String collection = "empty-binary-test"; + + try (DatabaseClient client = Common.newClient()) { + writeEmptyDocWithNoFileExtension(client, collection); + + JSONDocumentManager documentManager = client.newJSONDocumentManager(); + StructuredQueryDefinition query = new StructuredQueryBuilder().collection(collection); + DocumentRecord documentRecord; + try (DocumentPage documentPage = documentManager.search(query, 1)) { + assertTrue(documentPage.hasNext(), "Expected a document in the page, but none was found."); + documentRecord = documentPage.next(); + } + String uri = documentRecord.getUri(); + assertEquals("/test/empty", uri, "The URI of the empty document should match the one written."); + } + } + + protected void writeEmptyDocWithNoFileExtension(DatabaseClient client, String... collections) { + DocumentMetadataHandle metadata = new DocumentMetadataHandle() + .withCollections(collections) + .withPermission("rest-reader", DocumentMetadataHandle.Capability.READ, DocumentMetadataHandle.Capability.UPDATE); + // This needs to be a JSON document manager because the empty document is written without a format. + JSONDocumentManager mgr = client.newJSONDocumentManager(); + DocumentWriteSet set = mgr.newWriteSet(); + BytesHandle emptyBytesHandle = new BytesHandle(new byte[0]); + String uri = "/test/empty"; + set.add(uri, metadata, emptyBytesHandle); + mgr.write(set); } }