diff options
author | gspencer@chromium.org <gspencer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-03 21:06:55 +0000 |
---|---|---|
committer | gspencer@chromium.org <gspencer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-03 21:06:55 +0000 |
commit | 139e375d3908c5211eaa36f75aa311782dc38a4e (patch) | |
tree | 728e393cb822509676da04e17efcbada494c3ee8 /net/base/cert_database_nss_unittest.cc | |
parent | 77333fa9dc37656518d9ce5ea995541f37ab36a8 (diff) | |
download | chromium_src-139e375d3908c5211eaa36f75aa311782dc38a4e.zip chromium_src-139e375d3908c5211eaa36f75aa311782dc38a4e.tar.gz chromium_src-139e375d3908c5211eaa36f75aa311782dc38a4e.tar.bz2 |
This fixes some minor issues in this test that were found because I
modeled another test on this one.
BUG=none
TEST=ran test
Review URL: http://codereview.chromium.org/8416046
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108543 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/cert_database_nss_unittest.cc')
-rw-r--r-- | net/base/cert_database_nss_unittest.cc | 146 |
1 files changed, 73 insertions, 73 deletions
diff --git a/net/base/cert_database_nss_unittest.cc b/net/base/cert_database_nss_unittest.cc index 0b46906..a7301b8 100644 --- a/net/base/cert_database_nss_unittest.cc +++ b/net/base/cert_database_nss_unittest.cc @@ -31,89 +31,30 @@ namespace psm = mozilla_security_manager; namespace net { -namespace { - -// Returns a FilePath object representing the src/net/data/ssl/certificates -// directory in the source tree. -FilePath GetTestCertsDirectory() { - FilePath certs_dir; - PathService::Get(base::DIR_SOURCE_ROOT, &certs_dir); - certs_dir = certs_dir.AppendASCII("net"); - certs_dir = certs_dir.AppendASCII("data"); - certs_dir = certs_dir.AppendASCII("ssl"); - certs_dir = certs_dir.AppendASCII("certificates"); - return certs_dir; -} - -CertificateList ListCertsInSlot(PK11SlotInfo* slot) { - CertificateList result; - CERTCertList* cert_list = PK11_ListCertsInSlot(slot); - for (CERTCertListNode* node = CERT_LIST_HEAD(cert_list); - !CERT_LIST_END(node, cert_list); - node = CERT_LIST_NEXT(node)) { - result.push_back(X509Certificate::CreateFromHandle( - node->cert, X509Certificate::OSCertHandles())); - } - CERT_DestroyCertList(cert_list); - - // Sort the result so that test comparisons can be deterministic. - std::sort(result.begin(), result.end(), X509Certificate::LessThan()); - return result; -} - -bool CleanupSlotContents(PK11SlotInfo* slot) { - CertDatabase cert_db; - bool ok = true; - CertificateList certs = ListCertsInSlot(slot); - for (size_t i = 0; i < certs.size(); ++i) { - if (!cert_db.DeleteCertAndKey(certs[i])) - ok = false; - } - return ok; -} - -std::string ReadTestFile(const std::string& name) { - std::string result; - FilePath cert_path = GetTestCertsDirectory().AppendASCII(name); - EXPECT_TRUE(file_util::ReadFileToString(cert_path, &result)); - return result; -} - -bool ReadCertIntoList(const std::string& name, CertificateList* certs) { - std::string cert_data = ReadTestFile(name); - if (cert_data.empty()) - return false; - - X509Certificate* cert = X509Certificate::CreateFromBytes( - cert_data.data(), cert_data.size()); - if (!cert) - return false; - - certs->push_back(cert); - return true; -} - -} // namespace - // TODO(mattm): when https://bugzilla.mozilla.org/show_bug.cgi?id=588269 is // fixed, switch back to using a separate userdb for each test. // (When doing so, remember to add some standalone tests of DeleteCert since it // won't be tested by TearDown anymore.) class CertDatabaseNSSTest : public testing::Test { public: + static void SetUpTestCase() { + ASSERT_TRUE(temp_db_dir_.Get().CreateUniqueTempDir()); + ASSERT_TRUE( + crypto::OpenTestNSSDB(temp_db_dir_.Get().path(), + "CertDatabaseNSSTest db")); + } + + static void TearDownTestCase() { + ASSERT_TRUE(temp_db_dir_.Get().Delete()); + } + virtual void SetUp() { - if (!temp_db_initialized_) { - ASSERT_TRUE(temp_db_dir_.Get().CreateUniqueTempDir()); - ASSERT_TRUE( - crypto::OpenTestNSSDB(temp_db_dir_.Get().path(), - "CertDatabaseNSSTest db")); - temp_db_initialized_ = true; - } slot_ = cert_db_.GetPublicModule(); // Test db should be empty at start of test. EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); } + virtual void TearDown() { // Don't try to cleanup if the setup failed. ASSERT_TRUE(slot_->os_module_handle()); @@ -123,18 +64,77 @@ class CertDatabaseNSSTest : public testing::Test { } protected: + static std::string ReadTestFile(const std::string& name) { + std::string result; + FilePath cert_path = GetTestCertsDirectory().AppendASCII(name); + EXPECT_TRUE(file_util::ReadFileToString(cert_path, &result)); + return result; + } + + static bool ReadCertIntoList(const std::string& name, + CertificateList* certs) { + std::string cert_data = ReadTestFile(name); + if (cert_data.empty()) + return false; + + X509Certificate* cert = X509Certificate::CreateFromBytes( + cert_data.data(), cert_data.size()); + if (!cert) + return false; + + certs->push_back(cert); + return true; + } + + static CertificateList ListCertsInSlot(PK11SlotInfo* slot) { + CertificateList result; + CERTCertList* cert_list = PK11_ListCertsInSlot(slot); + for (CERTCertListNode* node = CERT_LIST_HEAD(cert_list); + !CERT_LIST_END(node, cert_list); + node = CERT_LIST_NEXT(node)) { + result.push_back(X509Certificate::CreateFromHandle( + node->cert, X509Certificate::OSCertHandles())); + } + CERT_DestroyCertList(cert_list); + + // Sort the result so that test comparisons can be deterministic. + std::sort(result.begin(), result.end(), X509Certificate::LessThan()); + return result; + } + scoped_refptr<CryptoModule> slot_; CertDatabase cert_db_; private: + // Returns a FilePath object representing the src/net/data/ssl/certificates + // directory in the source tree. + static FilePath GetTestCertsDirectory() { + FilePath certs_dir; + PathService::Get(base::DIR_SOURCE_ROOT, &certs_dir); + certs_dir = certs_dir.AppendASCII("net"); + certs_dir = certs_dir.AppendASCII("data"); + certs_dir = certs_dir.AppendASCII("ssl"); + certs_dir = certs_dir.AppendASCII("certificates"); + return certs_dir; + } + + static bool CleanupSlotContents(PK11SlotInfo* slot) { + CertDatabase cert_db; + bool ok = true; + CertificateList certs = ListCertsInSlot(slot); + for (size_t i = 0; i < certs.size(); ++i) { + if (!cert_db.DeleteCertAndKey(certs[i])) + ok = false; + } + return ok; + } + static base::LazyInstance<ScopedTempDir> temp_db_dir_; - static bool temp_db_initialized_; }; // static base::LazyInstance<ScopedTempDir> CertDatabaseNSSTest::temp_db_dir_( base::LINKER_INITIALIZED); -bool CertDatabaseNSSTest::temp_db_initialized_ = false; TEST_F(CertDatabaseNSSTest, ListCerts) { // This test isn't terribly useful, though it will at least let valgrind test |