Mercurial > trustbridge
annotate ui/tests/windowsstoretest.cpp @ 1332:8362e30f7b55
(issue139) Check that pid is not running if the lock can be aquired
If the lock on the lockfile can be aquired it might still be
possible that another process is running. So we read the
pid from the lockfile and check if another process with the
same installation prefix as us is running.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 15 Oct 2014 14:19:46 +0200 |
parents | 562d66614b5c |
children |
rev | line source |
---|---|
404 | 1 /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik |
2 * Software engineering by Intevation GmbH | |
3 * | |
4 * This file is Free Software under the GNU GPL (v>=2) | |
5 * and comes with ABSOLUTELY NO WARRANTY! | |
6 * See LICENSE.txt for details. | |
7 */ | |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
8 #include "windowsstoretest.h" |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
9 #include "certificatelist.h" |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
10 #include "strhelp.h" |
1327
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
11 #include "logging.h" |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
12 #include "certificate.h" |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
13 #include "../cinst/windowsstore.h" |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
14 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
15 #include <QTest> |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
16 |
222
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
17 void WindowsStoreTest::dumpContents() { |
602
854248d81ba4
Fully switch to unicode for windows.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
404
diff
changeset
|
18 wchar_t pszNameString[256]; |
222
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
19 PCCERT_CONTEXT pCert = NULL; |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
20 qDebug() << "Currently in store: " ; |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
21 while((pCert = CertEnumCertificatesInStore(testStore, pCert))) { |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
22 if(CertGetNameString(pCert, |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
23 CERT_NAME_SIMPLE_DISPLAY_TYPE, |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
24 0, |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
25 NULL, |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
26 pszNameString, |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
27 128)){ |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
28 qDebug() << " " << pszNameString ; |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
29 } |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
30 } |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
31 } |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
32 |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
33 void WindowsStoreTest::initTestCase() { |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
34 testStore = CertOpenStore( |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
35 CERT_STORE_PROV_MEMORY, // A memory store |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
36 0, // Encoding type |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
37 // Not used with a memory store |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
38 0, // Use the default provider |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
39 0, // No flags |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
40 NULL); // Not needed |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
41 QVERIFY (testStore); |
1327
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
42 tmpFile.open(); // get the file name |
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
43 /* This is not really a secure way to open a temporay file but it's ok |
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
44 * for a unit test. The Problem is that qtemporaryfile prohibits obtaining |
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
45 * an exclusive lock on the created file. */ |
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
46 QVERIFY(QFile::copy(":/list-valid-signed.txt", tmpFile.fileName() + "_exclusive")); |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
47 tmpFile.close(); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
48 |
1327
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
49 validList = CertificateList((tmpFile.fileName() + "_exclusive").toLocal8Bit().data()); |
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
50 QVERIFY(validList.isValid()); |
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
51 QVERIFY(validList.getCertificates().size() > 0); |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
52 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
53 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
54 void WindowsStoreTest::testInstRemove() { |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
55 char ** to_install = NULL, |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
56 ** to_remove = NULL; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
57 PCCERT_CONTEXT pCert = NULL; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
58 size_t i = 0; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
59 |
249
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
60 QList<Certificate> instList; |
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
61 |
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
62 foreach (const Certificate &cert, validList.getCertificates()) { |
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
63 if (cert.isInstallCert()) |
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
64 instList << cert; |
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
65 } |
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
66 |
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
67 |
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
68 foreach (const Certificate &cert, instList) { |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
69 strv_append (&to_install, cert.base64Line().toLatin1().constData() + 2, |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
70 cert.base64Line().size() - 2); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
71 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
72 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
73 /* Just a quick check for str_append_str functionality */ |
249
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
74 QVERIFY((size_t) instList.size() == strv_length(to_install)); |
1327
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
75 QVERIFY(strv_length(to_install) > 0); |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
76 for (i = 0; i < strv_length(to_install); i++) { |
249
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
77 QVERIFY (instList[i].base64Line().right( |
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
78 instList[i].base64Line().size() - 2) == |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
79 QString::fromLatin1(to_install[i])); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
80 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
81 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
82 do_install(testStore, to_install); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
83 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
84 i = 0; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
85 while((pCert = CertEnumCertificatesInStore(testStore, pCert))) { |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
86 bool certFound = false; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
87 QByteArray data = QByteArray::fromRawData ((const char *)pCert->pbCertEncoded, |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
88 pCert->cbCertEncoded); |
249
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
89 foreach (const Certificate &cert, instList) { |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
90 QByteArray asn1data = QByteArray::fromBase64( |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
91 cert.base64Line().right(cert.base64Line().size() - 2).toLatin1()); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
92 if (asn1data == data) { |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
93 certFound = true; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
94 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
95 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
96 QVERIFY(certFound); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
97 i++; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
98 } |
249
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
99 QVERIFY ((size_t)instList.size() == i); |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
100 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
101 /* Remove all except one */ |
1327
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
102 QVERIFY(strv_length(to_install)); |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
103 for (i = 0; i < strv_length(to_install) - 1; i++) { |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
104 strv_append(&to_remove, to_install[i], qstrlen(to_install[i])); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
105 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
106 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
107 do_remove(testStore, to_remove); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
108 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
109 i = 0; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
110 while((pCert = CertEnumCertificatesInStore(testStore, pCert))) { |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
111 i++; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
112 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
113 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
114 QVERIFY(i == 1); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
115 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
116 /* Remove that too */ |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
117 strv_free(to_remove); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
118 to_remove = NULL; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
119 strv_append(&to_remove, to_install[strv_length(to_install) - 1], |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
120 qstrlen(to_install[strv_length(to_install) - 1])); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
121 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
122 do_remove(testStore, to_remove); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
123 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
124 QVERIFY (CertEnumCertificatesInStore(testStore, pCert) == NULL); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
125 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
126 /* Install them all again */ |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
127 do_install(testStore, to_install); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
128 strv_free(to_remove); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
129 to_remove = NULL; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
130 strv_append(&to_remove, to_install[strv_length(to_install) - 1], |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
131 qstrlen(to_install[strv_length(to_install) - 1])); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
132 do_remove(testStore, to_remove); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
133 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
134 i = 0; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
135 while((pCert = CertEnumCertificatesInStore(testStore, pCert))) { |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
136 bool certFound = false; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
137 QByteArray data = QByteArray::fromRawData((const char*) pCert->pbCertEncoded, |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
138 pCert->cbCertEncoded); |
222
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
139 QVERIFY (data.toBase64() != to_remove[0]); |
249
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
140 for (int j = 0; j < instList.size() - 1; j++) { |
6a7eb102716d
Remove code duplication by unifying the certificatelist.
Andre Heinecke <aheinecke@intevation.de>
parents:
222
diff
changeset
|
141 const Certificate &cert = instList[j]; |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
142 QByteArray asn1data = QByteArray::fromBase64( |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
143 cert.base64Line().right(cert.base64Line().size() - 2).toLatin1()); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
144 if (asn1data == data) { |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
145 certFound = true; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
146 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
147 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
148 QVERIFY(certFound); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
149 i++; |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
150 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
151 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
152 QVERIFY(i == strv_length(to_install) - 1); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
153 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
154 /* Install all again and remove them afterwards */ |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
155 do_install(testStore, to_install); |
222
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
156 do_remove(testStore, to_install); |
53ea9b975d1c
Cleanup windowsstore.c
Andre Heinecke <aheinecke@intevation.de>
parents:
220
diff
changeset
|
157 |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
158 QVERIFY (CertEnumCertificatesInStore(testStore, pCert) == NULL); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
159 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
160 strv_free(to_install); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
161 strv_free(to_remove); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
162 } |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
163 |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
164 void WindowsStoreTest::cleanupTestCase() { |
1327
562d66614b5c
(issue169) Fix handling of exclusive locks.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1060
diff
changeset
|
165 QFile::remove(tmpFile.fileName() + "_exclusive"); |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
166 CertCloseStore(testStore, 0); |
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
167 } |
1060
317ee9dc4684
(issue46) Make debug output optional in cinst and mozilla and propagate its setting.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
602
diff
changeset
|
168 |
317ee9dc4684
(issue46) Make debug output optional in cinst and mozilla and propagate its setting.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
602
diff
changeset
|
169 bool g_debug = true; |
317ee9dc4684
(issue46) Make debug output optional in cinst and mozilla and propagate its setting.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
602
diff
changeset
|
170 |
220
e6c5c70a67b0
Add test for windowsstores
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
171 QTEST_GUILESS_MAIN (WindowsStoreTest); |