OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/cert/nss_cert_database_chromeos.h" | 5 #include "net/cert/nss_cert_database_chromeos.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/message_loop/message_loop_proxy.h" | 9 #include "base/message_loop/message_loop_proxy.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 EXPECT_EQ(0U, failed.size()); | 163 EXPECT_EQ(0U, failed.size()); |
164 | 164 |
165 // Get cert list for each user. | 165 // Get cert list for each user. |
166 CertificateList user_1_certlist; | 166 CertificateList user_1_certlist; |
167 CertificateList user_2_certlist; | 167 CertificateList user_2_certlist; |
168 db_1_->ListCertsSync(&user_1_certlist); | 168 db_1_->ListCertsSync(&user_1_certlist); |
169 db_2_->ListCertsSync(&user_2_certlist); | 169 db_2_->ListCertsSync(&user_2_certlist); |
170 | 170 |
171 // Check that the imported certs only shows up in the list for the user that | 171 // Check that the imported certs only shows up in the list for the user that |
172 // imported them. | 172 // imported them. |
173 EXPECT_TRUE(IsCertInCertificateList(certs_1[0], user_1_certlist)); | 173 EXPECT_TRUE(IsCertInCertificateList(certs_1[0].get(), user_1_certlist)); |
174 EXPECT_FALSE(IsCertInCertificateList(certs_1[0], user_2_certlist)); | 174 EXPECT_FALSE(IsCertInCertificateList(certs_1[0].get(), user_2_certlist)); |
175 | 175 |
176 EXPECT_TRUE(IsCertInCertificateList(certs_2[0], user_2_certlist)); | 176 EXPECT_TRUE(IsCertInCertificateList(certs_2[0].get(), user_2_certlist)); |
177 EXPECT_FALSE(IsCertInCertificateList(certs_2[0], user_1_certlist)); | 177 EXPECT_FALSE(IsCertInCertificateList(certs_2[0].get(), user_1_certlist)); |
178 | 178 |
179 // Run the message loop so the observer notifications get processed. | 179 // Run the message loop so the observer notifications get processed. |
180 base::RunLoop().RunUntilIdle(); | 180 base::RunLoop().RunUntilIdle(); |
181 // Should have gotten two OnCACertChanged notifications. | 181 // Should have gotten two OnCACertChanged notifications. |
182 ASSERT_EQ(2U, added_ca_.size()); | 182 ASSERT_EQ(2U, added_ca_.size()); |
183 // TODO(mattm): make NSSCertDatabase actually pass the cert to the callback, | 183 // TODO(mattm): make NSSCertDatabase actually pass the cert to the callback, |
184 // and enable these checks: | 184 // and enable these checks: |
185 // EXPECT_EQ(certs_1[0]->os_cert_handle(), added_ca_[0]); | 185 // EXPECT_EQ(certs_1[0]->os_cert_handle(), added_ca_[0]); |
186 // EXPECT_EQ(certs_2[0]->os_cert_handle(), added_ca_[1]); | 186 // EXPECT_EQ(certs_2[0]->os_cert_handle(), added_ca_[1]); |
187 EXPECT_EQ(0U, added_.size()); | 187 EXPECT_EQ(0U, added_.size()); |
188 | 188 |
189 // Tests that the new certs are loaded by async ListCerts method. | 189 // Tests that the new certs are loaded by async ListCerts method. |
190 CertificateList user_1_certlist_async; | 190 CertificateList user_1_certlist_async; |
191 CertificateList user_2_certlist_async; | 191 CertificateList user_2_certlist_async; |
192 db_1_->ListCerts( | 192 db_1_->ListCerts( |
193 base::Bind(&SwapCertLists, base::Unretained(&user_1_certlist_async))); | 193 base::Bind(&SwapCertLists, base::Unretained(&user_1_certlist_async))); |
194 db_2_->ListCerts( | 194 db_2_->ListCerts( |
195 base::Bind(&SwapCertLists, base::Unretained(&user_2_certlist_async))); | 195 base::Bind(&SwapCertLists, base::Unretained(&user_2_certlist_async))); |
196 | 196 |
197 base::RunLoop().RunUntilIdle(); | 197 base::RunLoop().RunUntilIdle(); |
198 | 198 |
199 EXPECT_TRUE(IsCertInCertificateList(certs_1[0], user_1_certlist_async)); | 199 EXPECT_TRUE(IsCertInCertificateList(certs_1[0].get(), user_1_certlist_async)); |
200 EXPECT_FALSE(IsCertInCertificateList(certs_1[0], user_2_certlist_async)); | 200 EXPECT_FALSE( |
| 201 IsCertInCertificateList(certs_1[0].get(), user_2_certlist_async)); |
201 | 202 |
202 EXPECT_TRUE(IsCertInCertificateList(certs_2[0], user_2_certlist_async)); | 203 EXPECT_TRUE(IsCertInCertificateList(certs_2[0].get(), user_2_certlist_async)); |
203 EXPECT_FALSE(IsCertInCertificateList(certs_2[0], user_1_certlist_async)); | 204 EXPECT_FALSE( |
| 205 IsCertInCertificateList(certs_2[0].get(), user_1_certlist_async)); |
204 } | 206 } |
205 | 207 |
206 // Test that ImportServerCerts imports the cert to the correct slot, and that | 208 // Test that ImportServerCerts imports the cert to the correct slot, and that |
207 // ListCerts includes the added cert for the correct user, and does not include | 209 // ListCerts includes the added cert for the correct user, and does not include |
208 // it for the other user. | 210 // it for the other user. |
209 TEST_F(NSSCertDatabaseChromeOSTest, ImportServerCert) { | 211 TEST_F(NSSCertDatabaseChromeOSTest, ImportServerCert) { |
210 // Load test certs from disk. | 212 // Load test certs from disk. |
211 CertificateList certs_1 = CreateCertificateListFromFile( | 213 CertificateList certs_1 = CreateCertificateListFromFile( |
212 GetTestCertsDirectory(), "ok_cert.pem", X509Certificate::FORMAT_AUTO); | 214 GetTestCertsDirectory(), "ok_cert.pem", X509Certificate::FORMAT_AUTO); |
213 ASSERT_EQ(1U, certs_1.size()); | 215 ASSERT_EQ(1U, certs_1.size()); |
(...skipping 15 matching lines...) Expand all Loading... |
229 EXPECT_EQ(0U, failed.size()); | 231 EXPECT_EQ(0U, failed.size()); |
230 | 232 |
231 // Get cert list for each user. | 233 // Get cert list for each user. |
232 CertificateList user_1_certlist; | 234 CertificateList user_1_certlist; |
233 CertificateList user_2_certlist; | 235 CertificateList user_2_certlist; |
234 db_1_->ListCertsSync(&user_1_certlist); | 236 db_1_->ListCertsSync(&user_1_certlist); |
235 db_2_->ListCertsSync(&user_2_certlist); | 237 db_2_->ListCertsSync(&user_2_certlist); |
236 | 238 |
237 // Check that the imported certs only shows up in the list for the user that | 239 // Check that the imported certs only shows up in the list for the user that |
238 // imported them. | 240 // imported them. |
239 EXPECT_TRUE(IsCertInCertificateList(certs_1[0], user_1_certlist)); | 241 EXPECT_TRUE(IsCertInCertificateList(certs_1[0].get(), user_1_certlist)); |
240 EXPECT_FALSE(IsCertInCertificateList(certs_1[0], user_2_certlist)); | 242 EXPECT_FALSE(IsCertInCertificateList(certs_1[0].get(), user_2_certlist)); |
241 | 243 |
242 EXPECT_TRUE(IsCertInCertificateList(certs_2[0], user_2_certlist)); | 244 EXPECT_TRUE(IsCertInCertificateList(certs_2[0].get(), user_2_certlist)); |
243 EXPECT_FALSE(IsCertInCertificateList(certs_2[0], user_1_certlist)); | 245 EXPECT_FALSE(IsCertInCertificateList(certs_2[0].get(), user_1_certlist)); |
244 | 246 |
245 // Run the message loop so the observer notifications get processed. | 247 // Run the message loop so the observer notifications get processed. |
246 base::RunLoop().RunUntilIdle(); | 248 base::RunLoop().RunUntilIdle(); |
247 // TODO(mattm): ImportServerCert doesn't actually cause any observers to | 249 // TODO(mattm): ImportServerCert doesn't actually cause any observers to |
248 // fire. Is that correct? | 250 // fire. Is that correct? |
249 EXPECT_EQ(0U, added_ca_.size()); | 251 EXPECT_EQ(0U, added_ca_.size()); |
250 EXPECT_EQ(0U, added_.size()); | 252 EXPECT_EQ(0U, added_.size()); |
251 | 253 |
252 // Tests that the new certs are loaded by async ListCerts method. | 254 // Tests that the new certs are loaded by async ListCerts method. |
253 CertificateList user_1_certlist_async; | 255 CertificateList user_1_certlist_async; |
254 CertificateList user_2_certlist_async; | 256 CertificateList user_2_certlist_async; |
255 db_1_->ListCerts( | 257 db_1_->ListCerts( |
256 base::Bind(&SwapCertLists, base::Unretained(&user_1_certlist_async))); | 258 base::Bind(&SwapCertLists, base::Unretained(&user_1_certlist_async))); |
257 db_2_->ListCerts( | 259 db_2_->ListCerts( |
258 base::Bind(&SwapCertLists, base::Unretained(&user_2_certlist_async))); | 260 base::Bind(&SwapCertLists, base::Unretained(&user_2_certlist_async))); |
259 | 261 |
260 base::RunLoop().RunUntilIdle(); | 262 base::RunLoop().RunUntilIdle(); |
261 | 263 |
262 EXPECT_TRUE(IsCertInCertificateList(certs_1[0], user_1_certlist_async)); | 264 EXPECT_TRUE(IsCertInCertificateList(certs_1[0].get(), user_1_certlist_async)); |
263 EXPECT_FALSE(IsCertInCertificateList(certs_1[0], user_2_certlist_async)); | 265 EXPECT_FALSE( |
| 266 IsCertInCertificateList(certs_1[0].get(), user_2_certlist_async)); |
264 | 267 |
265 EXPECT_TRUE(IsCertInCertificateList(certs_2[0], user_2_certlist_async)); | 268 EXPECT_TRUE(IsCertInCertificateList(certs_2[0].get(), user_2_certlist_async)); |
266 EXPECT_FALSE(IsCertInCertificateList(certs_2[0], user_1_certlist_async)); | 269 EXPECT_FALSE( |
| 270 IsCertInCertificateList(certs_2[0].get(), user_1_certlist_async)); |
267 } | 271 } |
268 | 272 |
269 // Tests that There is no crash if the database is deleted while ListCerts | 273 // Tests that There is no crash if the database is deleted while ListCerts |
270 // is being processed on the worker pool. | 274 // is being processed on the worker pool. |
271 TEST_F(NSSCertDatabaseChromeOSTest, NoCrashIfShutdownBeforeDoneOnWorkerPool) { | 275 TEST_F(NSSCertDatabaseChromeOSTest, NoCrashIfShutdownBeforeDoneOnWorkerPool) { |
272 CertificateList certlist; | 276 CertificateList certlist; |
273 db_1_->ListCerts(base::Bind(&SwapCertLists, base::Unretained(&certlist))); | 277 db_1_->ListCerts(base::Bind(&SwapCertLists, base::Unretained(&certlist))); |
274 EXPECT_EQ(0U, certlist.size()); | 278 EXPECT_EQ(0U, certlist.size()); |
275 | 279 |
276 db_1_.reset(); | 280 db_1_.reset(); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 "client_2.pem", | 314 "client_2.pem", |
311 "client_2.pk8", | 315 "client_2.pk8", |
312 system_db_.slot())); | 316 system_db_.slot())); |
313 CertificateList certs; | 317 CertificateList certs; |
314 db_2_->ListCertsSync(&certs); | 318 db_2_->ListCertsSync(&certs); |
315 EXPECT_TRUE(IsCertInCertificateList(cert_1.get(), certs)); | 319 EXPECT_TRUE(IsCertInCertificateList(cert_1.get(), certs)); |
316 EXPECT_FALSE(IsCertInCertificateList(cert_2.get(), certs)); | 320 EXPECT_FALSE(IsCertInCertificateList(cert_2.get(), certs)); |
317 } | 321 } |
318 | 322 |
319 } // namespace net | 323 } // namespace net |
OLD | NEW |