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"