4 commits - mime/mimeutils.cpp tests/formattest.cpp tests/kolabobjecttest.cpp tests/testfiles

Christian Mollekopf mollekopf at kolabsys.com
Fri Aug 17 20:42:57 CEST 2012


 mime/mimeutils.cpp                                    |    6 -
 tests/formattest.cpp                                  |    3 
 tests/kolabobjecttest.cpp                             |    4 
 tests/testfiles/v2/event/attachmentUtf8.ics           |   51 ++++++++
 tests/testfiles/v2/event/attachmentUtf8.ics.mime      |  107 ++++++++++++++++++
 tests/testfiles/v3/event/utf8.ics                     |   16 ++
 tests/testfiles/v3/event/utf8base64.ics.mime          |   54 +++++++++
 tests/testfiles/v3/event/utf8quotedPrintable.ics.mime |   88 ++++++++++++++
 8 files changed, 324 insertions(+), 5 deletions(-)

New commits:
commit 0e90a940d9bbb2b6ffa0221637a3193c07b2c216
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Fri Aug 17 20:37:20 2012 +0200

    Allow for UTF-8 attachment names.

diff --git a/mime/mimeutils.cpp b/mime/mimeutils.cpp
index a8259d3..4f913a8 100644
--- a/mime/mimeutils.cpp
+++ b/mime/mimeutils.cpp
@@ -48,7 +48,7 @@ KMime::Content* findContentByName(const KMime::Message::Ptr &data, const QString
 {
     Q_ASSERT(!data->contents().isEmpty());
     Q_FOREACH(KMime::Content *c, data->contents()) {
-//         kDebug() << "searching: " << c->contentType()->name();
+//         qDebug() << "searching: " << c->contentType()->name().toUtf8();
         if ( c->contentType()->name() == name ) {
             type = c->contentType()->mimeType();
             return c;
@@ -248,7 +248,7 @@ KMime::Content* createAttachmentPart(const QByteArray& cid, const QString& mimeT
         content->contentID()->setIdentifier( cid );
     }
     content->contentType()->setMimeType( mimeType.toLatin1() );
-    content->contentType()->setName( fileName, "us-ascii" );
+    content->contentType()->setName( fileName, "utf-8" );
     content->contentTransferEncoding()->setEncoding( KMime::Headers::CEbase64 );
     content->contentDisposition()->setDisposition( KMime::Headers::CDattachment );
     content->contentDisposition()->setFilename( fileName );
@@ -264,7 +264,7 @@ void getAttachments(KCalCore::Incidence::Ptr incidence, const QStringList &attac
         QByteArray type;
         KMime::Content *content = findContentByName(mimeData, name, type);
         if (!content) { // guard against malformed events with non-existent attachments
-            Warning() << "could not find attachment: "<< name << type;
+            Warning() << "could not find attachment: "<< name.toUtf8() << type;
             continue;
         }
         const QByteArray c = content->decodedContent().toBase64();
diff --git a/tests/formattest.cpp b/tests/formattest.cpp
index 4e2ee82..346c6e8 100644
--- a/tests/formattest.cpp
+++ b/tests/formattest.cpp
@@ -100,6 +100,7 @@ void FormatTest::testIncidence_data()
     QTest::newRow( "v2eventComplex" ) << Kolab::KolabV2 << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/complex.ics") << TESTFILEDIR+QString::fromLatin1("v2/event/complex.ics.mime");
     QTest::newRow( "v2eventAttachment" ) << Kolab::KolabV2 << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/attachment.ics") << TESTFILEDIR+QString::fromLatin1("v2/event/attachment.ics.mime");
     QTest::newRow( "v2eventAllday" ) << Kolab::KolabV2 << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/allday.ics") << TESTFILEDIR+QString::fromLatin1("v2/event/allday.ics.mime");
+    QTest::newRow( "v2eventUtf8Attachment" ) << Kolab::KolabV2 << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/attachmentUtf8.ics") << TESTFILEDIR+QString::fromLatin1("v2/event/attachmentUtf8.ics.mime");
     //The following test just fails because we have a nicer mime message output than horde
 //     QTest::newRow( "v2eventHorde" ) << Kolab::KolabV2 << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/horde.ics") << TESTFILEDIR+QString::fromLatin1("v2/event/horde.ics.mime");
     QTest::newRow( "v2todoSimple" ) << Kolab::KolabV2 << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/simple.ics") << TESTFILEDIR+QString::fromLatin1("v2/task/simple.ics.mime");
diff --git a/tests/testfiles/v2/event/attachmentUtf8.ics b/tests/testfiles/v2/event/attachmentUtf8.ics
new file mode 100644
index 0000000..4469d33
--- /dev/null
+++ b/tests/testfiles/v2/event/attachmentUtf8.ics
@@ -0,0 +1,51 @@
+BEGIN:VCALENDAR
+PRODID:-//K Desktop Environment//NONSGML libkcal 3.2//EN
+VERSION:2.0
+BEGIN:VEVENT
+DTSTAMP:20090901T125258Z
+ATTENDEE;CN="Attendee1";RSVP=TRUE;PARTSTAT=NEEDS-ACTION;
+ ROLE=REQ-PARTICIPANT:mailto:a1 at example.com
+ATTENDEE;CN="Attendee2";RSVP=TRUE;PARTSTAT=ACCEPTED;ROLE=NON-PARTICIPANT:
+ mailto:a2 at example.com
+ATTENDEE;CN="Attendee3";RSVP=FALSE;PARTSTAT=DECLINED;ROLE=REQ-PARTICIPANT:
+ mailto:a3 at example.com
+CREATED:20090901T125258Z
+UID:KOrganizer-1687167952.818
+LAST-MODIFIED:20090901T125258Z
+DESCRIPTION:äöü%@$£é¤¼²°€Š�ـأبـ
+SUMMARY:äöü%@$£é¤¼²°€Š�ـأبـ
+LOCATION:äöü%@$£é¤¼²°€Š�ـأبـ
+CLASS:PRIVATE
+CATEGORIES:Appointment\,Business
+RRULE:FREQ=WEEKLY;COUNT=10;BYDAY=WE,FR
+EXDATE;VALUE=DATE:20090904
+ATTACH;VALUE=BINARY;FMTTYPE=image/png;ENCODING=BASE64;X-LABEL=äöü%@$£é¤¼²°€Š�ـأبـ:
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP
+ 8A/wD/oL2nkwAAAAlwSFlzAAAbrwAAG68BXhqRHAAAAAd0SU1FB9gFEQkdFPibCIYAAAMrSURB
+ VDjLpZNLaBx1AMZ/M/P/78zOzO7ObDbvNUnTxsUUm6YmaulNxN70UKEIRTyIBy8KHrypRUTw4E
+ k8CqKnXuyhHgQRFTRNAvVFbOnDNO/EfWZmdmczszPrwcdBvPnBd/ng98F3+OB/Svl3cPbSx5mZ
+ +ZkXjKx+setHs4cHbaW+7d2s79SvhK29j+6vvXH0nwVPfLh1WsTptdnxuDDxoGv3NZWuf4S3G1
+ C722BrrcrOnY1f/ebO05s337n3N6cBLLy1bI7njr4uD4nJhx4by5SGLQYcAzWnI6SGVFUkQKwM
+ RqH/jGHNfXJYXwoBBMDc/MhLThpOJ6ZEMzM4moquQpIVxI5Br5QlHrEImw5xuzRJ0n4beBlABR
+ gwxcXhUp5Ww6OXQvCXo/TPjUJq6FmJldPJOTZ2znj++HOfnwQQ0y9+e67X6iykpmTCNTnY9xBj
+ eTQVelFC0u3RjxNI+6iaQiajYtmGlXa6NxZe/f4pobv24/X9thBSYebUEHc26zT6kLMkaZTQ84
+ +IvYioE9PrRvTTCBSF2PczUTxyVuiOsXHju58Y0XTaQcTJM0OsXt9kaqqIrinEQUTYCPGrAR2v
+ RbcbELS7ZGWEj72hzL+5MqS0uzvBys/CzbsUxx0KJROvnTBZLtCPU/y6j1erE/g1wrBNdqREWK
+ wktdB4QP3h8qO/K6Z2RR8bJmjtUx7KMDtd4MSozuatXX5Zus3tH29Rre7S18GtjFNanAMpr37w
+ 2ti+ABAyeT0eLJ7vtWoDX1z9BiXV0DRJmqakSRfd1iiMOmSPjeKeqVC/H3oPT8r3ZNyzVID3L1
+ V2nDzPqsPlQ2PiGKoJCQFJ4qPIFH0gh3P6ONlHKlQ3ve6EEb57fl7GSh9DAVjaqmrNRsv97Kv1
+ xeurjcthkCyqURs7JzBdE6NokQgJSbQ+O65+euqEszo4UPytWMhvCwBUkSqq1jk356xNDUevLK
+ /sPbl+L7jQ8ZLyUaepGE1xMDZhfDlbKSwPFt1tXcp9qWk1VWjhP2e6dneLvhdqLc/L7B3UzfX1
+ qttsdfKKguo4ZlguO36xWAgLth3mbSsyTatnyFz6B+BnWV0A/UiAAAAAAElFTkSuQmCC
+DTSTART;TZID=Europe/Berlin:20090902T100000
+DTEND;TZID=Europe/Berlin:20090902T110000
+TRANSP:TRANSPARENT
+BEGIN:VALARM
+DESCRIPTION:
+ACTION:DISPLAY
+TRIGGER;VALUE=DURATION:-PT15M
+END:VALARM
+END:VEVENT
+
+END:VCALENDAR
+
diff --git a/tests/testfiles/v2/event/attachmentUtf8.ics.mime b/tests/testfiles/v2/event/attachmentUtf8.ics.mime
new file mode 100644
index 0000000..75df1ed
--- /dev/null
+++ b/tests/testfiles/v2/event/attachmentUtf8.ics.mime
@@ -0,0 +1,107 @@
+Date: Fri, 17 Aug 2012 18:20:48 +0000
+X-Kolab-Type: application/x-vnd.kolab.event
+User-Agent: Libkolab-0.3.1
+Content-Type: multipart/mixed; boundary="nextPart5284273.1bMlkVXeYf"
+Subject: KOrganizer-1687167952.818
+MIME-Version: 1.0
+
+
+--nextPart5284273.1bMlkVXeYf
+Content-Type: text/plain; charset="us-ascii"
+Content-Transfer-Encoding: 7Bit
+
+This is a Kolab Groupware object.
+To view this object you will need an email client that can understand the Kolab Groupware format.
+For a list of such email clients please visit
+http://www.kolab.org/get-kolab
+
+--nextPart5284273.1bMlkVXeYf
+Content-Type: application/x-vnd.kolab.event; name="kolab.xml"
+Content-Transfer-Encoding: quoted-printable
+Content-Disposition: attachment; filename="kolab.xml"
+
+<?xml version=3D"1.0" encoding=3D"UTF-8"?>
+<event version=3D"1.0">
+ <product-id>Libkolab-0.3.1, Kolab resource</product-id>
+ <uid>KOrganizer-1687167952.818</uid>
+ <body>=C3=A4=C3=B6=C3=BC%@$=C2=A3=C3=A9=C2=A4=C2=BC=C2=B2=C2=B0=E2=82=AC=
+=C5=A0=EF=BF=BD=D9=80=D8=A3=D8=A8=D9=80</body>
+ <categories>Appointment,Business</categories>
+ <creation-date>2009-09-01T12:52:58Z</creation-date>
+ <last-modification-date>2009-09-01T12:52:58Z</last-modification-date>
+ <sensitivity>private</sensitivity>
+ <start-date>2009-09-02T08:00:00Z</start-date>
+ <summary>=C3=A4=C3=B6=C3=BC%@$=C2=A3=C3=A9=C2=A4=C2=BC=C2=B2=C2=B0=E2=82=
+=AC=C5=A0=EF=BF=BD=D9=80=D8=A3=D8=A8=D9=80</summary>
+ <location>=C3=A4=C3=B6=C3=BC%@$=C2=A3=C3=A9=C2=A4=C2=BC=C2=B2=C2=B0=E2=
+=82=AC=C5=A0=EF=BF=BD=D9=80=D8=A3=D8=A8=D9=80</location>
+ <organizer/>
+ <recurrence cycle=3D"weekly">
+  <interval>1</interval>
+  <day>wednesday</day>
+  <day>friday</day>
+  <range type=3D"number">10</range>
+  <exclusion>2009-09-04</exclusion>
+ </recurrence>
+ <attendee>
+  <display-name>Attendee1</display-name>
+  <smtp-address>a1 at example.com</smtp-address>
+  <status>none</status>
+  <request-response>true</request-response>
+  <invitation-sent>false</invitation-sent>
+  <role>required</role>
+ </attendee>
+ <attendee>
+  <display-name>Attendee2</display-name>
+  <smtp-address>a2 at example.com</smtp-address>
+  <status>accepted</status>
+  <request-response>true</request-response>
+  <invitation-sent>false</invitation-sent>
+  <role>resource</role>
+ </attendee>
+ <attendee>
+  <display-name>Attendee3</display-name>
+  <smtp-address>a3 at example.com</smtp-address>
+  <status>declined</status>
+  <request-response>false</request-response>
+  <invitation-sent>false</invitation-sent>
+  <role>required</role>
+ </attendee>
+ <inline-attachment>=C3=A4=C3=B6=C3=BC%@$=C2=A3=C3=A9=C2=A4=C2=BC=C2=B2=
+=C2=B0=E2=82=AC=C5=A0=EF=BF=BD=D9=80=D8=A3=D8=A8=D9=80</inline-attachme=
+nt>
+ <alarm>15</alarm>
+ <advanced-alarms>
+  <alarm type=3D"display">
+   <enabled>1</enabled>
+   <start-offset>-15</start-offset>
+  </alarm>
+ </advanced-alarms>
+ <show-time-as>free</show-time-as>
+ <end-date>2009-09-02T09:00:00Z</end-date>
+</event>
+
+--nextPart5284273.1bMlkVXeYf
+Content-Type: image/png; name*=utf-8''%C3%A4%C3%B6%C3%BC%25%40$%C2%A3%C3%A9%C2%A4%C2%BC%C2%B2%C2%B0%E2%82%AC%C5%A0%EF%BF%BD%D9%80%D8%A3%D8%A8%D9%80
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename*=''%C3%A4%C3%B6%C3%BC%25%40$%C2%A3%C3%A9%C2%A4%C2%BC%C2%B2%C2%B0%E2%82%AC%C5%A0%EF%BF%BD%D9%80%D8%A3%D8%A8%D9%80
+
+iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A
+/wD/oL2nkwAAAAlwSFlzAAAbrwAAG68BXhqRHAAAAAd0SU1FB9gFEQkdFPibCIYAAAMrSURBVDjL
+pZNLaBx1AMZ/M/P/78zOzO7ObDbvNUnTxsUUm6YmaulNxN70UKEIRTyIBy8KHrypRUTw4Ek8CqKn
+XuyhHgQRFTRNAvVFbOnDNO/EfWZmdmczszPrwcdBvPnBd/ng98F3+OB/Svl3cPbSx5mZ+ZkXjKx+
+setHs4cHbaW+7d2s79SvhK29j+6vvXH0nwVPfLh1WsTptdnxuDDxoGv3NZWuf4S3G1C722BrrcrO
+nY1f/ebO05s337n3N6cBLLy1bI7njr4uD4nJhx4by5SGLQYcAzWnI6SGVFUkQKwMRqH/jGHNfXJY
+XwoBBMDc/MhLThpOJ6ZEMzM4moquQpIVxI5Br5QlHrEImw5xuzRJ0n4beBlABRgwxcXhUp5Ww6OX
+QvCXo/TPjUJq6FmJldPJOTZ2znj++HOfnwQQ0y9+e67X6iykpmTCNTnY9xBjeTQVelFC0u3RjxNI
++6iaQiajYtmGlXa6NxZe/f4pobv24/X9thBSYebUEHc26zT6kLMkaZTQ84+IvYioE9PrRvTTCBSF
+2PczUTxyVuiOsXHju58Y0XTaQcTJM0OsXt9kaqqIrinEQUTYCPGrAR2vRbcbELS7ZGWEj72hzL+5
+MqS0uzvBys/CzbsUxx0KJROvnTBZLtCPU/y6j1erE/g1wrBNdqREWKwktdB4QP3h8qO/K6Z2RR8b
+JmjtUx7KMDtd4MSozuatXX5Zus3tH29Rre7S18GtjFNanAMpr37w2ti+ABAyeT0eLJ7vtWoDX1z9
+BiXV0DRJmqakSRfd1iiMOmSPjeKeqVC/H3oPT8r3ZNyzVID3L1V2nDzPqsPlQ2PiGKoJCQFJ4qPI
+FH0gh3P6ONlHKlQ3ve6EEb57fl7GSh9DAVjaqmrNRsv97Kv1xeurjcthkCyqURs7JzBdE6NokQgJ
+SbQ+O65+euqEszo4UPytWMhvCwBUkSqq1jk356xNDUevLK/sPbl+L7jQ8ZLyUaepGE1xMDZhfDlb
+KSwPFt1tXcp9qWk1VWjhP2e6dneLvhdqLc/L7B3UzfX1qttsdfKKguo4ZlguO36xWAgLth3mbSsy
+TatnyFz6B+BnWV0A/UiAAAAAAElFTkSuQmCC
+
+--nextPart5284273.1bMlkVXeYf--


commit 16a3e3a53b725128a4f5065e979b15b4585e7464
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Fri Aug 17 20:34:41 2012 +0200

    Test for UTF-8 characters with quoted printable mime encoding.

diff --git a/tests/formattest.cpp b/tests/formattest.cpp
index 08a1e83..4e2ee82 100644
--- a/tests/formattest.cpp
+++ b/tests/formattest.cpp
@@ -115,6 +115,8 @@ void FormatTest::testIncidence_data()
     QTest::newRow( "v3todoComplex" ) << Kolab::KolabV3 << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v3/task/complex.ics") << TESTFILEDIR+QString::fromLatin1("v3/task/complex.ics.mime");
     QTest::newRow( "v3journalSimple" ) << Kolab::KolabV3 << Kolab::JournalObject << TESTFILEDIR+QString::fromLatin1("v3/journal/simple.ics") << TESTFILEDIR+QString::fromLatin1("v3/journal/simple.ics.mime");
     QTest::newRow( "v3journalComplex" ) << Kolab::KolabV3 << Kolab::JournalObject << TESTFILEDIR+QString::fromLatin1("v3/journal/complex.ics") << TESTFILEDIR+QString::fromLatin1("v3/journal/complex.ics.mime");
+    QTest::newRow( "v3utf8quotedPrintable" ) << Kolab::KolabV3 << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v3/event/utf8.ics") << TESTFILEDIR+QString::fromLatin1("v3/event/utf8quotedPrintable.ics.mime");
+    QTest::newRow( "v3utf8base64" ) << Kolab::KolabV3 << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v3/event/utf8.ics") << TESTFILEDIR+QString::fromLatin1("v3/event/utf8base64.ics.mime");
 }
 
 
diff --git a/tests/testfiles/v3/event/utf8.ics b/tests/testfiles/v3/event/utf8.ics
new file mode 100644
index 0000000..5ef0fbb
--- /dev/null
+++ b/tests/testfiles/v3/event/utf8.ics
@@ -0,0 +1,16 @@
+BEGIN:VCALENDAR
+PRODID:-//K Desktop Environment//NONSGML libkcal 3.2//EN
+VERSION:2.0
+BEGIN:VEVENT
+DTSTAMP:20090901T113644Z
+CREATED:20090901T113644Z
+UID:KOrganizer-1353608432.168
+LAST-MODIFIED:20090901T113644Z
+SUMMARY:äöü%@$£é¤¼²°€Š�ـأبـ
+LOCATION:äöü%@$£é¤¼²°€Š�ـأبـ
+DTSTART;TZID=Europe/Berlin:20090902T080000
+DTEND;TZID=Europe/Berlin:20090902T090000
+TRANSP:OPAQUE
+END:VEVENT
+
+END:VCALENDAR
diff --git a/tests/testfiles/v3/event/utf8base64.ics.mime b/tests/testfiles/v3/event/utf8base64.ics.mime
new file mode 100644
index 0000000..1067f33
--- /dev/null
+++ b/tests/testfiles/v3/event/utf8base64.ics.mime
@@ -0,0 +1,54 @@
+Date: Fri, 17 Aug 2012 18:00:15 +0000
+X-Kolab-Type: application/x-vnd.kolab.event
+X-Kolab-Mime-Version: 3.0
+User-Agent: Libkolab-0.3.1
+Content-Type: multipart/mixed; boundary="nextPart1896568.xMY9UUPWVa"
+Subject: KOrganizer-1353608432.168
+MIME-Version: 1.0
+
+
+--nextPart1896568.xMY9UUPWVa
+Content-Type: text/plain; charset="us-ascii"
+Content-Transfer-Encoding: 7Bit
+
+This is a Kolab Groupware object.
+To view this object you will need an email client that can understand the Kolab Groupware format.
+For a list of such email clients please visit
+http://www.kolab.org/get-kolab
+
+--nextPart1896568.xMY9UUPWVa
+Content-Type: application/calendar+xml; name="kolab.xml"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="kolab.xml"
+
+PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/Pgo8
+aWNhbGVuZGFyIHhtbG5zPSJ1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOmljYWxlbmRhci0yLjAiPgoK
+ICA8dmNhbGVuZGFyPgogICAgPHByb3BlcnRpZXM+CiAgICAgIDxwcm9kaWQ+CiAgICAgICAgPHRl
+eHQ+TGlia29sYWItMC4zLjEgTGlia29sYWJ4bWwtMC41PC90ZXh0PgogICAgICA8L3Byb2RpZD4K
+ICAgICAgPHZlcnNpb24+CiAgICAgICAgPHRleHQ+Mi4wPC90ZXh0PgogICAgICA8L3ZlcnNpb24+
+CiAgICAgIDx4LWtvbGFiLXZlcnNpb24+CiAgICAgICAgPHRleHQ+My4wZGV2MTwvdGV4dD4KICAg
+ICAgPC94LWtvbGFiLXZlcnNpb24+CiAgICA8L3Byb3BlcnRpZXM+CiAgICA8Y29tcG9uZW50cz4K
+ICAgICAgPHZldmVudD4KICAgICAgICA8cHJvcGVydGllcz4KICAgICAgICAgIDx1aWQ+CiAgICAg
+ICAgICAgIDx0ZXh0PktPcmdhbml6ZXItMTM1MzYwODQzMi4xNjg8L3RleHQ+CiAgICAgICAgICA8
+L3VpZD4KICAgICAgICAgIDxjcmVhdGVkPgogICAgICAgICAgICA8ZGF0ZS10aW1lPjIwMDktMDkt
+MDFUMTE6MzY6NDRaPC9kYXRlLXRpbWU+CiAgICAgICAgICA8L2NyZWF0ZWQ+CiAgICAgICAgICA8
+ZHRzdGFtcD4KICAgICAgICAgICAgPGRhdGUtdGltZT4yMDA5LTA5LTAxVDExOjM2OjQ0WjwvZGF0
+ZS10aW1lPgogICAgICAgICAgPC9kdHN0YW1wPgogICAgICAgICAgPHNlcXVlbmNlPgogICAgICAg
+ICAgICA8aW50ZWdlcj4wPC9pbnRlZ2VyPgogICAgICAgICAgPC9zZXF1ZW5jZT4KICAgICAgICAg
+IDxjbGFzcz4KICAgICAgICAgICAgPHRleHQ+UFVCTElDPC90ZXh0PgogICAgICAgICAgPC9jbGFz
+cz4KICAgICAgICAgIDxkdHN0YXJ0PgogICAgICAgICAgICA8cGFyYW1ldGVycz4KICAgICAgICAg
+ICAgICA8dHppZD4KICAgICAgICAgICAgICAgIDx0ZXh0Pi9rb2xhYi5vcmcvRXVyb3BlL0Jlcmxp
+bjwvdGV4dD4KICAgICAgICAgICAgICA8L3R6aWQ+CiAgICAgICAgICAgIDwvcGFyYW1ldGVycz4K
+ICAgICAgICAgICAgPGRhdGUtdGltZT4yMDA5LTA5LTAyVDA4OjAwOjAwPC9kYXRlLXRpbWU+CiAg
+ICAgICAgICA8L2R0c3RhcnQ+CiAgICAgICAgICA8ZHRlbmQ+CiAgICAgICAgICAgIDxwYXJhbWV0
+ZXJzPgogICAgICAgICAgICAgIDx0emlkPgogICAgICAgICAgICAgICAgPHRleHQ+L2tvbGFiLm9y
+Zy9FdXJvcGUvQmVybGluPC90ZXh0PgogICAgICAgICAgICAgIDwvdHppZD4KICAgICAgICAgICAg
+PC9wYXJhbWV0ZXJzPgogICAgICAgICAgICA8ZGF0ZS10aW1lPjIwMDktMDktMDJUMDk6MDA6MDA8
+L2RhdGUtdGltZT4KICAgICAgICAgIDwvZHRlbmQ+CiAgICAgICAgICA8c3VtbWFyeT4KICAgICAg
+ICAgICAgPHRleHQ+w6TDtsO8JUAkwqPDqcKkwrzCssKw4oKsxaDvv73ZgNij2KjZgDwvdGV4dD4K
+ICAgICAgICAgIDwvc3VtbWFyeT4KICAgICAgICAgIDxsb2NhdGlvbj4KICAgICAgICAgICAgPHRl
+eHQ+w6TDtsO8JUAkwqPDqcKkwrzCssKw4oKsxaDvv73ZgNij2KjZgDwvdGV4dD4KICAgICAgICAg
+IDwvbG9jYXRpb24+CiAgICAgICAgPC9wcm9wZXJ0aWVzPgogICAgICA8L3ZldmVudD4KICAgIDwv
+Y29tcG9uZW50cz4KICA8L3ZjYWxlbmRhcj4KCjwvaWNhbGVuZGFyPgo=
+
+--nextPart1896568.xMY9UUPWVa--
diff --git a/tests/testfiles/v3/event/utf8quotedPrintable.ics.mime b/tests/testfiles/v3/event/utf8quotedPrintable.ics.mime
new file mode 100644
index 0000000..92552e7
--- /dev/null
+++ b/tests/testfiles/v3/event/utf8quotedPrintable.ics.mime
@@ -0,0 +1,88 @@
+Date: Fri, 17 Aug 2012 17:47:13 +0000
+X-Kolab-Type: application/x-vnd.kolab.event
+X-Kolab-Mime-Version: 3.0
+User-Agent: Libkolab-0.3.1
+Content-Type: multipart/mixed; boundary="nextPart1387272.PG4QbOfaIz"
+Subject: KOrganizer-1353608432.168
+MIME-Version: 1.0
+
+
+--nextPart1387272.PG4QbOfaIz
+Content-Type: text/plain; charset="us-ascii"
+Content-Transfer-Encoding: 7Bit
+
+This is a Kolab Groupware object.
+To view this object you will need an email client that can understand the Kolab Groupware format.
+For a list of such email clients please visit
+http://www.kolab.org/get-kolab
+
+--nextPart1387272.PG4QbOfaIz
+Content-Type: application/calendar+xml; name="kolab.xml"
+Content-Transfer-Encoding: quoted-printable
+Content-Disposition: attachment; filename="kolab.xml"
+
+<?xml version=3D"1.0" encoding=3D"UTF-8" standalone=3D"no" ?>
+<icalendar xmlns=3D"urn:ietf:params:xml:ns:icalendar-2.0">
+
+  <vcalendar>
+    <properties>
+      <prodid>
+        <text>Libkolab-0.3.1 Libkolabxml-0.5</text>
+      </prodid>
+      <version>
+        <text>2.0</text>
+      </version>
+      <x-kolab-version>
+        <text>3.0dev1</text>
+      </x-kolab-version>
+    </properties>
+    <components>
+      <vevent>
+        <properties>
+          <uid>
+            <text>KOrganizer-1353608432.168</text>
+          </uid>
+          <created>
+            <date-time>2009-09-01T11:36:44Z</date-time>
+          </created>
+          <dtstamp>
+            <date-time>2009-09-01T11:36:44Z</date-time>
+          </dtstamp>
+          <sequence>
+            <integer>0</integer>
+          </sequence>
+          <class>
+            <text>PUBLIC</text>
+          </class>
+          <dtstart>
+            <parameters>
+              <tzid>
+                <text>/kolab.org/Europe/Berlin</text>
+              </tzid>
+            </parameters>
+            <date-time>2009-09-02T08:00:00</date-time>
+          </dtstart>
+          <dtend>
+            <parameters>
+              <tzid>
+                <text>/kolab.org/Europe/Berlin</text>
+              </tzid>
+            </parameters>
+            <date-time>2009-09-02T09:00:00</date-time>
+          </dtend>
+          <summary>
+            <text>=C3=A4=C3=B6=C3=BC%@$=C2=A3=C3=A9=C2=A4=C2=BC=C2=B2=C2=
+=B0=E2=82=AC=C5=A0=EF=BF=BD=D9=80=D8=A3=D8=A8=D9=80</text>
+          </summary>
+          <location>
+            <text>=C3=A4=C3=B6=C3=BC%@$=C2=A3=C3=A9=C2=A4=C2=BC=C2=B2=C2=
+=B0=E2=82=AC=C5=A0=EF=BF=BD=D9=80=D8=A3=D8=A8=D9=80</text>
+          </location>
+        </properties>
+      </vevent>
+    </components>
+  </vcalendar>
+
+</icalendar>
+
+--nextPart1387272.PG4QbOfaIz--


commit 51141e0f17c0cc7e6c6704651c880285a9f01c63
Merge: 1df4049 8886295
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Wed Aug 15 18:36:00 2012 +0200

    Merge branch 'master' of ssh://git.kolab.org/git/libkolab



commit 1df40496032816d975930a0bdc5e22b714bf00e9
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Wed Aug 15 16:54:39 2012 +0200

    Specify explicitly what encoding we load.

diff --git a/tests/kolabobjecttest.cpp b/tests/kolabobjecttest.cpp
index 19d7de7..176afd0 100644
--- a/tests/kolabobjecttest.cpp
+++ b/tests/kolabobjecttest.cpp
@@ -26,7 +26,7 @@
 void KolabObjectTest::preserveLatin1()
 {
     KCalCore::Event::Ptr event(new KCalCore::Event());
-    QString summary("äöü%@$£é¤¼²°");
+    QString summary(QLatin1String("äöü%@$£é¤¼²°"));
     event->setSummary(summary);
     QCOMPARE(event->summary(), summary);
     //std::cout << event->summary().toStdString() << std::endl;
@@ -41,7 +41,7 @@ void KolabObjectTest::preserveLatin1()
 void KolabObjectTest::preserveUnicode()
 {
     KCalCore::Event::Ptr event(new KCalCore::Event());
-    QString summary("€Š�ـأبـ☺");
+    QString summary(QString::fromUtf8("€Š�ـأبـ☺"));
     event->setSummary(summary);
     QCOMPARE(event->summary(), summary);
 //     std::cout << event->summary().toStdString() << std::endl;





More information about the commits mailing list