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

Side by Side Diff: webrtc/p2p/base/transport_unittest.cc

Issue 1856943002: Allow TransportController to create a QuicTransportChannel (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Sync to upstream Created 4 years, 7 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
« no previous file with comments | « webrtc/p2p/base/transport.cc ('k') | webrtc/p2p/base/transportcontroller.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2011 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 rtc::CreateRandomString(cricket::ICE_PWD_LENGTH), cricket::ICEMODE_FULL, 228 rtc::CreateRandomString(cricket::ICE_PWD_LENGTH), cricket::ICEMODE_FULL,
229 cricket::CONNECTIONROLE_NONE, nullptr); 229 cricket::CONNECTIONROLE_NONE, nullptr);
230 transport_->SetLocalTransportDescription(faketransport_desc, 230 transport_->SetLocalTransportDescription(faketransport_desc,
231 cricket::CA_OFFER, nullptr); 231 cricket::CA_OFFER, nullptr);
232 transport_->ConnectChannels(); 232 transport_->ConnectChannels();
233 EXPECT_TRUE(transport_->GetStats(&stats)); 233 EXPECT_TRUE(transport_->GetStats(&stats));
234 ASSERT_EQ(1U, stats.channel_stats.size()); 234 ASSERT_EQ(1U, stats.channel_stats.size());
235 EXPECT_EQ(1, stats.channel_stats[0].component); 235 EXPECT_EQ(1, stats.channel_stats[0].component);
236 } 236 }
237 237
238 // Tests that VerifyCertificateFingerprint only returns true when the
239 // certificate matches the fingerprint.
240 TEST_F(TransportTest, TestVerifyCertificateFingerprint) {
241 std::string error_desc;
242 EXPECT_FALSE(
243 transport_->VerifyCertificateFingerprint(nullptr, nullptr, &error_desc));
244 rtc::KeyType key_types[] = {rtc::KT_RSA, rtc::KT_ECDSA};
245
246 for (auto& key_type : key_types) {
247 rtc::scoped_refptr<rtc::RTCCertificate> certificate =
248 rtc::RTCCertificate::Create(rtc::scoped_ptr<rtc::SSLIdentity>(
249 rtc::SSLIdentity::Generate("testing", key_type)));
250 ASSERT_NE(nullptr, certificate);
251
252 std::string digest_algorithm;
253 ASSERT_TRUE(certificate->ssl_certificate().GetSignatureDigestAlgorithm(
254 &digest_algorithm));
255 ASSERT_FALSE(digest_algorithm.empty());
256 rtc::scoped_ptr<rtc::SSLFingerprint> good_fingerprint(
257 rtc::SSLFingerprint::Create(digest_algorithm, certificate->identity()));
258 ASSERT_NE(nullptr, good_fingerprint);
259
260 EXPECT_TRUE(transport_->VerifyCertificateFingerprint(
261 certificate.get(), good_fingerprint.get(), &error_desc));
262 EXPECT_FALSE(transport_->VerifyCertificateFingerprint(
263 certificate.get(), nullptr, &error_desc));
264 EXPECT_FALSE(transport_->VerifyCertificateFingerprint(
265 nullptr, good_fingerprint.get(), &error_desc));
266
267 rtc::SSLFingerprint bad_fingerprint = *good_fingerprint;
268 bad_fingerprint.digest.AppendData("0", 1);
269 EXPECT_FALSE(transport_->VerifyCertificateFingerprint(
270 certificate.get(), &bad_fingerprint, &error_desc));
271 }
272 }
273
274 // Tests that NegotiateRole sets the SSL role correctly.
275 TEST_F(TransportTest, TestNegotiateRole) {
276 TransportDescription local_desc(kIceUfrag1, kIcePwd1);
277 TransportDescription remote_desc(kIceUfrag2, kIcePwd2);
278
279 struct NegotiateRoleParams {
280 cricket::ConnectionRole local_role;
281 cricket::ConnectionRole remote_role;
282 cricket::ContentAction local_action;
283 cricket::ContentAction remote_action;
284 };
285
286 rtc::SSLRole ssl_role;
287 std::string error_desc;
288
289 // Parameters which set the SSL role to SSL_CLIENT.
290 NegotiateRoleParams valid_client_params[] = {
291 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTPASS,
292 cricket::CA_ANSWER, cricket::CA_OFFER},
293 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTPASS,
294 cricket::CA_PRANSWER, cricket::CA_OFFER},
295 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_PASSIVE,
296 cricket::CA_OFFER, cricket::CA_ANSWER},
297 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_PASSIVE,
298 cricket::CA_OFFER, cricket::CA_PRANSWER}};
299
300 for (auto& param : valid_client_params) {
301 local_desc.connection_role = param.local_role;
302 remote_desc.connection_role = param.remote_role;
303
304 ASSERT_TRUE(transport_->SetRemoteTransportDescription(
305 remote_desc, param.remote_action, nullptr));
306 ASSERT_TRUE(transport_->SetLocalTransportDescription(
307 local_desc, param.local_action, nullptr));
308 EXPECT_TRUE(
309 transport_->NegotiateRole(param.local_action, &ssl_role, &error_desc));
310 EXPECT_EQ(rtc::SSL_CLIENT, ssl_role);
311 }
312
313 // Parameters which set the SSL role to SSL_SERVER.
314 NegotiateRoleParams valid_server_params[] = {
315 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTPASS,
316 cricket::CA_ANSWER, cricket::CA_OFFER},
317 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTPASS,
318 cricket::CA_PRANSWER, cricket::CA_OFFER},
319 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTIVE,
320 cricket::CA_OFFER, cricket::CA_ANSWER},
321 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTIVE,
322 cricket::CA_OFFER, cricket::CA_PRANSWER}};
323
324 for (auto& param : valid_server_params) {
325 local_desc.connection_role = param.local_role;
326 remote_desc.connection_role = param.remote_role;
327
328 ASSERT_TRUE(transport_->SetRemoteTransportDescription(
329 remote_desc, param.remote_action, nullptr));
330 ASSERT_TRUE(transport_->SetLocalTransportDescription(
331 local_desc, param.local_action, nullptr));
332 EXPECT_TRUE(
333 transport_->NegotiateRole(param.local_action, &ssl_role, &error_desc));
334 EXPECT_EQ(rtc::SSL_SERVER, ssl_role);
335 }
336
337 // Invalid parameters due to both peers having a duplicate role.
338 NegotiateRoleParams duplicate_params[] = {
339 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTIVE,
340 cricket::CA_ANSWER, cricket::CA_OFFER},
341 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTPASS,
342 cricket::CA_ANSWER, cricket::CA_OFFER},
343 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_PASSIVE,
344 cricket::CA_ANSWER, cricket::CA_OFFER},
345 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTIVE,
346 cricket::CA_PRANSWER, cricket::CA_OFFER},
347 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTPASS,
348 cricket::CA_PRANSWER, cricket::CA_OFFER},
349 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_PASSIVE,
350 cricket::CA_PRANSWER, cricket::CA_OFFER},
351 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTIVE,
352 cricket::CA_OFFER, cricket::CA_ANSWER},
353 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTPASS,
354 cricket::CA_OFFER, cricket::CA_ANSWER},
355 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_PASSIVE,
356 cricket::CA_OFFER, cricket::CA_ANSWER},
357 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTIVE,
358 cricket::CA_OFFER, cricket::CA_PRANSWER},
359 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTPASS,
360 cricket::CA_OFFER, cricket::CA_PRANSWER},
361 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_PASSIVE,
362 cricket::CA_OFFER, cricket::CA_PRANSWER}};
363
364 for (auto& param : duplicate_params) {
365 local_desc.connection_role = param.local_role;
366 remote_desc.connection_role = param.remote_role;
367
368 ASSERT_TRUE(transport_->SetRemoteTransportDescription(
369 remote_desc, param.remote_action, nullptr));
370 ASSERT_TRUE(transport_->SetLocalTransportDescription(
371 local_desc, param.local_action, nullptr));
372 EXPECT_FALSE(
373 transport_->NegotiateRole(param.local_action, &ssl_role, &error_desc));
374 }
375
376 // Invalid parameters due to the offerer not using ACTPASS.
377 NegotiateRoleParams offerer_without_actpass_params[] = {
378 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_PASSIVE,
379 cricket::CA_ANSWER, cricket::CA_OFFER},
380 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTIVE,
381 cricket::CA_ANSWER, cricket::CA_OFFER},
382 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_PASSIVE,
383 cricket::CA_ANSWER, cricket::CA_OFFER},
384 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_PASSIVE,
385 cricket::CA_PRANSWER, cricket::CA_OFFER},
386 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTIVE,
387 cricket::CA_PRANSWER, cricket::CA_OFFER},
388 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_PASSIVE,
389 cricket::CA_PRANSWER, cricket::CA_OFFER},
390 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_PASSIVE,
391 cricket::CA_OFFER, cricket::CA_ANSWER},
392 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTIVE,
393 cricket::CA_OFFER, cricket::CA_ANSWER},
394 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTPASS,
395 cricket::CA_OFFER, cricket::CA_ANSWER},
396 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_PASSIVE,
397 cricket::CA_OFFER, cricket::CA_PRANSWER},
398 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTIVE,
399 cricket::CA_OFFER, cricket::CA_PRANSWER},
400 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTPASS,
401 cricket::CA_OFFER, cricket::CA_PRANSWER}};
402
403 for (auto& param : offerer_without_actpass_params) {
404 local_desc.connection_role = param.local_role;
405 remote_desc.connection_role = param.remote_role;
406
407 ASSERT_TRUE(transport_->SetRemoteTransportDescription(
408 remote_desc, param.remote_action, nullptr));
409 ASSERT_TRUE(transport_->SetLocalTransportDescription(
410 local_desc, param.local_action, nullptr));
411 EXPECT_FALSE(
412 transport_->NegotiateRole(param.local_action, &ssl_role, &error_desc));
413 }
414 }
OLDNEW
« no previous file with comments | « webrtc/p2p/base/transport.cc ('k') | webrtc/p2p/base/transportcontroller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698