summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools/qbytearray
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2013-07-13 12:04:40 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-14 03:20:25 +0200
commitcc741597021dd5e9c7ca2caffaf8a15181f68e89 (patch)
tree5269f5485422717baedfc651af5decbe5a8b5875 /tests/auto/corelib/tools/qbytearray
parent3154e1ccaabfbdb42aa48cbb5805b23442cdc33e (diff)
Base64: Implement the "base64url" encoding and the stripping of '='
The "base64url" encoding is defined in RFC 4648, which is the newest version of Base64. There are also a few situations where the ending '=' is not desired. Change-Id: I9bb9fa55817b57d125189e4e795d6fde97caea6d Reviewed-by: Richard J. Moore <rich@kde.org>
Diffstat (limited to 'tests/auto/corelib/tools/qbytearray')
-rw-r--r--tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
index 933807c525..d7cc92e6c0 100644
--- a/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
+++ b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
@@ -614,6 +614,24 @@ void tst_QByteArray::base64()
QByteArray arr64 = rawdata.toBase64();
QCOMPARE(arr64, base64);
+
+ arr64 = rawdata.toBase64(QByteArray::Base64Encoding);
+ QCOMPARE(arr64, base64);
+
+ QByteArray base64noequals = base64;
+ base64noequals.replace('=', "");
+ arr64 = rawdata.toBase64(QByteArray::Base64Encoding | QByteArray::OmitTrailingEquals);
+ QCOMPARE(arr64, base64noequals);
+
+ QByteArray base64url = base64;
+ base64url.replace('/', '_').replace('+', '-');
+ arr64 = rawdata.toBase64(QByteArray::Base64UrlEncoding);
+ QCOMPARE(arr64, base64url);
+
+ QByteArray base64urlnoequals = base64url;
+ base64urlnoequals.replace('=', "");
+ arr64 = rawdata.toBase64(QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals);
+ QCOMPARE(arr64, base64urlnoequals);
}
//different from the previous test as the input are invalid
@@ -662,6 +680,23 @@ void tst_QByteArray::fromBase64()
QByteArray arr = QByteArray::fromBase64(base64);
QCOMPARE(arr, rawdata);
+
+ arr = QByteArray::fromBase64(base64, QByteArray::Base64Encoding);
+ QCOMPARE(arr, rawdata);
+
+ // try "base64url" encoding
+ QByteArray base64url = base64;
+ base64url.replace('/', '_').replace('+', '-');
+ arr = QByteArray::fromBase64(base64url, QByteArray::Base64UrlEncoding);
+ QCOMPARE(arr, rawdata);
+
+ if (base64 != base64url) {
+ // check that the invalid decodings fail
+ arr = QByteArray::fromBase64(base64, QByteArray::Base64UrlEncoding);
+ QVERIFY(arr != rawdata);
+ arr = QByteArray::fromBase64(base64url, QByteArray::Base64Encoding);
+ QVERIFY(arr != rawdata);
+ }
}
void tst_QByteArray::qvsnprintf()