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 0009 #include <KHealthCertificateParser> 0010 #include <KVaccinationCertificate> 0011 0012 void initLocale() 0013 { 0014 qputenv("LC_ALL", "en_US.utf-8"); 0015 qputenv("TZ", "UTC"); 0016 } 0017 0018 Q_CONSTRUCTOR_FUNCTION(initLocale) 0019 0020 class ShcParserTest : public QObject 0021 { 0022 Q_OBJECT 0023 private: 0024 QByteArray readFile(QStringView fileName) const 0025 { 0026 QFile f(QLatin1String(SOURCE_DIR "/data/") + fileName); 0027 if (!f.open(QFile::ReadOnly)) { 0028 qCritical() << f.errorString() << f.fileName(); 0029 } 0030 return f.readAll(); 0031 } 0032 0033 private Q_SLOTS: 0034 void testVaccinationCertificate() 0035 { 0036 auto cert = KHealthCertificateParser::parse(readFile(u"shc/example-00-f-qr-code-numeric-value-0.txt")); 0037 QCOMPARE(cert.userType(), qMetaTypeId<KVaccinationCertificate>()); 0038 auto vac = cert.value<KVaccinationCertificate>(); 0039 QCOMPARE(vac.name(), QLatin1String("John B. Anyperson")); 0040 QCOMPARE(vac.country(), QString()); 0041 QCOMPARE(vac.dose(), 2); 0042 QCOMPARE(vac.totalDoses(), 0); 0043 QCOMPARE(vac.date(), QDate(2021, 1, 29)); 0044 QCOMPARE(vac.disease(), QLatin1String("COVID-19")); 0045 QCOMPARE(vac.vaccine(), QLatin1String("COVID-19, mRNA, LNP-S, PF, 100 mcg/0.5mL dose or 50 mcg/0.25mL dose")); 0046 QCOMPARE(vac.manufacturer(), QLatin1String("Moderna US, Inc.")); 0047 QCOMPARE(vac.certificateIssuer(), QLatin1String("https://spec.smarthealth.cards/examples/issuer")); 0048 QCOMPARE(vac.certificateId(), QString()); 0049 QCOMPARE(vac.certificateIssueDate(), QDateTime({2021, 9, 21}, {21, 52, 14})); 0050 QCOMPARE(vac.signatureState(), KHealthCertificate::ValidSignature); 0051 QCOMPARE(vac.validationState(), KHealthCertificate::Valid); 0052 QCOMPARE(vac.vaccinationState(), KVaccinationCertificate::Vaccinated); 0053 QCOMPARE(vac.rawData(), readFile(u"shc/example-00-f-qr-code-numeric-value-0.txt")); 0054 } 0055 }; 0056 0057 QTEST_APPLESS_MAIN(ShcParserTest) 0058 0059 #include "shcparsertest.moc"