1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file. 4ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include <deque> 6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 7ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "content/common/media/webrtc_identity_messages.h" 8ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "content/renderer/media/webrtc_identity_service.h" 9ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "ipc/ipc_message.h" 10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "testing/gtest/include/gtest/gtest.h" 11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 12ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace content { 13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace { 15ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstatic const char FAKE_ORIGIN[] = "http://fake.com"; 17ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstatic const char FAKE_IDENTITY_NAME[] = "fake identity"; 18ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstatic const char FAKE_COMMON_NAME[] = "fake common name"; 19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstatic const char FAKE_CERTIFICATE[] = "fake cert"; 20ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstatic const char FAKE_PRIVATE_KEY[] = "fake private key"; 21ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstatic const int FAKE_ERROR = 100; 22ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 23ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass WebRTCIdentityServiceForTest : public WebRTCIdentityService { 24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch public: 25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual bool Send(IPC::Message* message) OVERRIDE { 26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch messages_.push_back(*message); 27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch delete message; 28ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch return true; 29ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 30ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 31ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE { 32ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch return WebRTCIdentityService::OnControlMessageReceived(message); 33ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 34ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC::Message GetLastMessage() { return messages_.back(); } 36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 37ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch int GetNumberOfMessages() { return messages_.size(); } 38ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void ClearMessages() { messages_.clear(); } 40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 41ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch private: 42ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch std::deque<IPC::Message> messages_; 43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}; 44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass WebRTCIdentityServiceTest : public ::testing::Test { 46ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch public: 47ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebRTCIdentityServiceTest() 48ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch : service_(new WebRTCIdentityServiceForTest()), last_error_(0) {} 49ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 50ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch protected: 51ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void OnIdentityReady(const std::string& cert, const std::string& key) { 52ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch last_certificate_ = cert; 53ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch last_private_key_ = key; 54ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 55ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 56ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void OnRequestFailed(int error) { last_error_ = error; } 57ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 58ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void ResetRequestResult() { 59ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch last_certificate_ = ""; 60ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch last_private_key_ = ""; 61ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch last_error_ = 0; 62ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 63ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 64ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch int RequestIdentity() { 65ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch return service_->RequestIdentity( 66ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GURL(FAKE_ORIGIN), 67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch FAKE_IDENTITY_NAME, 68ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch FAKE_COMMON_NAME, 69ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch base::Bind(&WebRTCIdentityServiceTest::OnIdentityReady, 70ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch base::Unretained(this)), 71ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch base::Bind(&WebRTCIdentityServiceTest::OnRequestFailed, 72ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch base::Unretained(this))); 73ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 74ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 75ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch scoped_ptr<WebRTCIdentityServiceForTest> service_; 76ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch std::string last_certificate_; 77ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch std::string last_private_key_; 78ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch int last_error_; 79ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}; 80ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 81ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} // namespace 82ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 83ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(WebRTCIdentityServiceTest, TestSendRequest) { 84ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 85ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 86ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC::Message ipc = service_->GetLastMessage(); 87ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(ipc.type(), WebRTCIdentityMsg_RequestIdentity::ID); 88ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 89ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 90ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(WebRTCIdentityServiceTest, TestSuccessCallback) { 91ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 92ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 93ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->OnControlMessageReceived( 94ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); 95ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(FAKE_CERTIFICATE, last_certificate_); 96ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(FAKE_PRIVATE_KEY, last_private_key_); 97ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 98ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 99ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(WebRTCIdentityServiceTest, TestFailureCallback) { 100ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 101ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 102ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->OnControlMessageReceived( 103ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebRTCIdentityHostMsg_RequestFailed(FAKE_ERROR)); 104ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(FAKE_ERROR, last_error_); 105ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 106ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 107ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(WebRTCIdentityServiceTest, TestCancelRequest) { 108ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch int request_id = RequestIdentity(); 109ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->ClearMessages(); 110ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 111ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->CancelRequest(request_id); 112ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 113ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC::Message ipc = service_->GetLastMessage(); 114ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(ipc.type(), WebRTCIdentityMsg_CancelRequest::ID); 115ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 116ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 117ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(WebRTCIdentityServiceTest, TestQueuedRequestSentAfterSuccess) { 118ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 119ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 120ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(1, service_->GetNumberOfMessages()); 121ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->ClearMessages(); 122ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 123ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->OnControlMessageReceived( 124ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); 125ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 126ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC::Message ipc = service_->GetLastMessage(); 127ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(ipc.type(), WebRTCIdentityMsg_RequestIdentity::ID); 128ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 129ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 130ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(WebRTCIdentityServiceTest, TestQueuedRequestSentAfterFailure) { 131ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 132ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 133ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(1, service_->GetNumberOfMessages()); 134ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->ClearMessages(); 135ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 136ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->OnControlMessageReceived( 137ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebRTCIdentityHostMsg_RequestFailed(FAKE_ERROR)); 138ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 139ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC::Message ipc = service_->GetLastMessage(); 140ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(ipc.type(), WebRTCIdentityMsg_RequestIdentity::ID); 141ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 142ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 143ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(WebRTCIdentityServiceTest, TestQueuedRequestSentAfterCancelOutstanding) { 144ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch int outstand_request_id = RequestIdentity(); 145ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 146ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 147ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(1, service_->GetNumberOfMessages()); 148ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->ClearMessages(); 149ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 150ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->CancelRequest(outstand_request_id); 151ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 152ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Should have two messages sent: one for cancelling the outstanding request, 153ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // one for requesting the queued request. 154ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(2, service_->GetNumberOfMessages()); 155ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC::Message ipc = service_->GetLastMessage(); 156ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(ipc.type(), WebRTCIdentityMsg_RequestIdentity::ID); 157ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 158ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 159ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(WebRTCIdentityServiceTest, TestCancelQueuedRequest) { 160ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 161ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch int queued_request_id = RequestIdentity(); 162ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(1, service_->GetNumberOfMessages()); 163ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->ClearMessages(); 164ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 165ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->CancelRequest(queued_request_id); 166ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 167ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Verifies that the queued request is not sent after the outstanding request 168ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // returns. 169ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->OnControlMessageReceived( 170ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); 171ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 172ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(0, service_->GetNumberOfMessages()); 173ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 174ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 175ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(WebRTCIdentityServiceTest, TestQueuedRequestSuccessCallback) { 176ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 177ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 178ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 179ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Completes the outstanding request. 180ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->OnControlMessageReceived( 181ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); 182ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(FAKE_CERTIFICATE, last_certificate_); 183ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(FAKE_PRIVATE_KEY, last_private_key_); 184ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 185ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ResetRequestResult(); 186ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 187ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->OnControlMessageReceived( 188ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); 189ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(FAKE_CERTIFICATE, last_certificate_); 190ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(FAKE_PRIVATE_KEY, last_private_key_); 191ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 192ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 193ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(WebRTCIdentityServiceTest, TestQueuedRequestFailureCallback) { 194ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 195ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RequestIdentity(); 196ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 197ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Completes the outstanding request. 198ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->OnControlMessageReceived( 199ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); 200ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(FAKE_CERTIFICATE, last_certificate_); 201ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(FAKE_PRIVATE_KEY, last_private_key_); 202ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 203ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ResetRequestResult(); 204ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 205ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch service_->OnControlMessageReceived( 206ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebRTCIdentityHostMsg_RequestFailed(FAKE_ERROR)); 207ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(FAKE_ERROR, last_error_); 208ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 209ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 210ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} // namespace content 211