diff --git a/src/main/java/org/fcrepo/client/TransactionalFcrepoClient.java b/src/main/java/org/fcrepo/client/TransactionalFcrepoClient.java index b08bbc6..13f02ff 100644 --- a/src/main/java/org/fcrepo/client/TransactionalFcrepoClient.java +++ b/src/main/java/org/fcrepo/client/TransactionalFcrepoClient.java @@ -29,6 +29,10 @@ public TransactionalFcrepoClient(final FcrepoResponse.TransactionURI transaction this.transactionURI = transactionURI; } + public FcrepoResponse.TransactionURI getTransactionURI() { + return transactionURI; + } + @Override public GetBuilder get(final URI url) { final var builder = super.get(url); diff --git a/src/test/java/org/fcrepo/client/integration/FcrepoTransactionIT.java b/src/test/java/org/fcrepo/client/integration/FcrepoTransactionIT.java index 2379d72..39e4c73 100644 --- a/src/test/java/org/fcrepo/client/integration/FcrepoTransactionIT.java +++ b/src/test/java/org/fcrepo/client/integration/FcrepoTransactionIT.java @@ -61,11 +61,7 @@ public void testTransactionCommit() throws Exception { location = response.getTransactionUri().orElseThrow(() -> new IllegalStateException("No tx found")); } - final var transactionalClient = FcrepoClient.client() - .credentials(FEDORA_ADMIN, FEDORA_ADMIN) - .authScope(HOSTNAME) - .transactionURI(location) - .build(); + final var transactionalClient = client.transactionalClient(location); final var container = UUID.randomUUID().toString(); try (final var response = transactionalClient.put(new URI(SERVER_ADDRESS + container)).perform()) { @@ -79,6 +75,25 @@ public void testTransactionCommit() throws Exception { } } + @Test + public void testStartTransactionalClient() throws Exception { + // the same as testTransactionCommit but using startTransactionalClient + try (final var transactionalClient = client.transaction().startTransactionalClient(new URI(SERVER_ADDRESS))) { + final var txURI = transactionalClient.getTransactionURI(); + + final var container = UUID.randomUUID().toString(); + try (final var response = transactionalClient.put(new URI(SERVER_ADDRESS + container)).perform()) { + assertEquals(CREATED.getStatusCode(), response.getStatusCode()); + assertTrue(response.getTransactionUri().isPresent()); + assertEquals(txURI.asString(), response.getTransactionUri().get().asString()); + } + + try (final var response = client.transaction().commit(txURI).perform()) { + assertEquals(NO_CONTENT.getStatusCode(), response.getStatusCode()); + } + } + } + @Test public void testTransactionKeepAlive() throws Exception { final String expiry;