diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2013-07-13 12:04:40 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-14 03:20:25 +0200 |
commit | cc741597021dd5e9c7ca2caffaf8a15181f68e89 (patch) | |
tree | 5269f5485422717baedfc651af5decbe5a8b5875 /tests/auto/corelib/tools/qbytearray | |
parent | 3154e1ccaabfbdb42aa48cbb5805b23442cdc33e (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.cpp | 35 |
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() |