diff --git a/src/sakia/tests/unit/core/test_account.py b/src/sakia/tests/unit/core/test_account.py
index 8fae00475d12656daa12956d4d36599132c33816..66c2a729cf880ea019b4c532de9e2655e57d69ce 100644
--- a/src/sakia/tests/unit/core/test_account.py
+++ b/src/sakia/tests/unit/core/test_account.py
@@ -1,8 +1,4 @@
-import sys
 import unittest
-import asyncio
-import quamash
-import logging
 from PyQt5.QtCore import QLocale
 from sakia.core.registry.identities import IdentitiesRegistry
 from sakia.core import Account
@@ -28,3 +24,50 @@ class TestAccount(unittest.TestCase, QuamashTest):
         self.assertEqual(account.pubkey, account_from_json.pubkey)
         self.assertEqual(len(account.communities), len(account_from_json.communities))
         self.assertEqual(len(account.wallets), len(account.wallets))
+
+    def test_add_contact(self):
+        called = False
+
+        def signal_called():
+            nonlocal called
+            called = True
+        account = Account("test_salt", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
+                          "test_uid", [], [], [], self.identities_registry)
+        account.contacts_changed.connect(signal_called)
+        account.add_contact({"uid":"friend", "pubkey":"FFFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"})
+        self.assertEqual(len(account.contacts), 1)
+        self.assertEqual(account.contacts[0]["uid"], "friend")
+        self.assertEqual(account.contacts[0]["pubkey"], "FFFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk")
+        self.assertTrue(called)
+
+    def test_remove_contact(self):
+        called = False
+
+        def signal_called():
+            nonlocal called
+            called = True
+        contact = {"uid":"friend", "pubkey":"FFFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"}
+        account = Account("test_salt", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
+                          "test_uid", [], [], [contact],
+                          self.identities_registry)
+        account.contacts_changed.connect(signal_called)
+        account.remove_contact(contact)
+        self.assertEqual(len(account.contacts), 0)
+        self.assertTrue(called)
+
+    def test_edit_contact(self):
+        called = False
+
+        def signal_called():
+            nonlocal called
+            called = True
+        contact = {"uid":"friend", "pubkey":"FFFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"}
+        account = Account("test_salt", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
+                          "test_uid", [], [], [contact],
+                          self.identities_registry)
+        account.contacts_changed.connect(signal_called)
+        account.edit_contact(0, {"uid": "ennemy", "pubkey": "FFFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"})
+        self.assertEqual(len(account.contacts), 1)
+        self.assertEqual(account.contacts[0]["uid"], "ennemy")
+        self.assertEqual(account.contacts[0]["pubkey"], "FFFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk")
+        self.assertTrue(called)
\ No newline at end of file