Skip to content

Commit f780290

Browse files
committed
fix #762 - throw ForbiddenUserException when 403 is returned and it's not a content version required
1 parent 158fc42 commit f780290

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

src/main/java/com/marklogic/client/impl/OkHttpServices.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -493,10 +493,6 @@ public Response apply(Request.Builder funcBuilder) {
493493
throw new FailedRequestException(
494494
"Content version required to delete document", failure);
495495
}
496-
throw new FailedRequestException(
497-
"Precondition required to delete document", failure);
498-
} else if (status == STATUS_FORBIDDEN) {
499-
FailedRequest failure = extractErrorFields(response);
500496
throw new ForbiddenUserException(
501497
"User is not allowed to delete documents", failure);
502498
}
@@ -1303,10 +1299,6 @@ private TemporalDescriptor putPostDocumentImpl(RequestLogger reqlog, String meth
13031299
throw new FailedRequestException(
13041300
"Content version required to write document", failure);
13051301
}
1306-
throw new FailedRequestException(
1307-
"Precondition required to write document", failure);
1308-
} else if (status == STATUS_FORBIDDEN) {
1309-
FailedRequest failure = extractErrorFields(response);
13101302
throw new ForbiddenUserException(
13111303
"User is not allowed to write documents", failure);
13121304
}

src/test/java/com/marklogic/client/test/InvalidUserTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,16 @@
1616
package com.marklogic.client.test;
1717

1818
import static org.junit.Assert.assertEquals;
19+
import static org.junit.Assert.assertNotNull;
20+
import static org.junit.Assert.assertTrue;
21+
import static org.junit.Assert.fail;
1922

2023
import org.junit.Test;
2124

2225
import com.marklogic.client.DatabaseClient;
2326
import com.marklogic.client.DatabaseClientFactory;
2427
import com.marklogic.client.FailedRequestException;
28+
import com.marklogic.client.ForbiddenUserException;
2529
import com.marklogic.client.DatabaseClientFactory.Authentication;
2630
import com.marklogic.client.document.TextDocumentManager;
2731
import com.marklogic.client.io.StringHandle;
@@ -58,4 +62,22 @@ public void testInvalidUserAuth() {
5862
assertEquals(expectedException, exception);
5963

6064
}
65+
66+
@Test
67+
public void test_issue_762() {
68+
DatabaseClient readOnlyClient = DatabaseClientFactory.newClient(
69+
Common.HOST, Common.PORT, "rest-reader", "x", Authentication.DIGEST);
70+
try {
71+
readOnlyClient.newDocumentManager().writeAs("test.txt", "test");
72+
fail("reader could write a document, but shouldn't be able to");
73+
} catch (ForbiddenUserException e) {
74+
String message = e.getFailedRequest().getMessageCode();
75+
int statusCode = e.getFailedRequest().getStatusCode();
76+
assertNotNull("Error Message is null", message);
77+
assertTrue("Error Message", message.equals("SEC-PRIV"));
78+
assertTrue("Status code", (statusCode == 403));
79+
} finally {
80+
readOnlyClient.release();
81+
}
82+
}
6183
}

0 commit comments

Comments
 (0)