Chromium Code Reviews| Index: net/base/origin_bound_cert_service_unittest.cc |
| diff --git a/net/base/origin_bound_cert_service_unittest.cc b/net/base/origin_bound_cert_service_unittest.cc |
| index 1adedfaa350cbd8d96f06157b49709c5b472db0d..a62ba8456556b79eae52ee9d499ba14b2b6c20b9 100644 |
| --- a/net/base/origin_bound_cert_service_unittest.cc |
| +++ b/net/base/origin_bound_cert_service_unittest.cc |
| @@ -457,6 +457,56 @@ TEST(OriginBoundCertServiceTest, CancelRequest) { |
| EXPECT_EQ(6, service->cert_count()); |
| } |
| +TEST(OriginBoundCertServiceTest, Expiration) { |
| + OriginBoundCertStore* store = new DefaultOriginBoundCertStore(NULL); |
| + store->SetOriginBoundCert("https://good", |
| + CLIENT_CERT_RSA_SIGN, |
| + base::Time::Now() + base::TimeDelta::FromDays(1), |
| + "a", |
| + "b"); |
| + store->SetOriginBoundCert("https://expired", |
| + CLIENT_CERT_RSA_SIGN, |
| + base::Time::Now() - base::TimeDelta::FromDays(1), |
| + "c", |
| + "d"); |
| + scoped_ptr<OriginBoundCertService> service(new OriginBoundCertService(store)); |
|
wtc
2011/12/15 03:18:51
Nit: 'service' can be allocated on the stack:
Or
mattm
2011/12/20 00:28:38
Done.
|
| + EXPECT_EQ(2, service->cert_count()); |
| + |
| + int error; |
| + std::vector<uint8> types; |
| + types.push_back(CLIENT_CERT_RSA_SIGN); |
| + TestCompletionCallback callback; |
| + OriginBoundCertService::RequestHandle request_handle; |
| + |
| + // Cert still valid - synchronous completion. |
| + SSLClientCertType type1; |
| + std::string private_key_info1, der_cert1; |
| + error = service->GetOriginBoundCert( |
| + "https://good", types, &type1, &private_key_info1, &der_cert1, |
| + callback.callback(), &request_handle); |
| + EXPECT_TRUE(request_handle == NULL); |
| + EXPECT_EQ(OK, error); |
|
wtc
2011/12/15 03:18:51
Nit: please test 'error' (the return value) before
mattm
2011/12/20 00:28:38
Done.
|
| + EXPECT_EQ(2, service->cert_count()); |
| + EXPECT_EQ(CLIENT_CERT_RSA_SIGN, type1); |
| + EXPECT_STREQ("a", private_key_info1.c_str()); |
| + EXPECT_STREQ("b", der_cert1.c_str()); |
| + |
| + // Cert expired - New cert will be generated, asynchronous completion. |
| + SSLClientCertType type2; |
| + std::string private_key_info2, der_cert2; |
| + error = service->GetOriginBoundCert( |
| + "https://expired", types, &type2, &private_key_info2, &der_cert2, |
| + callback.callback(), &request_handle); |
| + EXPECT_EQ(ERR_IO_PENDING, error); |
| + EXPECT_TRUE(request_handle != NULL); |
| + error = callback.WaitForResult(); |
| + EXPECT_EQ(OK, error); |
| + EXPECT_EQ(2, service->cert_count()); |
| + EXPECT_EQ(CLIENT_CERT_RSA_SIGN, type2); |
| + EXPECT_LT(1U, private_key_info2.size()); |
| + EXPECT_LT(1U, der_cert2.size()); |
| +} |
| + |
| #endif // !defined(USE_OPENSSL) |
| } // namespace |