Index: chrome/browser/chromeos/cros/onc_network_parser_unittest.cc |
diff --git a/chrome/browser/chromeos/cros/onc_network_parser_unittest.cc b/chrome/browser/chromeos/cros/onc_network_parser_unittest.cc |
index 24e656bf916fa86eaf2da0d48f3454f996911dd5..03b6bd461da51bda46477da7750cd5a9a79f80d3 100644 |
--- a/chrome/browser/chromeos/cros/onc_network_parser_unittest.cc |
+++ b/chrome/browser/chromeos/cros/onc_network_parser_unittest.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/chromeos/cros/onc_network_parser.h" |
#include <cert.h> |
+#include <keyhi.h> |
#include <pk11pub.h> |
#include "base/lazy_instance.h" |
@@ -19,6 +20,10 @@ |
namespace chromeos { |
+namespace { |
+const char g_token_name[] = "OncNetworkParserTest token"; |
+} |
+ |
class OncNetworkParserTest : public testing::Test { |
public: |
static void SetUpTestCase() { |
@@ -29,8 +34,7 @@ class OncNetworkParserTest : public testing::Test { |
// it once, and empty it for each test case. Here's the bug: |
// https://bugzilla.mozilla.org/show_bug.cgi?id=588269 |
ASSERT_TRUE( |
- crypto::OpenTestNSSDB(temp_db_dir_.Get().path(), |
- "OncNetworkParserTest db")); |
+ crypto::OpenTestNSSDB(temp_db_dir_.Get().path(), g_token_name)); |
} |
static void TearDownTestCase() { |
@@ -192,6 +196,86 @@ TEST_F(OncNetworkParserTest, TestCreateNetworkWifiEAP2) { |
EXPECT_EQ(wifi->eap_anonymous_identity(), "anon"); |
} |
+TEST_F(OncNetworkParserTest, TestAddClientCertificate) { |
+ std::string test_blob( |
+ "{" |
+ " \"Certificates\": [" |
+ " {" |
+ " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697ac}\"," |
+ " \"Type\": \"Client\"," |
+ " \"PKCS12\": \"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\"" |
+ " }" |
+ " ]," |
+ "}"); |
+ std::string test_guid("{f998f760-272b-6939-4c2beffe428697ac}"); |
+ OncNetworkParser parser(test_blob); |
+ ASSERT_EQ(1, parser.GetCertificatesSize()); |
+ |
+ scoped_refptr<net::X509Certificate> cert = parser.ParseCertificate(0).get(); |
+ EXPECT_TRUE(cert.get() != NULL); |
+ EXPECT_STREQ(test_guid.c_str(), cert->GetLabel().c_str()); |
+ |
+ SECKEYPublicKeyList* pubkey_list = |
+ PK11_ListPublicKeysInSlot(slot_->os_module_handle(), NULL); |
+ EXPECT_TRUE(pubkey_list); |
+ if (pubkey_list) { |
+ SECKEYPublicKeyListNode* node = PUBKEY_LIST_HEAD(pubkey_list); |
+ while (!PUBKEY_LIST_END(node, pubkey_list)) { |
+ EXPECT_STREQ(test_guid.c_str(), PK11_GetPublicKeyNickname(node->key)); |
+ node = PUBKEY_LIST_NEXT(node); |
+ } |
+ } |
+ SECKEY_DestroyPublicKeyList(pubkey_list); |
+ |
+ SECKEYPrivateKeyList* privkey_list = |
+ PK11_ListPrivKeysInSlot(slot_->os_module_handle(), NULL, NULL); |
+ EXPECT_TRUE(privkey_list); |
+ if (privkey_list) { |
+ SECKEYPrivateKeyListNode* node = PRIVKEY_LIST_HEAD(privkey_list); |
+ while (!PRIVKEY_LIST_END(node, privkey_list)) { |
+ EXPECT_STREQ(test_guid.c_str(), PK11_GetPrivateKeyNickname(node->key)); |
+ node = PRIVKEY_LIST_NEXT(node); |
+ } |
+ } |
+ SECKEY_DestroyPrivateKeyList(privkey_list); |
+ |
+ net::CertificateList result_list; |
+ cert_db_.ListCertsWithLabel(test_guid, &result_list); |
+ ASSERT_EQ(1ul, result_list.size()); |
+ EXPECT_EQ(net::USER_CERT, result_list[0]->GetCertificateType()); |
+} |
+ |
TEST_F(OncNetworkParserTest, TestAddServerCertificate) { |
std::string test_blob( |
"{" |
@@ -215,10 +299,26 @@ TEST_F(OncNetworkParserTest, TestAddServerCertificate) { |
" }" |
" ]," |
"}"); |
+ std::string test_guid("{f998f760-272b-6939-4c2beffe428697aa}"); |
OncNetworkParser parser(test_blob); |
+ ASSERT_EQ(1, parser.GetCertificatesSize()); |
+ |
+ scoped_refptr<net::X509Certificate> cert = parser.ParseCertificate(0).get(); |
+ EXPECT_TRUE(cert.get() != NULL); |
+ EXPECT_STREQ(test_guid.c_str(), cert->GetLabel().c_str()); |
+ |
+ SECKEYPrivateKeyList* privkey_list = |
+ PK11_ListPrivKeysInSlot(slot_->os_module_handle(), NULL, NULL); |
+ EXPECT_FALSE(privkey_list); |
- EXPECT_EQ(1, parser.GetCertificatesSize()); |
- EXPECT_TRUE(parser.ParseCertificate(0)); |
+ SECKEYPublicKeyList* pubkey_list = |
+ PK11_ListPublicKeysInSlot(slot_->os_module_handle(), NULL); |
+ EXPECT_FALSE(pubkey_list); |
+ |
+ net::CertificateList result_list; |
+ cert_db_.ListCertsWithLabel(test_guid, &result_list); |
+ ASSERT_EQ(1ul, result_list.size()); |
+ EXPECT_EQ(net::SERVER_CERT, result_list[0]->GetCertificateType()); |
} |
TEST_F(OncNetworkParserTest, TestAddAuthorityCertificate) { |
@@ -250,58 +350,26 @@ TEST_F(OncNetworkParserTest, TestAddAuthorityCertificate) { |
" }" |
" ]," |
"}"); |
+ std::string test_guid("{f998f760-272b-6939-4c2beffe428697ab}"); |
OncNetworkParser parser(test_blob); |
+ ASSERT_EQ(1, parser.GetCertificatesSize()); |
- EXPECT_EQ(1, parser.GetCertificatesSize()); |
- EXPECT_TRUE(parser.ParseCertificate(0)); |
-} |
+ scoped_refptr<net::X509Certificate> cert = parser.ParseCertificate(0).get(); |
+ EXPECT_TRUE(cert.get() != NULL); |
+ EXPECT_STREQ(test_guid.c_str(), cert->GetLabel().c_str()); |
-TEST_F(OncNetworkParserTest, TestAddClientCertificate) { |
- std::string test_blob( |
- "{" |
- " \"Certificates\": [" |
- " {" |
- " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697ac}\"," |
- " \"Type\": \"Client\"," |
- " \"PKCS12\": \"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\"" |
- " }" |
- " ]," |
- "}"); |
- OncNetworkParser parser(test_blob); |
+ SECKEYPrivateKeyList* privkey_list = |
+ PK11_ListPrivKeysInSlot(slot_->os_module_handle(), NULL, NULL); |
+ EXPECT_FALSE(privkey_list); |
+ |
+ SECKEYPublicKeyList* pubkey_list = |
+ PK11_ListPublicKeysInSlot(slot_->os_module_handle(), NULL); |
+ EXPECT_FALSE(pubkey_list); |
- EXPECT_EQ(1, parser.GetCertificatesSize()); |
- EXPECT_TRUE(parser.ParseCertificate(0)); |
+ net::CertificateList result_list; |
+ cert_db_.ListCertsWithLabel(test_guid, &result_list); |
+ ASSERT_EQ(1ul, result_list.size()); |
+ EXPECT_EQ(net::CA_CERT, result_list[0]->GetCertificateType()); |
} |
} // namespace chromeos |