diff --git a/core/Test/ContactGroupControllerTest.php b/core/Test/ContactGroupControllerTest.php
index 4e1c340f40170a80156b532c595b27b405c00b1e..717e4d60359385431e0ffc39a69d55f145fc4349 100644
--- a/core/Test/ContactGroupControllerTest.php
+++ b/core/Test/ContactGroupControllerTest.php
@@ -102,6 +102,73 @@ class ContactGroupControllerTest extends TestCase
         $this->assertInternalType('array', $responseBody->contactsGroup->contacts);
     }
 
+    public function testAddContacts()
+    {
+        $contactGroupController = new \Contact\controllers\ContactGroupController();
+
+        $contacts = \Contact\models\ContactModel::getOnView([
+            'select'    => ['ca_id'],
+            'limit'     => 1
+        ]);
+
+        if (!empty($contacts[0])) {
+            //  UPDATE
+            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
+            $request        = \Slim\Http\Request::createFromEnvironment($environment);
+
+            $aArgs = [
+                'contacts'  => [$contacts[0]['ca_id']]
+            ];
+            $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+            $response     = $contactGroupController->addContacts($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
+            $responseBody = json_decode((string)$response->getBody());
+
+            $this->assertSame(self::$id, $responseBody->contactsGroup->id);
+            $this->assertNotEmpty($responseBody->contactsGroup);
+            $this->assertNotEmpty($responseBody->contactsGroup->contacts);
+            $this->assertSame($contacts[0]['ca_id'], $responseBody->contactsGroup->contacts[0]->addressId);
+            $this->assertSame(0, $responseBody->contactsGroup->contacts[0]->position);
+            $this->assertInternalType('string', $responseBody->contactsGroup->contacts[0]->contact);
+            $this->assertInternalType('string', $responseBody->contactsGroup->contacts[0]->address);
+        }
+    }
+
+    public function testDeleteContacts()
+    {
+        $contactGroupController = new \Contact\controllers\ContactGroupController();
+
+        $contacts = \Contact\models\ContactModel::getOnView([
+            'select'    => ['ca_id'],
+            'limit'     => 1
+        ]);
+
+        if (!empty($contacts[0])) {
+            //  UPDATE
+            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
+            $request        = \Slim\Http\Request::createFromEnvironment($environment);
+
+            $response     = $contactGroupController->deleteContact($request, new \Slim\Http\Response(), ['id' => self::$id, 'addressId' => $contacts[0]['ca_id']]);
+            $responseBody = json_decode((string)$response->getBody());
+
+            $this->assertSame('success', $responseBody->success);
+        }
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response       = $contactGroupController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody   = json_decode((string)$response->getBody());
+
+        $user = \User\models\UserModel::getByUserId(['select' => ['id'], 'userId' => 'superadmin']);
+        $this->assertSame(self::$id, $responseBody->contactsGroup->id);
+        $this->assertSame($user['id'], $responseBody->contactsGroup->owner);
+        $this->assertSame('superadmin', $responseBody->contactsGroup->entity_owner);
+        $this->assertInternalType('string', $responseBody->contactsGroup->labelledOwner);
+        $this->assertInternalType('array', $responseBody->contactsGroup->contacts);
+        $this->assertEmpty($responseBody->contactsGroup->contacts);
+    }
+
     public function testDelete()
     {
         $contactGroupController = new \Contact\controllers\ContactGroupController();
diff --git a/core/Test/ContactTypeControllerTest.php b/core/Test/ContactTypeControllerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..ecc6ae981af707d716894347f38a4ef2410064a3
--- /dev/null
+++ b/core/Test/ContactTypeControllerTest.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * Copyright Maarch since 2008 under licence GPLv3.
+ * See LICENCE.txt file at the root folder for more details.
+ * This file is part of Maarch software.
+ *
+ */
+
+use PHPUnit\Framework\TestCase;
+
+class ContactTypeControllerTest extends TestCase
+{
+    public function testGet()
+    {
+        $contactTypeController = new \Contact\controllers\ContactTypeController();
+
+        //  GET
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response       = $contactTypeController->get($request, new \Slim\Http\Response());
+        $responseBody   = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->contactsTypes);
+        $this->assertNotEmpty($responseBody->contactsTypes);
+    }
+}
diff --git a/phpunit.xml b/phpunit.xml
index 9c913044911fea90c0d6ce25727f375d9ca2c7d2..8204ef76f6a392e828f62f0415d43a294265f73b 100755
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -4,10 +4,11 @@
         <testsuite name="Maarch Core Test Suite">
             <!--directory>core/Test</directory-->
             <file>core/Test/ActionControllerTest.php</file>
-             <file>core/Test/AutocompleteControllerTest.php</file>
+            <file>core/Test/AutocompleteControllerTest.php</file>
             <file>core/Test/BasketControllerTest.php</file>
             <file>core/Test/ContactControllerTest.php</file>
             <file>core/Test/ContactGroupControllerTest.php</file>
+            <file>core/Test/ContactTypeControllerTest.php</file>
             <file>core/Test/DoctypeControllerTest.php</file>
             <file>core/Test/EntityControllerTest.php</file>
             <file>core/Test/GroupControllerTest.php</file>