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