File indexing completed on 2024-05-19 05:17:22
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 0006 #include <QFile> 0007 #include <QTest> 0008 #include <QTimeZone> 0009 0010 #include <KHealthCertificateParser> 0011 #include <KTestCertificate> 0012 0013 void initLocale() 0014 { 0015 qputenv("LC_ALL", "en_US.utf-8"); 0016 qputenv("TZ", "Europe/Amsterdam"); 0017 } 0018 0019 Q_CONSTRUCTOR_FUNCTION(initLocale) 0020 0021 class NlCoronaCheckParserTest : public QObject 0022 { 0023 Q_OBJECT 0024 private: 0025 QByteArray readFile(QStringView fileName) const 0026 { 0027 QFile f(QLatin1String(SOURCE_DIR "/data/") + fileName); 0028 if (!f.open(QFile::ReadOnly)) { 0029 qCritical() << f.errorString() << f.fileName(); 0030 } 0031 return f.readAll(); 0032 } 0033 0034 private Q_SLOTS: 0035 void testCertificate() 0036 { 0037 auto cert = KHealthCertificateParser::parse(readFile(u"nl-coronacheck/sample-one-day.txt")); 0038 QCOMPARE(cert.userType(), qMetaTypeId<KTestCertificate>()); 0039 auto t = cert.value<KTestCertificate>(); 0040 QCOMPARE(t.name(), QLatin1String("B B")); 0041 QCOMPARE(t.dateOfBirth(), QDate(1900, 7, 31)); 0042 QCOMPARE(t.country(), QLatin1String("NL")); 0043 QCOMPARE(t.disease(), QLatin1String("COVID-19")); 0044 QCOMPARE(t.result(), KTestCertificate::Negative); 0045 QCOMPARE(t.certificateIssueDate(), QDateTime({2021, 7, 28}, {12, 0}, QTimeZone("Europe/Amsterdam"))); 0046 QCOMPARE(t.certificateExpiryDate(), QDateTime({2021, 7, 29}, {13, 0}, QTimeZone("Europe/Amsterdam"))); 0047 QCOMPARE(t.signatureState(), KHealthCertificate::InvalidSignature); 0048 QCOMPARE(t.validationState(), KHealthCertificate::Invalid); 0049 QCOMPARE(t.certificateId(), QLatin1String("6MkhqwdOJa40zJUr8RtM+Q==")); 0050 QCOMPARE(t.rawData(), readFile(u"nl-coronacheck/sample-one-day.txt")); 0051 0052 QCOMPARE(KHealthCertificate::relevantUntil(t), QDateTime({2021, 7, 29}, {13, 0}, QTimeZone("Europe/Amsterdam"))); 0053 } 0054 }; 0055 0056 QTEST_APPLESS_MAIN(NlCoronaCheckParserTest) 0057 0058 #include "nlcoronacheckparsertest.moc"