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