From 31487a7fc406f53887acbf2a761122cec8713e86 Mon Sep 17 00:00:00 2001
From: Nico Alt <nicoalt@posteo.org>
Date: Sat, 10 Oct 2020 16:00:01 +0000
Subject: [PATCH] Support deleting all messages of a private chat

Fixes #20.
---
 briar_wrapper/models/private_chat.py            | 13 +++++++++++++
 tests/briar_wrapper/models/test_private_chat.py |  9 +++++++++
 2 files changed, 22 insertions(+)

diff --git a/briar_wrapper/models/private_chat.py b/briar_wrapper/models/private_chat.py
index 2b85faf..2a57220 100644
--- a/briar_wrapper/models/private_chat.py
+++ b/briar_wrapper/models/private_chat.py
@@ -63,3 +63,16 @@ class PrivateChat(Model):
         url = urljoin(BASE_HTTP_URL,
                       self._API_ENDPOINT + str(self._contact_id) + "/read")
         requests.post(url, headers=self._headers, json={"messageId": message_id})
+
+    def delete_all_messages(self):
+        # pylint: disable=line-too-long
+        """
+        Deletes all messages
+
+        [Upstream documentation](https://code.briarproject.org/briar/briar/-/blob/master/briar-headless/README.md#deleting-all-private-messages)
+
+        .. versionadded:: 0.0.5
+        """
+        url = urljoin(BASE_HTTP_URL,
+                      self._API_ENDPOINT + str(self._contact_id) + "/all")
+        requests.delete(url, headers=self._headers)
diff --git a/tests/briar_wrapper/models/test_private_chat.py b/tests/briar_wrapper/models/test_private_chat.py
index d454a8b..90aea3d 100644
--- a/tests/briar_wrapper/models/test_private_chat.py
+++ b/tests/briar_wrapper/models/test_private_chat.py
@@ -35,5 +35,14 @@ def test_send_message(api, request_headers, requests_mock):
     private_chat.send(TEST_TEXT)
 
 
+@requests_mock.Mocker(kw="requests_mock")
+def test_delete_all_messages(api, request_headers, requests_mock):
+    private_chat = PrivateChat(api, TEST_CONTACT_ID)
+    url = BASE_HTTP_URL % f"{TEST_CONTACT_ID}/all"
+
+    requests_mock.register_uri("DELETE", url, request_headers=request_headers)
+    private_chat.delete_all_messages()
+
+
 def match_request_send_message(request):
     return {"text": TEST_TEXT} == request.json()
-- 
GitLab