Mercurial > trustbridge
changeset 304:eecc06f714fd
Add first nsstest.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Thu, 03 Apr 2014 14:29:49 +0200 |
parents | b54ab152a57e |
children | 4a3febc6d806 |
files | ui/tests/CMakeLists.txt ui/tests/nsstest.cpp ui/tests/nsstest.h |
diffstat | 3 files changed, 121 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ui/tests/CMakeLists.txt Thu Apr 03 14:28:58 2014 +0200 +++ b/ui/tests/CMakeLists.txt Thu Apr 03 14:29:49 2014 +0200 @@ -1,6 +1,9 @@ set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}) -include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/../../common) +include_directories(${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/ui + ${CMAKE_SOURCE_DIR}/common + ${CMAKE_SOURCE_DIR}/cinst) find_package(Qt5Test) include_directories(${Qt5Test_INCLUDE_DIRS}) @@ -47,5 +50,7 @@ add_m13_test(windowsstoretest.cpp "${CERTIFICATELIST_SOURCES};${CMAKE_SOURCE_DIR}/cinst/windowsstore.c") endif (WIN32) +add_m13_test(nsstest.cpp "${CERTIFICATELIST_SOURCES};${CMAKE_SOURCE_DIR}/cinst/nssstore_linux.c") + #add_m13_test(${CMAKE_SOURCE_DIR}/ui/main.cpp "${M13UI_SOURCES}")
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/tests/nsstest.cpp Thu Apr 03 14:29:49 2014 +0200 @@ -0,0 +1,89 @@ +#include "nsstest.h" +#include "nssstore.h" +#include "strhelp.h" + +#include <QTest> + +void NSSTest::initTestCase() { + /* Copy the empty nss db in the temporary dir */ + QFile::copy(":/nss/cert8.db", nssDir.path() + "/" +"cert8.db"); + QFile::copy(":/nss/key3.db", nssDir.path() + "/" +"key3.db"); + QFile::copy(":/nss/secmod.db", nssDir.path() + "/" +"secmod.db"); + + QVERIFY(QFile::setPermissions(nssDir.path() + "/" +"cert8.db", + QFileDevice::ReadOwner | QFileDevice::WriteOwner)); + QVERIFY(QFile::setPermissions(nssDir.path() + "/" +"key3.db", + QFileDevice::ReadOwner | QFileDevice::WriteOwner)); + QVERIFY(QFile::setPermissions(nssDir.path() + "/" +"secmod.db", + QFileDevice::ReadOwner | QFileDevice::WriteOwner)); + + /* Set up a temporary list */ + QFile res(":/list-valid-signed.txt"); + res.open(QIODevice::ReadOnly); + validListFile.open(); + validListFile.write(res.readAll()); + validListFile.close(); + + nssDir.setAutoRemove(false); + + validList = CertificateList(validListFile.fileName().toLocal8Bit().data()); + + /* Create the profiles.ini `s set environment variables*/ +#ifndef WIN32 + QVERIFY(!setenv ("HOME", fakeHome.path().toLocal8Bit().constData(), 1)); + fakeFirefoxDir = QDir(fakeHome.path() + "/.mozilla/firefox"); + fakeThunderbirdDir = QDir(fakeHome.path() + "/.thunderbird"); +#else + QVERIFY(!setenv ("APPDATA", fakeHome.path().toLocal8Bit().constData(), 1)); + fakeFirefoxDir = QDir(fakeHome.path() + "/Mozilla/firefox"); + fakeThunderbirdDir = QDir(fakeHome.path() + "/Thunderbird"); +#endif + QVERIFY(fakeFirefoxDir.mkpath(fakeFirefoxDir.path())); + QVERIFY(fakeThunderbirdDir.mkpath(fakeThunderbirdDir.path())); + + QFile mozProfile(fakeFirefoxDir.absoluteFilePath("profiles.ini")); + QFile tbProfile(fakeThunderbirdDir.absoluteFilePath("profiles.ini")); + + /* Write profiles */ + QVERIFY(mozProfile.open(QIODevice::WriteOnly)); + QTextStream ffStream(&mozProfile); + ffStream << endl << "[General]"<< + "StartWithLastProfile=1" << endl << + "[Profile0]" << endl << + "Name=default" << endl << + "IsRelative=1" << endl << + "Path=" << fakeFirefoxDir.relativeFilePath(nssDir.path()) << endl; + ffStream.flush(); + mozProfile.close(); + + QVERIFY(tbProfile.open(QIODevice::WriteOnly)); + QTextStream tbStream(&tbProfile); + tbStream << endl << "[General]"<< + "StartWithLastProfile=1" << endl << + "[Profile102]" << endl << + "Name=default" << endl << + "IsRelative=0" << endl << + "Path=" << nssDir.path() << endl; + tbStream.flush(); + tbProfile.close(); +} + +void NSSTest::testInstRemove() { + char ** to_install = NULL, + ** to_remove = NULL; + + QList<Certificate> instList; + + foreach (const Certificate &cert, validList.getCertificates()) { + if (!cert.isInstallCert()) + continue; + instList << cert; + strv_append (&to_install, cert.base64Line().toLatin1().constData() + 2, + cert.base64Line().size() - 2); + } + QVERIFY((size_t) instList.size() == strv_length(to_install)); + + write_stores_nss(to_install, to_remove); +} + +QTEST_GUILESS_MAIN (NSSTest);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/tests/nsstest.h Thu Apr 03 14:29:49 2014 +0200 @@ -0,0 +1,26 @@ +#ifndef NSSTEST_H +#define NSSTEST_H + +#include <QTemporaryFile> +#include <QTemporaryDir> +#include <QObject> + +#include "certificatelist.h" + +class NSSTest: public QObject +{ + Q_OBJECT + + QTemporaryDir fakeHome; + QDir fakeFirefoxDir; + QDir fakeThunderbirdDir; + QTemporaryDir nssDir; + CertificateList validList; + QTemporaryFile validListFile; + +private Q_SLOTS: + void initTestCase(); + void testInstRemove(); +}; + +#endif // NSSTEST_H