Fix error handling on DELETE /share/id

This commit is contained in:
jendib 2014-12-01 01:21:38 +01:00
parent 2abf0c6eab
commit 745766a2c3
2 changed files with 24 additions and 3 deletions

View File

@ -91,12 +91,16 @@ public class ShareResource extends BaseResource {
// Get the share // Get the share
ShareDao shareDao = new ShareDao(); ShareDao shareDao = new ShareDao();
DocumentDao documentDao = new DocumentDao(); DocumentDao documentDao = new DocumentDao();
Share share; Share share = shareDao.getShare(id);
if (share == null) {
throw new ClientException("ShareNotFound", MessageFormat.format("Share not found: {0}", id));
}
// Check that the user is the owner of the linked document
try { try {
share = shareDao.getShare(id);
documentDao.getDocument(share.getDocumentId(), principal.getId()); documentDao.getDocument(share.getDocumentId(), principal.getId());
} catch (NoResultException e) { } catch (NoResultException e) {
throw new ClientException("ShareNotFound", MessageFormat.format("Share not found: {0}", id)); throw new ClientException("DocumentNotFound", MessageFormat.format("Document not found: {0}", share.getDocumentId()));
} }
// Delete the share // Delete the share

View File

@ -109,6 +109,16 @@ public class TestShareResource extends BaseJerseyTest {
byte[] fileBytes = ByteStreams.toByteArray(is); byte[] fileBytes = ByteStreams.toByteArray(is);
Assert.assertEquals(163510, fileBytes.length); Assert.assertEquals(163510, fileBytes.length);
// Deletes the share (not allowed)
clientUtil.createUser("share2");
String share2AuthenticationToken = clientUtil.login("share2");
shareResource = resource().path("/share/" + share1Id);
shareResource.addFilter(new CookieAuthenticationFilter(share2AuthenticationToken));
response = shareResource.delete(ClientResponse.class);
Assert.assertEquals(Status.BAD_REQUEST, Status.fromStatusCode(response.getStatus()));
json = response.getEntity(JSONObject.class);
Assert.assertEquals("DocumentNotFound", json.getString("type"));
// Deletes the share // Deletes the share
shareResource = resource().path("/share/" + share1Id); shareResource = resource().path("/share/" + share1Id);
shareResource.addFilter(new CookieAuthenticationFilter(share1AuthenticationToken)); shareResource.addFilter(new CookieAuthenticationFilter(share1AuthenticationToken));
@ -117,5 +127,12 @@ public class TestShareResource extends BaseJerseyTest {
json = response.getEntity(JSONObject.class); json = response.getEntity(JSONObject.class);
Assert.assertEquals("ok", json.getString("status")); Assert.assertEquals("ok", json.getString("status"));
// Deletes the share again
shareResource = resource().path("/share/" + share1Id);
shareResource.addFilter(new CookieAuthenticationFilter(share1AuthenticationToken));
response = shareResource.delete(ClientResponse.class);
Assert.assertEquals(Status.BAD_REQUEST, Status.fromStatusCode(response.getStatus()));
json = response.getEntity(JSONObject.class);
Assert.assertEquals("ShareNotFound", json.getString("type"));
} }
} }