From e1832340a09ef048a5d2b53e4f63990e4960c5e4 Mon Sep 17 00:00:00 2001
From: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
Date: Wed, 8 Sep 2010 09:01:36 -0400
Subject: [PATCH] [#3963] Implements unit test to retreive message and uri-list
 in instant message

---
 .../src/sip/im/InstantMessaging.cpp           |  6 +--
 sflphone-common/test/instantmessagingtest.cpp | 45 +++++++++++++++++++
 sflphone-common/test/instantmessagingtest.h   |  6 +++
 3 files changed, 54 insertions(+), 3 deletions(-)

diff --git a/sflphone-common/src/sip/im/InstantMessaging.cpp b/sflphone-common/src/sip/im/InstantMessaging.cpp
index 7f48c721c3..76bbdd0b7b 100644
--- a/sflphone-common/src/sip/im/InstantMessaging.cpp
+++ b/sflphone-common/src/sip/im/InstantMessaging.cpp
@@ -311,9 +311,9 @@ std::string InstantMessaging::findTextUriList (std::string text)
 
     size_t begin = pos+cdispo.size();
 
-    size_t end = text.find ("--boundary1--", begin);
+    size_t end = text.find ("--boundary--", begin);
 
-    return text.substr (begin, end);
+    return text.substr (begin, end-begin);
 }
 
 std::string InstantMessaging::findTextMessage (std::string text)
@@ -327,7 +327,7 @@ std::string InstantMessaging::findTextMessage (std::string text)
 
     size_t end = text.find (boundary, begin);
 
-    return text.substr (begin, end);
+    return text.substr (begin, end-begin);
 }
 
 
diff --git a/sflphone-common/test/instantmessagingtest.cpp b/sflphone-common/test/instantmessagingtest.cpp
index 4b60cd4a37..2ccea41ed9 100644
--- a/sflphone-common/test/instantmessagingtest.cpp
+++ b/sflphone-common/test/instantmessagingtest.cpp
@@ -265,6 +265,51 @@ void InstantMessagingTest::testXmlUriListParsing ()
     }
 }
 
+void InstantMessagingTest::testGetTextArea ()
+{
+
+    std::string formatedText = "--boundary\n Content-Type: text/plain\n\n";
+    formatedText.append ("Here is the text area");
+
+    formatedText.append ("\n--boundary\nContent-Type: application/resource-lists+xml\n");
+    formatedText.append ("Content-Disposition: recipient-list\n\n");
+    formatedText.append ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+    formatedText.append ("<resource-lists xmlns=\"urn:ietf:params:xml:ns:resource-lists\" xmlns:cp=\"urn:ietf:params:xml:ns:copycontrol\">");
+    formatedText.append ("<list>");
+    formatedText.append ("<entry uri=\"sip:alex@example.com\" cp:copyControl=\"to\" />");
+    formatedText.append ("<entry uri=\"sip:manu@example.com\" cp:copyControl=\"to\" />");
+    formatedText.append ("</list>");
+    formatedText.append ("</resource-lists>");
+    formatedText.append ("--boundary--");
+
+    std::string message = _im->findTextMessage(formatedText);
+
+    std::cout << "message: " << message << std::endl;
+}
+
+
+void InstantMessagingTest::testGetUriListArea ()
+{
+    std::string formatedText = "--boundary\n Content-Type: text/plain\n\n";
+    formatedText.append ("Here is the text area");
+
+    formatedText.append ("\n--boundary\nContent-Type: application/resource-lists+xml\n");
+    formatedText.append ("Content-Disposition: recipient-list\n\n");
+    formatedText.append ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+    formatedText.append ("<resource-lists xmlns=\"urn:ietf:params:xml:ns:resource-lists\" xmlns:cp=\"urn:ietf:params:xml:ns:copycontrol\">");
+    formatedText.append ("<list>");
+    formatedText.append ("<entry uri=\"sip:alex@example.com\" cp:copyControl=\"to\" />");
+    formatedText.append ("<entry uri=\"sip:manu@example.com\" cp:copyControl=\"to\" />");
+    formatedText.append ("</list>");
+    formatedText.append ("</resource-lists>");
+    formatedText.append ("--boundary--");
+
+    std::string urilist = _im->findTextUriList(formatedText);
+
+    std::cout << "urilist: " << urilist << std::endl;
+}
+
+
 void InstantMessagingTest::tearDown()
 {
     delete _im;
diff --git a/sflphone-common/test/instantmessagingtest.h b/sflphone-common/test/instantmessagingtest.h
index 9194cb3f6b..d96211fa61 100644
--- a/sflphone-common/test/instantmessagingtest.h
+++ b/sflphone-common/test/instantmessagingtest.h
@@ -58,6 +58,8 @@ class InstantMessagingTest : public CppUnit::TestCase {
         CPPUNIT_TEST (testSplitMessage);
 	CPPUNIT_TEST (testGenerateXmlUriList);
 	CPPUNIT_TEST (testXmlUriListParsing);
+	CPPUNIT_TEST (testGetTextArea);
+	CPPUNIT_TEST (testGetUriListArea);
     CPPUNIT_TEST_SUITE_END();
 
     public:
@@ -84,6 +86,10 @@ class InstantMessagingTest : public CppUnit::TestCase {
 	void testGenerateXmlUriList ();
 
 	void testXmlUriListParsing ();
+
+	void testGetTextArea ();
+
+	void testGetUriListArea ();
         
     private:
 		sfl::InstantMessaging *_im;
-- 
GitLab