File indexing completed on 2024-05-19 05:17:21
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include <QFile> 0008 #include <QTest> 0009 0010 #include <KHealthCertificateParser> 0011 #include <KVaccinationCertificate> 0012 0013 void initLocale() 0014 { 0015 qputenv("LC_ALL", "en_US.utf-8"); 0016 qputenv("TZ", "UTC"); 0017 } 0018 0019 Q_CONSTRUCTOR_FUNCTION(initLocale) 0020 0021 class DivocParserTest : 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 testVaccinationCertificate() 0036 { 0037 auto cert = KHealthCertificateParser::parse(readFile(u"divoc/partial-vaccination.bin")); 0038 QCOMPARE(cert.userType(), qMetaTypeId<KVaccinationCertificate>()); 0039 auto vac = cert.value<KVaccinationCertificate>(); 0040 QCOMPARE(vac.name(), QLatin1String("Katie Dragon")); 0041 QCOMPARE(vac.country(), QLatin1String("IN")); 0042 QCOMPARE(vac.dose(), 1); 0043 QCOMPARE(vac.totalDoses(), 2); 0044 QCOMPARE(vac.date(), QDate(2021, 7, 16)); 0045 QCOMPARE(vac.vaccine(), QLatin1String("COVISHIELD")); 0046 QCOMPARE(vac.certificateIssuer(), QLatin1String("https://cowin.gov.in/")); 0047 QCOMPARE(vac.certificateId(), QLatin1String("987654321098")); 0048 QCOMPARE(vac.certificateIssueDate(), QDateTime({2021, 7, 16}, {19, 40})); 0049 QCOMPARE(vac.signatureState(), KHealthCertificate::InvalidSignature); 0050 QCOMPARE(vac.validationState(), KHealthCertificate::Invalid); // due to invalid signature 0051 QCOMPARE(vac.vaccinationState(), KVaccinationCertificate::PartiallyVaccinated); 0052 QCOMPARE(vac.rawData(), readFile(u"divoc/partial-vaccination.bin")); 0053 QCOMPARE(KHealthCertificate::relevantUntil(vac), QDateTime({2022, 7, 16}, {0, 0})); 0054 } 0055 }; 0056 0057 QTEST_APPLESS_MAIN(DivocParserTest) 0058 0059 #include "divocparsertest.moc"