Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(203)

Side by Side Diff: remoting/protocol/v2_authenticator_unittest.cc

Issue 9240033: Use scoped_ptr<>.Pass() to pass ownership in the remoting protocol code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/protocol/v2_authenticator.h" 5 #include "remoting/protocol/v2_authenticator.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 std::vector<uint8> key_vector( 68 std::vector<uint8> key_vector(
69 reinterpret_cast<const uint8*>(key_string.data()), 69 reinterpret_cast<const uint8*>(key_string.data()),
70 reinterpret_cast<const uint8*>(key_string.data() + 70 reinterpret_cast<const uint8*>(key_string.data() +
71 key_string.length())); 71 key_string.length()));
72 private_key_.reset( 72 private_key_.reset(
73 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(key_vector)); 73 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(key_vector));
74 } 74 }
75 75
76 void InitAuthenticators(const std::string& client_secret, 76 void InitAuthenticators(const std::string& client_secret,
77 const std::string& host_secret) { 77 const std::string& host_secret) {
78 host_.reset(V2Authenticator::CreateForHost( 78 host_ = V2Authenticator::CreateForHost(
79 host_cert_, *private_key_, host_secret)); 79 host_cert_, *private_key_, host_secret);
80 client_.reset(V2Authenticator::CreateForClient(client_secret)); 80 client_ = V2Authenticator::CreateForClient(client_secret);
81 } 81 }
82 82
83 void RunAuthExchange() { 83 void RunAuthExchange() {
84 do { 84 do {
85 scoped_ptr<buzz::XmlElement> message; 85 scoped_ptr<buzz::XmlElement> message;
86 86
87 // Pass message from client to host. 87 // Pass message from client to host.
88 ASSERT_EQ(Authenticator::MESSAGE_READY, client_->state()); 88 ASSERT_EQ(Authenticator::MESSAGE_READY, client_->state());
89 message.reset(client_->GetNextMessage()); 89 message = client_->GetNextMessage();
90 ASSERT_TRUE(message.get()); 90 ASSERT_TRUE(message.get());
91 ASSERT_NE(Authenticator::MESSAGE_READY, client_->state()); 91 ASSERT_NE(Authenticator::MESSAGE_READY, client_->state());
92 92
93 ASSERT_EQ(Authenticator::WAITING_MESSAGE, host_->state()); 93 ASSERT_EQ(Authenticator::WAITING_MESSAGE, host_->state());
94 host_->ProcessMessage(message.get()); 94 host_->ProcessMessage(message.get());
95 ASSERT_NE(Authenticator::WAITING_MESSAGE, host_->state()); 95 ASSERT_NE(Authenticator::WAITING_MESSAGE, host_->state());
96 96
97 // Are we done yet? 97 // Are we done yet?
98 if (host_->state() == Authenticator::ACCEPTED || 98 if (host_->state() == Authenticator::ACCEPTED ||
99 host_->state() == Authenticator::REJECTED) { 99 host_->state() == Authenticator::REJECTED) {
100 break; 100 break;
101 } 101 }
102 102
103 // Pass message from host to client. 103 // Pass message from host to client.
104 ASSERT_EQ(Authenticator::MESSAGE_READY, host_->state()); 104 ASSERT_EQ(Authenticator::MESSAGE_READY, host_->state());
105 message.reset(host_->GetNextMessage()); 105 message = host_->GetNextMessage();
106 ASSERT_TRUE(message.get()); 106 ASSERT_TRUE(message.get());
107 ASSERT_NE(Authenticator::MESSAGE_READY, host_->state()); 107 ASSERT_NE(Authenticator::MESSAGE_READY, host_->state());
108 108
109 ASSERT_EQ(Authenticator::WAITING_MESSAGE, client_->state()); 109 ASSERT_EQ(Authenticator::WAITING_MESSAGE, client_->state());
110 client_->ProcessMessage(message.get()); 110 client_->ProcessMessage(message.get());
111 ASSERT_NE(Authenticator::WAITING_MESSAGE, client_->state()); 111 ASSERT_NE(Authenticator::WAITING_MESSAGE, client_->state());
112 } while (client_->state() != Authenticator::ACCEPTED && 112 } while (client_->state() != Authenticator::ACCEPTED &&
113 client_->state() != Authenticator::REJECTED); 113 client_->state() != Authenticator::REJECTED);
114 } 114 }
115 115
(...skipping 27 matching lines...) Expand all
143 message_loop_.RunAllPending(); 143 message_loop_.RunAllPending();
144 144
145 client_socket_.reset(client_socket); 145 client_socket_.reset(client_socket);
146 host_socket_.reset(host_socket); 146 host_socket_.reset(host_socket);
147 } 147 }
148 148
149 MessageLoop message_loop_; 149 MessageLoop message_loop_;
150 150
151 scoped_ptr<crypto::RSAPrivateKey> private_key_; 151 scoped_ptr<crypto::RSAPrivateKey> private_key_;
152 std::string host_cert_; 152 std::string host_cert_;
153 scoped_ptr<V2Authenticator> host_; 153 scoped_ptr<Authenticator> host_;
154 scoped_ptr<V2Authenticator> client_; 154 scoped_ptr<Authenticator> client_;
155 scoped_ptr<FakeSocket> client_fake_socket_; 155 scoped_ptr<FakeSocket> client_fake_socket_;
156 scoped_ptr<FakeSocket> host_fake_socket_; 156 scoped_ptr<FakeSocket> host_fake_socket_;
157 scoped_ptr<ChannelAuthenticator> client_auth_; 157 scoped_ptr<ChannelAuthenticator> client_auth_;
158 scoped_ptr<ChannelAuthenticator> host_auth_; 158 scoped_ptr<ChannelAuthenticator> host_auth_;
159 MockChannelDoneCallback client_callback_; 159 MockChannelDoneCallback client_callback_;
160 MockChannelDoneCallback host_callback_; 160 MockChannelDoneCallback host_callback_;
161 scoped_ptr<net::StreamSocket> client_socket_; 161 scoped_ptr<net::StreamSocket> client_socket_;
162 scoped_ptr<net::StreamSocket> host_socket_; 162 scoped_ptr<net::StreamSocket> host_socket_;
163 163
164 DISALLOW_COPY_AND_ASSIGN(V2AuthenticatorTest); 164 DISALLOW_COPY_AND_ASSIGN(V2AuthenticatorTest);
165 }; 165 };
166 166
167 TEST_F(V2AuthenticatorTest, SuccessfulAuth) { 167 TEST_F(V2AuthenticatorTest, SuccessfulAuth) {
168 ASSERT_NO_FATAL_FAILURE( 168 ASSERT_NO_FATAL_FAILURE(
169 InitAuthenticators(kTestSharedSecret, kTestSharedSecret)); 169 InitAuthenticators(kTestSharedSecret, kTestSharedSecret));
170 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); 170 ASSERT_NO_FATAL_FAILURE(RunAuthExchange());
171 171
172 ASSERT_EQ(Authenticator::ACCEPTED, host_->state()); 172 ASSERT_EQ(Authenticator::ACCEPTED, host_->state());
173 ASSERT_EQ(Authenticator::ACCEPTED, client_->state()); 173 ASSERT_EQ(Authenticator::ACCEPTED, client_->state());
174 174
175 client_auth_.reset(client_->CreateChannelAuthenticator()); 175 client_auth_ = client_->CreateChannelAuthenticator();
176 host_auth_.reset(host_->CreateChannelAuthenticator()); 176 host_auth_ = host_->CreateChannelAuthenticator();
177 RunChannelAuth(false); 177 RunChannelAuth(false);
178 178
179 EXPECT_TRUE(client_socket_.get() != NULL); 179 EXPECT_TRUE(client_socket_.get() != NULL);
180 EXPECT_TRUE(host_socket_.get() != NULL); 180 EXPECT_TRUE(host_socket_.get() != NULL);
181 181
182 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), 182 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(),
183 kMessageSize, kMessages); 183 kMessageSize, kMessages);
184 184
185 tester.Start(); 185 tester.Start();
186 message_loop_.Run(); 186 message_loop_.Run();
187 tester.CheckResults(); 187 tester.CheckResults();
188 } 188 }
189 189
190 // Verify that connection is rejected when secrets don't match. 190 // Verify that connection is rejected when secrets don't match.
191 TEST_F(V2AuthenticatorTest, InvalidSecret) { 191 TEST_F(V2AuthenticatorTest, InvalidSecret) {
192 ASSERT_NO_FATAL_FAILURE( 192 ASSERT_NO_FATAL_FAILURE(
193 InitAuthenticators(kTestSharedSecretBad, kTestSharedSecret)); 193 InitAuthenticators(kTestSharedSecretBad, kTestSharedSecret));
194 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); 194 ASSERT_NO_FATAL_FAILURE(RunAuthExchange());
195 195
196 ASSERT_EQ(Authenticator::REJECTED, client_->state()); 196 ASSERT_EQ(Authenticator::REJECTED, client_->state());
197 197
198 // Change |client_| so that we can get the laste message. 198 // Change |client_| so that we can get the last message.
199 client_->state_ = Authenticator::MESSAGE_READY; 199 reinterpret_cast<V2Authenticator*>(client_.get())->state_ =
Wez 2012/01/19 23:23:41 All this up/down-casting complication seems unfort
Sergey Ulanov 2012/01/19 23:50:26 I already talked about it with Albert. The best po
200 Authenticator::MESSAGE_READY;
200 201
201 scoped_ptr<buzz::XmlElement> message(client_->GetNextMessage()); 202 scoped_ptr<buzz::XmlElement> message(client_->GetNextMessage());
202 ASSERT_TRUE(message.get()); 203 ASSERT_TRUE(message.get());
203 204
204 ASSERT_EQ(Authenticator::WAITING_MESSAGE, client_->state()); 205 ASSERT_EQ(Authenticator::WAITING_MESSAGE, client_->state());
205 host_->ProcessMessage(message.get()); 206 host_->ProcessMessage(message.get());
206 ASSERT_EQ(Authenticator::REJECTED, host_->state()); 207 ASSERT_EQ(Authenticator::REJECTED, host_->state());
207 } 208 }
208 209
209 } // namespace protocol 210 } // namespace protocol
210 } // namespace remoting 211 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698