File indexing completed on 2024-05-12 05:22:34
0001 /* 0002 This file is part of libkleopatra's test suite. 0003 SPDX-FileCopyrightText: 2023 g10 Code GmbH 0004 SPDX-FileContributor: Carl Schwan <carl@carlschwan.eu> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include <Libkleo/Classify> 0010 #include <QTemporaryDir> 0011 #include <QTemporaryFile> 0012 #include <QTest> 0013 0014 class ClassifyTest : public QObject 0015 { 0016 Q_OBJECT 0017 0018 private Q_SLOTS: 0019 void initTestCase() 0020 { 0021 } 0022 0023 void cleanupTestCase() 0024 { 0025 } 0026 0027 void identifyFileName() 0028 { 0029 QTemporaryDir dir; 0030 0031 const auto fileName = dir.filePath(QStringLiteral("msg.asc")); 0032 const auto fileName1 = dir.filePath(QStringLiteral("msg(1).asc")); 0033 { 0034 QFile asc(fileName); 0035 QVERIFY(asc.open(QIODevice::WriteOnly)); 0036 0037 QFile asc1(fileName1); 0038 QVERIFY(asc1.open(QIODevice::WriteOnly)); 0039 } 0040 0041 QVERIFY(Kleo::isMimeFile(Kleo::classify(fileName))); 0042 QVERIFY(Kleo::isMimeFile(fileName1)); 0043 } 0044 0045 void identifyMimeFileExtensionTest() 0046 { 0047 { 0048 QTemporaryFile mbox; 0049 mbox.setFileTemplate("XXXXXX.mbox"); 0050 QVERIFY(mbox.open()); 0051 QVERIFY(Kleo::mayBeMimeFile(Kleo::classify(mbox.fileName()))); 0052 } 0053 0054 { 0055 QTemporaryFile eml; 0056 eml.setFileTemplate("XXXXXX.eml"); 0057 QVERIFY(eml.open()); 0058 QVERIFY(Kleo::mayBeMimeFile(eml.fileName())); 0059 0060 QCOMPARE(QStringLiteral("Ascii, MimeFile"), Kleo::printableClassification(Kleo::classify(eml.fileName()))); 0061 } 0062 0063 { 0064 QTemporaryFile myFile; 0065 myFile.setFileTemplate("XXXXXX.p7m"); 0066 QVERIFY(myFile.open()); 0067 QVERIFY(Kleo::mayBeMimeFile(myFile.fileName())); 0068 } 0069 0070 { 0071 QTemporaryFile myPdfFile; 0072 myPdfFile.setFileTemplate("XXXXXX.pdf.p7m"); 0073 QVERIFY(myPdfFile.open()); 0074 QVERIFY(!Kleo::mayBeMimeFile(myPdfFile.fileName())); 0075 } 0076 } 0077 0078 void identifyCertificateStoreExtensionTest() 0079 { 0080 QTemporaryFile crl; 0081 crl.setFileTemplate("XXXXXX.crl"); 0082 QVERIFY(crl.open()); 0083 QVERIFY(Kleo::isCertificateRevocationList(crl.fileName())); 0084 } 0085 0086 void findSignaturesTest() 0087 { 0088 QTemporaryFile sig; 0089 sig.setFileTemplate("XXXXXX.sig"); 0090 QVERIFY(sig.open()); 0091 0092 QFileInfo fi(sig.fileName()); 0093 0094 const auto signatures = Kleo::findSignatures(fi.baseName()); 0095 QCOMPARE(1, signatures.count()); 0096 QCOMPARE(fi.baseName() + QStringLiteral(".sig"), signatures[0]); 0097 } 0098 0099 void findOutputFileNameNotFoundTest() 0100 { 0101 QTemporaryFile unknown; 0102 unknown.setFileTemplate("XXXXXX.unknown"); 0103 QVERIFY(unknown.open()); 0104 0105 QCOMPARE(unknown.fileName() + QStringLiteral(".out"), Kleo::outputFileName(unknown.fileName())); 0106 } 0107 0108 void findOutputFileNameTest() 0109 { 0110 QTemporaryFile sig; 0111 sig.setFileTemplate("XXXXXX.sig"); 0112 QVERIFY(sig.open()); 0113 0114 QFileInfo fi(sig.fileName()); 0115 0116 QCOMPARE(fi.path() + QLatin1Char('/') + fi.baseName(), Kleo::outputFileName(sig.fileName())); 0117 } 0118 0119 void test_outputFileExtension() 0120 { 0121 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::OpenPGP | Kleo::Class::CipherText | Kleo::Class::Binary, false), QStringLiteral("gpg")); 0122 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::OpenPGP | Kleo::Class::CipherText | Kleo::Class::Binary, true), QStringLiteral("pgp")); 0123 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::OpenPGP | Kleo::Class::CipherText | Kleo::Class::Ascii, false), QStringLiteral("asc")); 0124 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::OpenPGP | Kleo::Class::CipherText | Kleo::Class::Ascii, true), QStringLiteral("asc")); 0125 0126 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::OpenPGP | Kleo::Class::DetachedSignature | Kleo::Class::Binary, false), QStringLiteral("sig")); 0127 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::OpenPGP | Kleo::Class::DetachedSignature | Kleo::Class::Binary, true), QStringLiteral("pgp")); 0128 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::OpenPGP | Kleo::Class::DetachedSignature | Kleo::Class::Ascii, false), QStringLiteral("asc")); 0129 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::OpenPGP | Kleo::Class::DetachedSignature | Kleo::Class::Ascii, true), QStringLiteral("asc")); 0130 0131 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::CMS | Kleo::Class::CipherText | Kleo::Class::Binary, false), QStringLiteral("p7m")); 0132 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::CMS | Kleo::Class::CipherText | Kleo::Class::Ascii, false), QStringLiteral("p7m")); 0133 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::CMS | Kleo::Class::DetachedSignature | Kleo::Class::Binary, false), QStringLiteral("p7s")); 0134 QCOMPARE(Kleo::outputFileExtension(Kleo::Class::CMS | Kleo::Class::DetachedSignature | Kleo::Class::Ascii, false), QStringLiteral("p7s")); 0135 } 0136 }; 0137 0138 QTEST_MAIN(ClassifyTest) 0139 #include "classifytest.moc"