| Index: talk/app/webrtc/dtlsidentitystore_unittest.cc
|
| diff --git a/talk/app/webrtc/dtlsidentitystore_unittest.cc b/talk/app/webrtc/dtlsidentitystore_unittest.cc
|
| index 12f58feea56a12e4743c879298f620202ce13375..3e21a47fd5768eb101e2e24718953d919b081d4a 100644
|
| --- a/talk/app/webrtc/dtlsidentitystore_unittest.cc
|
| +++ b/talk/app/webrtc/dtlsidentitystore_unittest.cc
|
| @@ -32,12 +32,12 @@
|
| #include "webrtc/base/logging.h"
|
| #include "webrtc/base/ssladapter.h"
|
|
|
| -using webrtc::DtlsIdentityStore;
|
| +using webrtc::DtlsIdentityStoreImpl;
|
|
|
| static const int kTimeoutMs = 10000;
|
|
|
| class MockDtlsIdentityRequestObserver :
|
| - public webrtc::DTLSIdentityRequestObserver {
|
| + public webrtc::DtlsIdentityRequestObserver {
|
| public:
|
| MockDtlsIdentityRequestObserver()
|
| : call_back_called_(false), last_request_success_(false) {}
|
| @@ -47,12 +47,11 @@ class MockDtlsIdentityRequestObserver :
|
| last_request_success_ = false;
|
| }
|
| void OnSuccess(const std::string& der_cert,
|
| - const std::string& der_private_key) {
|
| + const std::string& der_private_key) override {
|
| LOG(LS_WARNING) << "The string version of OnSuccess is called unexpectedly";
|
| EXPECT_TRUE(false);
|
| }
|
| - void OnSuccessWithIdentityObj(
|
| - rtc::scoped_ptr<rtc::SSLIdentity> identity) override {
|
| + void OnSuccess(rtc::scoped_ptr<rtc::SSLIdentity> identity) override {
|
| EXPECT_FALSE(call_back_called_);
|
| call_back_called_ = true;
|
| last_request_success_ = true;
|
| @@ -80,12 +79,11 @@ class DtlsIdentityStoreTest : public testing::Test {
|
| protected:
|
| DtlsIdentityStoreTest()
|
| : worker_thread_(new rtc::Thread()),
|
| - store_(new DtlsIdentityStore(rtc::Thread::Current(),
|
| - worker_thread_.get())),
|
| + store_(new DtlsIdentityStoreImpl(rtc::Thread::Current(),
|
| + worker_thread_.get())),
|
| observer_(
|
| new rtc::RefCountedObject<MockDtlsIdentityRequestObserver>()) {
|
| CHECK(worker_thread_->Start());
|
| - store_->Initialize();
|
| }
|
| ~DtlsIdentityStoreTest() {}
|
|
|
| @@ -97,30 +95,55 @@ class DtlsIdentityStoreTest : public testing::Test {
|
| }
|
|
|
| rtc::scoped_ptr<rtc::Thread> worker_thread_;
|
| - rtc::scoped_ptr<DtlsIdentityStore> store_;
|
| + rtc::scoped_ptr<DtlsIdentityStoreImpl> store_;
|
| rtc::scoped_refptr<MockDtlsIdentityRequestObserver> observer_;
|
| };
|
|
|
| -TEST_F(DtlsIdentityStoreTest, RequestIdentitySuccess) {
|
| - EXPECT_TRUE_WAIT(store_->HasFreeIdentityForTesting(), kTimeoutMs);
|
| +TEST_F(DtlsIdentityStoreTest, RequestIdentitySuccessRSA) {
|
| + EXPECT_TRUE_WAIT(store_->HasFreeIdentityForTesting(rtc::KT_RSA), kTimeoutMs);
|
|
|
| - store_->RequestIdentity(observer_.get());
|
| + store_->RequestIdentity(rtc::KT_RSA, observer_.get());
|
| EXPECT_TRUE_WAIT(observer_->LastRequestSucceeded(), kTimeoutMs);
|
|
|
| - EXPECT_TRUE_WAIT(store_->HasFreeIdentityForTesting(), kTimeoutMs);
|
| + EXPECT_TRUE_WAIT(store_->HasFreeIdentityForTesting(rtc::KT_RSA), kTimeoutMs);
|
|
|
| observer_->Reset();
|
|
|
| // Verifies that the callback is async when a free identity is ready.
|
| - store_->RequestIdentity(observer_.get());
|
| + store_->RequestIdentity(rtc::KT_RSA, observer_.get());
|
| EXPECT_FALSE(observer_->call_back_called());
|
| EXPECT_TRUE_WAIT(observer_->LastRequestSucceeded(), kTimeoutMs);
|
| }
|
|
|
| -TEST_F(DtlsIdentityStoreTest, DeleteStoreEarlyNoCrash) {
|
| - EXPECT_FALSE(store_->HasFreeIdentityForTesting());
|
| +TEST_F(DtlsIdentityStoreTest, RequestIdentitySuccessECDSA) {
|
| + // Since store currently does not preemptively generate free ECDSA identities
|
| + // we do not invoke HasFreeIdentityForTesting between requests.
|
|
|
| - store_->RequestIdentity(observer_.get());
|
| + store_->RequestIdentity(rtc::KT_ECDSA, observer_.get());
|
| + EXPECT_TRUE_WAIT(observer_->LastRequestSucceeded(), kTimeoutMs);
|
| +
|
| + observer_->Reset();
|
| +
|
| + // Verifies that the callback is async when a free identity is ready.
|
| + store_->RequestIdentity(rtc::KT_ECDSA, observer_.get());
|
| + EXPECT_FALSE(observer_->call_back_called());
|
| + EXPECT_TRUE_WAIT(observer_->LastRequestSucceeded(), kTimeoutMs);
|
| +}
|
| +
|
| +TEST_F(DtlsIdentityStoreTest, DeleteStoreEarlyNoCrashRSA) {
|
| + EXPECT_FALSE(store_->HasFreeIdentityForTesting(rtc::KT_RSA));
|
| +
|
| + store_->RequestIdentity(rtc::KT_RSA, observer_.get());
|
| + store_.reset();
|
| +
|
| + worker_thread_->Stop();
|
| + EXPECT_FALSE(observer_->call_back_called());
|
| +}
|
| +
|
| +TEST_F(DtlsIdentityStoreTest, DeleteStoreEarlyNoCrashECDSA) {
|
| + EXPECT_FALSE(store_->HasFreeIdentityForTesting(rtc::KT_ECDSA));
|
| +
|
| + store_->RequestIdentity(rtc::KT_ECDSA, observer_.get());
|
| store_.reset();
|
|
|
| worker_thread_->Stop();
|
|
|