diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp
index c9230aaedba5fa853b5a33bb1cbac23e161085e9..594e746458e884804f40c6ff7400621137bef5c6 100644
--- a/src/contactmodel.cpp
+++ b/src/contactmodel.cpp
@@ -287,9 +287,10 @@ ContactModel::searchContact(const std::string& query)
     // query is a valid RingID?
     auto uri = URI(QString(query.c_str()));
     if (uri.full().startsWith("ring:")) {
+        auto shortUri = uri.full().mid(5).toStdString();
         profile::Info profileInfo;
-        profileInfo.uri = query;
-        profileInfo.alias = query;
+        profileInfo.uri = shortUri;
+        profileInfo.alias = shortUri;
         profileInfo.type = profile::Type::TEMPORARY;
         temporaryContact.profileInfo = profileInfo;
         emit modelUpdated();
diff --git a/test/contactmodeltester.cpp b/test/contactmodeltester.cpp
index dca776b714b1bd7eb0117a68e092efc568cc58b8..fcedd5b7fa120d71c77fe0fa9c83a5d1606bd63e 100644
--- a/test/contactmodeltester.cpp
+++ b/test/contactmodeltester.cpp
@@ -72,8 +72,8 @@ ContactModelTester::testReceivesPendingRequest()
     ConfigurationManager::instance().emitIncomingTrustRequest("ring1", "pending0", payload, 0);
     auto contactAdded = WaitForSignalHelper(*accInfo_.contactModel,
         SIGNAL(contactAdded(const std::string& contactUri))).wait(1000);
-    CPPUNIT_ASSERT_EQUAL(contactAdded, true);
-    CPPUNIT_ASSERT_EQUAL(accInfo_.contactModel->hasPendingRequests(), true);
+    CPPUNIT_ASSERT(contactAdded);
+    CPPUNIT_ASSERT(accInfo_.contactModel->hasPendingRequests());
     auto contactsFromDaemon = ConfigurationManager::instance().getContacts("ring1");
     auto contacts = accInfo_.contactModel->getAllContacts();
     int lrcContactsNumber = contacts.size();
@@ -84,14 +84,8 @@ ContactModelTester::testReceivesPendingRequest()
 void
 ContactModelTester::testAddNewRingContact()
 {
-    auto contactFound = false;
-    try
-    {
-        accInfo_.contactModel->getContact("dummy");
-        contactFound = true;
-    } catch(...) { }
     // "dummy" should not be in "ring1" contacts.
-    if (contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT_THROW(accInfo_.contactModel->getContact("dummy"), std::out_of_range);
     // Search and add the temporaryContact
     accInfo_.contactModel->searchContact("dummy");
     WaitForSignalHelper(*accInfo_.contactModel,
@@ -101,29 +95,37 @@ ContactModelTester::testAddNewRingContact()
     accInfo_.contactModel->addContact(temporaryContact);
     auto contactAdded = WaitForSignalHelper(*accInfo_.contactModel,
         SIGNAL(contactAdded(const std::string& contactUri))).wait(1000);
-    CPPUNIT_ASSERT_EQUAL(contactAdded, true);
-    contactFound = false;
-    try
-    {
-        accInfo_.contactModel->getContact("dummy");
-        contactFound = true;
-    } catch(...) { }
-    // "dummy" should not be "ring1" contacts.
-    if (!contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT(contactAdded);
+    CPPUNIT_ASSERT_NO_THROW(accInfo_.contactModel->getContact("dummy"));
+}
+
+void
+ContactModelTester::testAddRingURI()
+{
+    CPPUNIT_ASSERT_THROW(accInfo_.contactModel->getContact("f5a46751671918fe7210a3c31b9a9e4ce081429b"), std::out_of_range);
+    auto nbContacts = accInfo_.contactModel->getAllContacts().size();
+    // Search and add the temporaryContact
+    accInfo_.contactModel->searchContact("ring:f5a46751671918fe7210a3c31b9a9e4ce081429b");
+    WaitForSignalHelper(*accInfo_.contactModel,
+        SIGNAL(modelUpdated())).wait(1000);
+    auto temporaryContact = accInfo_.contactModel->getContact("");
+    CPPUNIT_ASSERT_EQUAL(temporaryContact.profileInfo.uri, std::string("f5a46751671918fe7210a3c31b9a9e4ce081429b"));
+    accInfo_.contactModel->addContact(temporaryContact);
+    auto contactAdded = WaitForSignalHelper(*accInfo_.contactModel,
+        SIGNAL(contactAdded(const std::string& contactUri))).wait(1000);
+    CPPUNIT_ASSERT(contactAdded);
+    // "f5a46751671918fe7210a3c31b9a9e4ce081429b" should be in "ring1" contacts.
+    CPPUNIT_ASSERT_NO_THROW(accInfo_.contactModel->getContact("f5a46751671918fe7210a3c31b9a9e4ce081429b"));
+    // We should only have added one contact.
+    CPPUNIT_ASSERT_EQUAL((nbContacts + 1), accInfo_.contactModel->getAllContacts().size());
 }
 
 void
 ContactModelTester::testAddNewSIPContact()
 {
-    auto contactFound = false;
     auto& accInfoSip = lrc_->getAccountModel().getAccountInfo("sip0");
-    try
-    {
-        accInfoSip.contactModel->getContact("sipcontact0");
-        contactFound = true;
-    } catch(...) { }
     // "sipcontact0" should not be in "ring1" contacts.
-    if (contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT_THROW(accInfoSip.contactModel->getContact("sipcontact0"), std::out_of_range);
     // Search and add the temporaryContact
     accInfoSip.contactModel->searchContact("sipcontact0");
     WaitForSignalHelper(*accInfoSip.contactModel,
@@ -133,39 +135,21 @@ ContactModelTester::testAddNewSIPContact()
     accInfoSip.contactModel->addContact(temporaryContact);
     auto contactAdded = WaitForSignalHelper(*accInfoSip.contactModel,
         SIGNAL(contactAdded(const std::string& contactUri))).wait(1000);
-    CPPUNIT_ASSERT_EQUAL(contactAdded, true);
-    contactFound = false;
-    try
-    {
-        accInfoSip.contactModel->getContact("sipcontact0");
-        contactFound = true;
-    } catch(...) { }
+    CPPUNIT_ASSERT(contactAdded);
     // "sipcontact0" should be "ring1" contacts.
-    if (!contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT_NO_THROW(accInfoSip.contactModel->getContact("sipcontact0"));
 }
 
 void
 ContactModelTester::testAddAlreadyAddedContact()
 {
     auto nbContactsAtBegin = accInfo_.contactModel->getAllContacts().size();
-    auto contactFound = false;
-    try
-    {
-        accInfo_.contactModel->getContact("contact1");
-        contactFound = true;
-    } catch(...) { }
     // "contact1" should be in "ring1" contacts.
-    if (!contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT_NO_THROW(accInfo_.contactModel->getContact("contact1"));
     auto contact1 = accInfo_.contactModel->getContact("contact1");
     accInfo_.contactModel->addContact(contact1);
-    contactFound = false;
-    try
-    {
-        accInfo_.contactModel->getContact("contact1");
-        contactFound = true;
-    } catch(...) { }
     // "contact1" should be in "ring1" contacts.
-    if (!contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT_NO_THROW(accInfo_.contactModel->getContact("contact1"));
     auto nbContactsAtEnd = accInfo_.contactModel->getAllContacts().size();
     CPPUNIT_ASSERT_EQUAL(nbContactsAtBegin, nbContactsAtEnd);
 
@@ -175,56 +159,29 @@ void
 ContactModelTester::testRmRingContact()
 {
     int nbContactsAtBegin = accInfo_.contactModel->getAllContacts().size();
-    auto contactFound = false;
-    try
-    {
-        accInfo_.contactModel->getContact("contact2");
-        contactFound = true;
-    } catch(...) { }
     // "contact2" should be in "ring1" contacts.
-    if (!contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT_NO_THROW(accInfo_.contactModel->getContact("contact2"));
     accInfo_.contactModel->removeContact("contact2");
     auto contactRemoved = WaitForSignalHelper(*accInfo_.contactModel,
         SIGNAL(contactRemoved(const std::string& contactUri))).wait(1000);
-    CPPUNIT_ASSERT_EQUAL(contactRemoved, true);
+    CPPUNIT_ASSERT(contactRemoved);
     int nbContactsAtEnd = accInfo_.contactModel->getAllContacts().size();
     CPPUNIT_ASSERT_EQUAL(nbContactsAtEnd, nbContactsAtBegin - 1);
-    contactFound = false;
-    try
-    {
-        accInfo_.contactModel->getContact("contact2");
-        contactFound = true;
-    } catch(...) { }
-    // "contact2" should not be in "ring1" contacts.
-    if (contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT_THROW(accInfo_.contactModel->getContact("contact2"), std::out_of_range);
 }
 
 void
 ContactModelTester::testRmPendingContact()
 {
     int nbContactsAtBegin = accInfo_.contactModel->getAllContacts().size();
-    auto contactFound = false;
-    try
-    {
-        accInfo_.contactModel->getContact("pending0");
-        contactFound = true;
-    } catch(...) { }
-    // "pending0" should be in "ring1" contacts.
-    if (!contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT_NO_THROW(accInfo_.contactModel->getContact("pending0"));
     accInfo_.contactModel->removeContact("pending0");
     auto contactRemoved = WaitForSignalHelper(*accInfo_.contactModel,
         SIGNAL(contactRemoved(const std::string& contactUri))).wait(1000);
-    CPPUNIT_ASSERT_EQUAL(contactRemoved, true);
+    CPPUNIT_ASSERT(contactRemoved);
     int nbContactsAtEnd = accInfo_.contactModel->getAllContacts().size();
     CPPUNIT_ASSERT_EQUAL(nbContactsAtEnd, nbContactsAtBegin - 1);
-    contactFound = false;
-    try
-    {
-        accInfo_.contactModel->getContact("pending0");
-        contactFound = true;
-    } catch(...) { }
-    // "pending0" should not be in "ring1" contacts.
-    if (contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT_THROW(accInfo_.contactModel->getContact("pending0"), std::out_of_range);
 }
 
 void
@@ -240,38 +197,20 @@ ContactModelTester::testRmSIPContact()
     accInfoSip.contactModel->addContact(temporaryContact);
     auto contactAdded = WaitForSignalHelper(*accInfoSip.contactModel,
         SIGNAL(contactAdded(const std::string& contactUri))).wait(1000);
-    CPPUNIT_ASSERT_EQUAL(contactAdded, true);
-    auto contactFound = false;
-    try
-    {
-        accInfoSip.contactModel->getContact("sipcontact1");
-        contactFound = true;
-    } catch(...) { }
-    // "sipcontact1" should be "ring1" contacts.
-    if (!contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT(contactAdded);
+    // "sipcontact1" should be in "ring1" contacts.
+    CPPUNIT_ASSERT_NO_THROW(accInfoSip.contactModel->getContact("sipcontact1"));
     int nbContactsAtBegin = accInfoSip.contactModel->getAllContacts().size();
-    contactFound = false;
-    try
-    {
-        accInfoSip.contactModel->getContact("sipcontact1");
-        contactFound = true;
-    } catch(...) { }
     // "sipcontact1" should be in "ring1" contacts.
-    if (!contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    CPPUNIT_ASSERT_NO_THROW(accInfoSip.contactModel->getContact("sipcontact1"));
     accInfoSip.contactModel->removeContact("sipcontact1");
     auto contactRemoved = WaitForSignalHelper(*accInfoSip.contactModel,
         SIGNAL(contactRemoved(const std::string& contactUri))).wait(1000);
-    CPPUNIT_ASSERT_EQUAL(contactRemoved, true);
+    CPPUNIT_ASSERT(contactRemoved);
     int nbContactsAtEnd = accInfoSip.contactModel->getAllContacts().size();
     CPPUNIT_ASSERT_EQUAL(nbContactsAtEnd, nbContactsAtBegin - 1);
-    contactFound = false;
-    try
-    {
-        accInfoSip.contactModel->getContact("sipcontact1");
-        contactFound = true;
-    } catch(...) { }
-    // "sipcontact0" should not be in "ring1" contacts.
-    if (contactFound) CPPUNIT_ASSERT_EQUAL(0,1);
+    // "sipcontact1" should not be in "ring1" contacts.
+    CPPUNIT_ASSERT_THROW(accInfoSip.contactModel->getContact("sipcontact1"), std::out_of_range);
 }
 
 void
diff --git a/test/contactmodeltester.h b/test/contactmodeltester.h
index f1177002de50f9c2e28c064dd17358f61a0dfdae..98bf86d76d407dac985d870ba7f922501a9b43bd 100644
--- a/test/contactmodeltester.h
+++ b/test/contactmodeltester.h
@@ -44,6 +44,7 @@ class ContactModelTester :  public CppUnit::TestFixture {
     CPPUNIT_TEST(testGetAllContactsForRINGAccount);
     CPPUNIT_TEST(testReceivesPendingRequest);
     CPPUNIT_TEST(testAddNewRingContact);
+    CPPUNIT_TEST(testAddRingURI);
     CPPUNIT_TEST(testAddNewSIPContact);
     CPPUNIT_TEST(testAddAlreadyAddedContact);
     CPPUNIT_TEST(testRmRingContact);
@@ -73,6 +74,10 @@ public:
      * A new ring contact should be added.
      */
     void testAddNewRingContact();
+    /**
+     * Test if someone try to add ring:xxxxxxxx works correctly and don't create 2 contacts
+     */
+    void testAddRingURI();
     /**
      * Add "sipcontact0" to "sip0" contacts.
      * A new sip contact should be added.