mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-15 20:29:52 +01:00
Make deleting a non-existent file is tolerable
This commit is contained in:
@@ -92,9 +92,13 @@ interface MailboxApi {
|
|||||||
* Used by owner and contacts to delete files.
|
* Used by owner and contacts to delete files.
|
||||||
* <p>
|
* <p>
|
||||||
* Returns 200 OK (no exception) if deletion was successful.
|
* Returns 200 OK (no exception) if deletion was successful.
|
||||||
|
*
|
||||||
|
* @throws TolerableFailureException on 404 response,
|
||||||
|
* because file was most likely deleted already.
|
||||||
*/
|
*/
|
||||||
void deleteFile(MailboxProperties properties, String folderId,
|
void deleteFile(MailboxProperties properties, String folderId,
|
||||||
String fileId) throws IOException, ApiException;
|
String fileId)
|
||||||
|
throws IOException, ApiException, TolerableFailureException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lists all contact outboxes that have files available
|
* Lists all contact outboxes that have files available
|
||||||
|
|||||||
@@ -223,7 +223,8 @@ class MailboxApiImpl implements MailboxApi {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteFile(MailboxProperties properties, String folderId,
|
public void deleteFile(MailboxProperties properties, String folderId,
|
||||||
String fileId) throws IOException, ApiException {
|
String fileId)
|
||||||
|
throws IOException, ApiException, TolerableFailureException {
|
||||||
String path = "/files/" + folderId + "/" + fileId;
|
String path = "/files/" + folderId + "/" + fileId;
|
||||||
Request request = getRequestBuilder(properties.getAuthToken())
|
Request request = getRequestBuilder(properties.getAuthToken())
|
||||||
.delete()
|
.delete()
|
||||||
@@ -231,6 +232,7 @@ class MailboxApiImpl implements MailboxApi {
|
|||||||
.build();
|
.build();
|
||||||
OkHttpClient client = httpClientProvider.get();
|
OkHttpClient client = httpClientProvider.get();
|
||||||
Response response = client.newCall(request).execute();
|
Response response = client.newCall(request).execute();
|
||||||
|
if (response.code() == 404) throw new TolerableFailureException();
|
||||||
if (response.code() != 200) throw new ApiException();
|
if (response.code() != 200) throw new ApiException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -591,6 +591,7 @@ public class MailboxApiTest extends BrambleTestCase {
|
|||||||
server.enqueue(new MockResponse());
|
server.enqueue(new MockResponse());
|
||||||
server.enqueue(new MockResponse().setResponseCode(205));
|
server.enqueue(new MockResponse().setResponseCode(205));
|
||||||
server.enqueue(new MockResponse().setResponseCode(401));
|
server.enqueue(new MockResponse().setResponseCode(401));
|
||||||
|
server.enqueue(new MockResponse().setResponseCode(404));
|
||||||
server.start();
|
server.start();
|
||||||
String baseUrl = getBaseUrl(server);
|
String baseUrl = getBaseUrl(server);
|
||||||
MailboxProperties properties =
|
MailboxProperties properties =
|
||||||
@@ -621,6 +622,15 @@ public class MailboxApiTest extends BrambleTestCase {
|
|||||||
assertEquals("/files/" + contactInboxId + "/" + name,
|
assertEquals("/files/" + contactInboxId + "/" + name,
|
||||||
request3.getPath());
|
request3.getPath());
|
||||||
assertToken(request3, token);
|
assertToken(request3, token);
|
||||||
|
|
||||||
|
// file not found is tolerable
|
||||||
|
assertThrows(TolerableFailureException.class, () ->
|
||||||
|
api.deleteFile(properties, contactInboxId, name));
|
||||||
|
RecordedRequest request4 = server.takeRequest();
|
||||||
|
assertEquals("DELETE", request4.getMethod());
|
||||||
|
assertEquals("/files/" + contactInboxId + "/" + name,
|
||||||
|
request4.getPath());
|
||||||
|
assertToken(request4, token);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -225,6 +225,10 @@ public class MailboxIntegrationTest extends BrambleTestCase {
|
|||||||
api.getFiles(ownerProperties, contact.outboxId));
|
api.getFiles(ownerProperties, contact.outboxId));
|
||||||
assertEquals(emptyList(), api.getFolders(ownerProperties));
|
assertEquals(emptyList(), api.getFolders(ownerProperties));
|
||||||
|
|
||||||
|
// deleting a non-existent file is tolerable
|
||||||
|
assertThrows(TolerableFailureException.class, () ->
|
||||||
|
api.deleteFile(ownerProperties, contact.outboxId, file3name));
|
||||||
|
|
||||||
// owner deletes contact again to leave clean state for other tests
|
// owner deletes contact again to leave clean state for other tests
|
||||||
api.deleteContact(ownerProperties, contactId);
|
api.deleteContact(ownerProperties, contactId);
|
||||||
assertEquals(emptyList(), api.getContacts(ownerProperties));
|
assertEquals(emptyList(), api.getContacts(ownerProperties));
|
||||||
|
|||||||
Reference in New Issue
Block a user