13 commits - autogen.sh CMakeLists.txt kolabformat/kolabobject.cpp kolabformat/v2helpers.cpp kolabformat/v2helpers.h mime/mimeutils.cpp

Christian Mollekopf mollekopf at kolabsys.com
Tue Feb 19 09:52:11 CET 2013


 CMakeLists.txt              |    7 ++++---
 autogen.sh                  |    1 +
 kolabformat/kolabobject.cpp |   15 +++++++--------
 kolabformat/v2helpers.cpp   |    5 ++++-
 kolabformat/v2helpers.h     |    5 ++++-
 mime/mimeutils.cpp          |    8 ++++++++
 6 files changed, 28 insertions(+), 13 deletions(-)

New commits:
commit 63987d7d505a63eaa5a28968abfc58dfd323cb44
Merge: c9ba6b1 a3272dd
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Tue Feb 19 09:52:03 2013 +0100

    Merge remote-tracking branch 'origin/master'



commit c9ba6b128cc11f655201a9bdb338440e69dcaaf8
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Mon Feb 18 20:52:43 2013 +0100

    Always return InvalidObject if an error occured during parsing.

diff --git a/kolabformat/kolabobject.cpp b/kolabformat/kolabobject.cpp
index d2ff3ac..f43dba4 100644
--- a/kolabformat/kolabobject.cpp
+++ b/kolabformat/kolabobject.cpp
@@ -218,7 +218,6 @@ ObjectType KolabObjectReader::Private::readKolabV2(const KMime::Message::Ptr &ms
         }
         const QByteArray &xmlData = xmlContent->decodedContent();
         mDictionary = readLegacyDictionaryConfiguration(xmlData, mDictionaryLanguage);
-        ErrorHandler::handleLibkolabxmlErrors();
         mObjectType = objectType;
         return mObjectType;
     }
@@ -263,11 +262,12 @@ ObjectType KolabObjectReader::Private::readKolabV2(const KMime::Message::Ptr &ms
             Error() << "Could not extract all attachments. " << mIncidence->attachments().size() << " out of " << attachments.size();
         }
     }
-    mObjectType = objectType;
     if (ErrorHandler::errorOccured()) {
         printMessageDebugInfo(msg);
+        return InvalidObject;
     }
-    return objectType;
+    mObjectType = objectType;
+    return mObjectType;
 }
 
 ObjectType KolabObjectReader::Private::readKolabV3(const KMime::Message::Ptr &msg, Kolab::ObjectType objectType)
@@ -334,12 +334,13 @@ ObjectType KolabObjectReader::Private::readKolabV3(const KMime::Message::Ptr &ms
 //             kDebug() << "getting attachments";
         Mime::getAttachmentsById(mIncidence, msg);
     }
+    ErrorHandler::handleLibkolabxmlErrors();
     if (ErrorHandler::errorOccured()) {
         printMessageDebugInfo(msg);
+        return InvalidObject;
     }
-    ErrorHandler::handleLibkolabxmlErrors();
     mObjectType = objectType;
-    return objectType;
+    return mObjectType;
 }
 
 ObjectType KolabObjectReader::parseMimeMessage(const KMime::Message::Ptr &msg)
@@ -389,10 +390,8 @@ ObjectType KolabObjectReader::parseMimeMessage(const KMime::Message::Ptr &msg)
 
     if (d->mVersion == KolabV2) {
         return d->readKolabV2(msg, objectType);
-    } else {
-        return d->readKolabV3(msg, objectType);
     }
-    return InvalidObject;
+    return d->readKolabV3(msg, objectType);
 }
 
 Version KolabObjectReader::getVersion() const


commit 61ed258d6d103116494f9e20352a934e7fda19b3
Merge: dfb1979 efd0f49
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Mon Feb 18 20:21:40 2013 +0100

    Merge branch '0.4'

diff --cc CMakeLists.txt
index b8dcdef,ae03027..8c9652b
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@@ -31,11 -31,11 +31,11 @@@ endif(
  # 0.1.1 (patch release for 0.1.0)
  # 0.2 (0.2 development version towards 0.2.0)
  set(Libkolab_VERSION_MAJOR 0)
 -set(Libkolab_VERSION_MINOR 4)
 +set(Libkolab_VERSION_MINOR 5)
  # Enable the full x.y.z version only for release versions
- #set(Libkolab_VERSION_PATCH 1)
- #set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR}.${Libkolab_VERSION_PATCH} )
- set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR} )
+ set(Libkolab_VERSION_PATCH 1)
+ set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR}.${Libkolab_VERSION_PATCH} )
+ #set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR} )
  set(Libkolab_VERSION_STRING ${CMAKE_PROJECT_NAME}-${Libkolab_VERSION})
  
  # set up install directories.


commit efd0f49d3a02d5d457b6afc1bf10fe9bcee9733d
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Fri Feb 15 22:38:04 2013 +0100

    Got rid of another assert.

diff --git a/kolabformat/v2helpers.cpp b/kolabformat/v2helpers.cpp
index d023a6a..e679351 100644
--- a/kolabformat/v2helpers.cpp
+++ b/kolabformat/v2helpers.cpp
@@ -226,7 +226,10 @@ QStringList readLegacyDictionaryConfiguration(const QByteArray &xmlData, QString
 {
     QStringList dictionary;
     const QDomDocument xmlDoc = KolabV2::KolabBase::loadDocument( QString::fromUtf8(xmlData) ); //TODO extract function from V2 format
-    Q_ASSERT ( !xmlDoc.isNull() );
+    if ( xmlDoc.isNull() ) {
+        Error() << "Failed to read the xml document";
+        return QStringList();
+    }
 
     QDomElement top = xmlDoc.documentElement();
 


commit bf282325e7beb69839c833ee2864301cf5566455
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Fri Feb 15 21:23:34 2013 +0100

    No asserts during release builds.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 69b4532..ae03027 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -74,6 +74,7 @@ endif()
 
 set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-check-new -fno-common -Woverloaded-virtual -fno-threadsafe-statics -fvisibility=hidden -Werror=return-type -fvisibility-inlines-hidden -fexceptions -UQT_NO_EXCEPTIONS -fPIC -g" )
 # message("${CMAKE_CXX_FLAGS}")
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DQT_NO_DEBUG")
 
 if (USE_LIBCALENDARING)
     set( KDE_INCLUDES ${Libcalendaring_INCLUDE_DIRS} )
diff --git a/autogen.sh b/autogen.sh
index 06308cc..cd8ea88 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -63,6 +63,7 @@ if [ ${doprep} -eq 1 ]; then
         -DPHP_BINDINGS=ON \
         -DPHP_INSTALL_DIR=/usr/lib64/php/modules \
         -DPYTHON_BINDINGS=ON \
+        -DCMAKE_BUILD_TYPE=Release \
         ..
 fi
 


commit ffa5b196b996b0081eabc6ea9c589b4325012e43
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Fri Feb 15 20:37:01 2013 +0100

    Error out early, and avoid assert as this is a realistic error scenario.

diff --git a/kolabformat/v2helpers.h b/kolabformat/v2helpers.h
index 3e2f2f7..f883efb 100644
--- a/kolabformat/v2helpers.h
+++ b/kolabformat/v2helpers.h
@@ -46,7 +46,10 @@ template <typename KCalPtr, typename Container>
 static KCalPtr fromXML(const QByteArray &xmlData, QStringList &attachments)
 {
     const QDomDocument xmlDoc = KolabV2::KolabBase::loadDocument( QString::fromUtf8(xmlData) ); //TODO extract function from V2 format
-    Q_ASSERT ( !xmlDoc.isNull() );
+    if ( xmlDoc.isNull() ) {
+        Error() << "Failed to read the xml document";
+        return KCalPtr();
+    }
     const KCalPtr i = Container::fromXml( xmlDoc, QString() ); //For parsing we don't need the timezone, so we don't set one
     Q_ASSERT ( i );
     QDomNodeList nodes = xmlDoc.elementsByTagName("inline-attachment");
diff --git a/mime/mimeutils.cpp b/mime/mimeutils.cpp
index 4f913a8..2ce6475 100644
--- a/mime/mimeutils.cpp
+++ b/mime/mimeutils.cpp
@@ -258,6 +258,10 @@ KMime::Content* createAttachmentPart(const QByteArray& cid, const QString& mimeT
 
 void getAttachments(KCalCore::Incidence::Ptr incidence, const QStringList &attachments, const KMime::Message::Ptr &mimeData)
 {
+    if (!incidence) {
+        Error() << "Invalid incidence";
+        return;
+    }
 //     kDebug() << "getting " << attachments.size() << "attachments";
 //     kDebug() << mimeData->encodedContent();
     foreach (const QString &name, attachments) {
@@ -278,6 +282,10 @@ void getAttachments(KCalCore::Incidence::Ptr incidence, const QStringList &attac
 
 void getAttachmentsById(KCalCore::Incidence::Ptr incidence, const KMime::Message::Ptr &mimeData)
 {
+    if (!incidence) {
+        Error() << "Invalid incidence";
+        return;
+    }
 //     kDebug() << "getting " << attachments.size() << "attachments";
 //     kDebug() << mimeData->encodedContent();
 


commit f24fa274f0365a5a0662213b5b781b3f2dbc234f
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Sat Jan 26 02:50:37 2013 +0100

    Define Libkolab_VERSION_STRING.
    
    Otherwise tests fail and the product id string lacks the libkolab identifier.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7d46c48..69b4532 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,7 +36,7 @@ set(Libkolab_VERSION_MINOR 4)
 set(Libkolab_VERSION_PATCH 1)
 set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR}.${Libkolab_VERSION_PATCH} )
 #set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR} )
-#set(Libkolab_VERSION_STRING ${CMAKE_PROJECT_NAME}-${Libkolab_VERSION})
+set(Libkolab_VERSION_STRING ${CMAKE_PROJECT_NAME}-${Libkolab_VERSION})
 
 # set up install directories.
 set(LIB_INSTALL_DIR lib CACHE STRING "The directories where to install libraries to")


commit dd2b3977b13770dc44eeb0da9d636bce6155b4d0
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Sat Jan 26 02:48:04 2013 +0100

    Revert "We require boost."
    
    That was already a few lines below...
    
    This reverts commit 033f29cdc7f73719e406601d57fe60a17bd8876c.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4f0cb57..7d46c48 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -62,8 +62,6 @@ endif()
 
 find_package(SWIG)
 
-find_package(Boost REQUIRED)
-
 #Show summary of found libraries
 macro_display_feature_log()
 


commit e157e46b7e462adf7900391cde977275be7400e5
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Sat Jan 26 02:25:56 2013 +0100

    That's not actually required.

diff --git a/tests/kcalconversiontest.h b/tests/kcalconversiontest.h
index f2a18b8..c58042d 100644
--- a/tests/kcalconversiontest.h
+++ b/tests/kcalconversiontest.h
@@ -20,7 +20,6 @@
 
 #include <QtCore/QObject>
 #include <QtTest/QtTest>
-#include <boost/concept_check.hpp>
 
 class KCalConversionTest : public QObject
 {


commit a185589458d49552a16b91c0c3a06fb082280269
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Sat Jan 26 02:25:36 2013 +0100

    We require boost.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7d46c48..4f0cb57 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -62,6 +62,8 @@ endif()
 
 find_package(SWIG)
 
+find_package(Boost REQUIRED)
+
 #Show summary of found libraries
 macro_display_feature_log()
 


commit 03621dd8b9b2596ed5053253cc783c865deccb97
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Sat Jan 26 02:03:02 2013 +0100

    Having blocking stuff in automated tests isn't such a good idea, disable by default.

diff --git a/tests/testutils.h b/tests/testutils.h
index e6bb15c..071a571 100644
--- a/tests/testutils.h
+++ b/tests/testutils.h
@@ -53,20 +53,20 @@ void showDiff(const QString &expected, const QString &converted)
         kWarning() << "contents are the same";
         return;
     }
-    QTemporaryFile expectedFile("expectedFile");
-    QTemporaryFile convertedFile("convertedFile");
-    if (expectedFile.open() && convertedFile.open()) {
-        expectedFile.write(expected.toLatin1());
-        convertedFile.write(converted.toLatin1());
-        expectedFile.close();
-        convertedFile.close();
-        QProcess::execute("kompare", QStringList() << "-c" << expectedFile.fileName() << convertedFile.fileName());
-    } else {
-        kWarning() << "files are not open";
-    }
+    // QTemporaryFile expectedFile("expectedFile");
+    // QTemporaryFile convertedFile("convertedFile");
+    // if (expectedFile.open() && convertedFile.open()) {
+    //     expectedFile.write(expected.toLatin1());
+    //     convertedFile.write(converted.toLatin1());
+    //     expectedFile.close();
+    //     convertedFile.close();
+    //     QProcess::execute("kompare", QStringList() << "-c" << expectedFile.fileName() << convertedFile.fileName());
+    // } else {
+    //     kWarning() << "files are not open";
+    // }
     
-//     qDebug() << "EXPECTED: " << expected;
-//     qDebug() << "CONVERTED: " << converted;
+    qDebug() << "EXPECTED: " << expected;
+    qDebug() << "CONVERTED: " << converted;
 }
 
 KMime::Message::Ptr readMimeFile( const QString &fileName, bool &ok)


commit ad58dcf75eba9e49d0d281de69d3f09c02c339f3
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Wed Jan 9 13:52:40 2013 +0100

    Release 0.4.1

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5a459d3..7d46c48 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,10 +33,10 @@ endif()
 set(Libkolab_VERSION_MAJOR 0)
 set(Libkolab_VERSION_MINOR 4)
 # Enable the full x.y.z version only for release versions
-#set(Libkolab_VERSION_PATCH 1)
-#set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR}.${Libkolab_VERSION_PATCH} )
-set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR} )
-set(Libkolab_VERSION_STRING ${CMAKE_PROJECT_NAME}-${Libkolab_VERSION})
+set(Libkolab_VERSION_PATCH 1)
+set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR}.${Libkolab_VERSION_PATCH} )
+#set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR} )
+#set(Libkolab_VERSION_STRING ${CMAKE_PROJECT_NAME}-${Libkolab_VERSION})
 
 # set up install directories.
 set(LIB_INSTALL_DIR lib CACHE STRING "The directories where to install libraries to")


commit 9f939506c34d395ca6bc5203d0c6c8ba7b9fe6d1
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Wed Jan 9 13:58:18 2013 +0100

    Use the correct kolab type for distlists + test.
    (cherry picked from commit 2befab0a53b6794020e750cab2e3a5feae1de412)
    
    Conflicts:
    	tests/testutils.h

diff --git a/kolabformat/kolabobject.cpp b/kolabformat/kolabobject.cpp
index 6377968..d2ff3ac 100644
--- a/kolabformat/kolabobject.cpp
+++ b/kolabformat/kolabobject.cpp
@@ -576,7 +576,7 @@ KMime::Message::Ptr KolabObjectWriter::writeDistlist(const KABC::ContactGroup &d
         const Kolab::DistList &dist = Kolab::Conversion::fromKABC(distlist);
         const std::string &v3String = Kolab::writeDistlist(dist, Conversion::toStdString(getProductId(productId)));
         ErrorHandler::handleLibkolabxmlErrors();
-        return  Mime::createMessage(Conversion::fromStdString(dist.uid()), xCardMimeType(), contactKolabType(), Conversion::fromStdString(v3String).toUtf8(), true, getProductId(productId));
+        return  Mime::createMessage(Conversion::fromStdString(dist.uid()), xCardMimeType(), distlistKolabType(), Conversion::fromStdString(v3String).toUtf8(), true, getProductId(productId));
     }
     KolabV2::DistributionList d(&distlist);
     return distListToKolabFormat(d, getProductId(productId));
diff --git a/tests/formattest.cpp b/tests/formattest.cpp
index 346c6e8..3ca0c24 100644
--- a/tests/formattest.cpp
+++ b/tests/formattest.cpp
@@ -29,6 +29,7 @@
 
 #include <kcalcore/icalformat.h>
 #include <kabc/vcardconverter.h>
+#include <kabc/contactgrouptool.h>
 #include <akonadi/notes/noteutils.h>
 
 #include "testutils.h"
@@ -279,6 +280,72 @@ void FormatTest::testContact()
     QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug);
 }
 
+void FormatTest::testDistlist_data()
+{
+    QTest::addColumn<Kolab::Version>( "version" );
+    QTest::addColumn<Kolab::ObjectType>( "type" );
+    QTest::addColumn<QString>( "vcardFileName" );
+    QTest::addColumn<QString>( "mimeFileName" );
+    
+    QTest::newRow( "v3distlistSimple" ) << Kolab::KolabV3 << Kolab::DistlistObject << TESTFILEDIR+QString::fromLatin1("v3/contacts/distlist.vcf") << TESTFILEDIR+QString::fromLatin1("v3/contacts/distlist.vcf.mime");
+}
+
+void FormatTest::testDistlist()
+{
+    QFETCH( Kolab::Version, version );
+    QFETCH( Kolab::ObjectType, type );
+    QFETCH( QString, vcardFileName ); //To compare
+    QFETCH( QString, mimeFileName ); //For parsing
+    
+    //Parse mime message
+    bool ok = false;
+    const KMime::Message::Ptr &msg = readMimeFile( mimeFileName, ok );
+    QVERIFY(ok);
+    Kolab::KolabObjectReader reader;
+    Kolab::ObjectType t = reader.parseMimeMessage(msg);
+    QCOMPARE(t, type);
+    QCOMPARE(reader.getVersion(), version);
+    QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug);
+    
+    KABC::ContactGroup convertedAddressee = reader.getDistlist();
+    
+    //Parse vcard
+    QFile vcardFile( vcardFileName );
+    QVERIFY( vcardFile.open( QFile::ReadOnly ) );
+    KABC::VCardConverter converter;
+    QByteArray c = vcardFile.readAll();
+    QBuffer data(&c);
+    data.open(QIODevice::ReadOnly);
+    
+    KABC::ContactGroup realAddressee;
+    KABC::ContactGroupTool::convertFromXml( &data, realAddressee );
+
+    {
+        QBuffer expected;
+        expected.open(QIODevice::WriteOnly);
+        KABC::ContactGroupTool::convertToXml(realAddressee, &expected);
+        
+        QBuffer converted;
+        converted.open(QIODevice::WriteOnly);
+        KABC::ContactGroupTool::convertToXml(convertedAddressee, &converted);
+        
+        showDiff(expected.buffer(), converted.buffer());
+    }
+    QCOMPARE( realAddressee, convertedAddressee );
+
+    //Write
+    const KMime::Message::Ptr &convertedMime = Kolab::KolabObjectWriter::writeDistlist(realAddressee, version);
+    
+    if ( !compareMimeMessage( convertedMime, msg )) {
+        QString expected = msg->encodedContent();
+        normalizeMimemessage(expected);
+        QString converted = convertedMime->encodedContent();
+        normalizeMimemessage(converted);
+        showDiff(expected, converted);
+        QVERIFY( false );
+    }
+    QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug);
+}
 
 void FormatTest::testNote_data()
 {
@@ -376,6 +443,18 @@ void FormatTest::generateVCard()
 //     KABC::Addressee convertedAddressee = reader.getContact();
 //     KABC::VCardConverter converter;
 //     qDebug() << converter.createVCard(convertedAddressee);
+
+//     bool ok = false;
+//     const KMime::Message::Ptr &msg = readMimeFile( TESTFILEDIR+QString::fromLatin1("v3/contacts/distlist.vcf.mime"), ok );
+//     qDebug() << msg->encodedContent();
+//     Kolab::KolabObjectReader reader;
+//     Kolab::ObjectType t = reader.parseMimeMessage(msg);
+// 
+//     KABC::ContactGroup convertedAddressee = reader.getDistlist();
+//     QBuffer buf;
+//     buf.open(QIODevice::WriteOnly);
+//     KABC::ContactGroupTool::convertToXml(convertedAddressee, &buf);
+//     qDebug() << buf.buffer();
 }
 
 //Pseudo test to show that JPG is always lossy, even with quality set to 100
diff --git a/tests/formattest.h b/tests/formattest.h
index 12655fb..8097bfc 100644
--- a/tests/formattest.h
+++ b/tests/formattest.h
@@ -55,6 +55,9 @@ private slots:
     
     void testContact_data();
     void testContact();
+    
+    void testDistlist_data();
+    void testDistlist();
 
     void testNote_data();
     void testNote();
diff --git a/tests/testfiles/v3/contacts/distlist.vcf b/tests/testfiles/v3/contacts/distlist.vcf
new file mode 100644
index 0000000..cc4984c
--- /dev/null
+++ b/tests/testfiles/v3/contacts/distlist.vcf
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<contactGroup uid="4xuyC0cyjV" name="My Distlist">
+    <contactData name="John Doe" email="jdoe at example.com"/>
+    <contactData name="John Doe2" email="jdoe2 at example.com"/>
+</contactGroup>
\ No newline at end of file
diff --git a/tests/testfiles/v3/contacts/distlist.vcf.mime b/tests/testfiles/v3/contacts/distlist.vcf.mime
index d54c26c..372728e 100644
--- a/tests/testfiles/v3/contacts/distlist.vcf.mime
+++ b/tests/testfiles/v3/contacts/distlist.vcf.mime
@@ -1,10 +1,9 @@
 Date: Mon, 23 Apr 2012 12:46:37 +0200
-X-Kolab-Type: application/x-vnd.kolab.distribution-list
+X-Kolab-Type: application/x-vnd.kolab.contact.distlist
 X-Kolab-Mime-Version: 3.0
 User-Agent: Libkolab-0.1.0
 Content-Type: multipart/mixed; boundary="nextPart1365947.WmFcbPlLFA"
 Subject: 4xuyC0cyjV
-From: Volker Krause <vkrause at kde.org>
 MIME-Version: 1.0
 
 
@@ -38,10 +37,6 @@ Content-Disposition: attachment; filename="kolab.xml"
     <rev>
       <timestamp>20120505T050505Z</timestamp>
     </rev>
-    <categories>
-      <text>cat1</text>
-      <text>cat2</text>
-    </categories>
     <kind>
       <text>group</text>
     </kind>
@@ -49,18 +44,13 @@ Content-Disposition: attachment; filename="kolab.xml"
       <text>My Distlist</text>
     </fn>
     <member>
-      <uri>mailto:John%20Doe%3cjdoe at example.com%3e</uri>
+      <uri>mailto:John%20Doe%3Cjdoe%40example.com%3E</uri>
     </member>
     <member>
-      <uri>mailto:John%20Doe2%3cjdoe2 at example.com%3e</uri>
+      <uri>mailto:John%20Doe2%3Cjdoe2%40example.com%3E</uri>
     </member>
-    <x-custom>
-      <identifier>X-Identifier</identifier>
-      <value>TestValue</value>
-    </x-custom>
-
   </vcard>
 
 </vcards>
 
---nextPart1365947.WmFcbPlLFA--
\ No newline at end of file
+--nextPart1365947.WmFcbPlLFA--





More information about the commits mailing list