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

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: Add unit tests to Transport Created 4 years, 8 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
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 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 rtc::CreateRandomString(cricket::ICE_PWD_LENGTH), cricket::ICEMODE_FULL, 226 rtc::CreateRandomString(cricket::ICE_PWD_LENGTH), cricket::ICEMODE_FULL,
227 cricket::CONNECTIONROLE_NONE, nullptr); 227 cricket::CONNECTIONROLE_NONE, nullptr);
228 transport_->SetLocalTransportDescription(faketransport_desc, 228 transport_->SetLocalTransportDescription(faketransport_desc,
229 cricket::CA_OFFER, nullptr); 229 cricket::CA_OFFER, nullptr);
230 transport_->ConnectChannels(); 230 transport_->ConnectChannels();
231 EXPECT_TRUE(transport_->GetStats(&stats)); 231 EXPECT_TRUE(transport_->GetStats(&stats));
232 ASSERT_EQ(1U, stats.channel_stats.size()); 232 ASSERT_EQ(1U, stats.channel_stats.size());
233 EXPECT_EQ(1, stats.channel_stats[0].component); 233 EXPECT_EQ(1, stats.channel_stats[0].component);
234 } 234 }
235 235
236 // Tests that VerifyCertificateFingerprint only returns true when the
237 // certificate matches the fingerprint.
238 TEST_F(TransportTest, TestVerifyCertificateFingerprint) {
239 std::string error_desc;
240 EXPECT_FALSE(
241 transport_->VerifyCertificateFingerprint(nullptr, nullptr, &error_desc));
242 rtc::KeyType key_types[] = {rtc::KT_RSA, rtc::KT_ECDSA};
243
244 for (auto& key_type : key_types) {
245 rtc::scoped_refptr<rtc::RTCCertificate> certificate =
246 rtc::RTCCertificate::Create(rtc::scoped_ptr<rtc::SSLIdentity>(
247 rtc::SSLIdentity::Generate("testing", key_type)));
248 ASSERT_NE(nullptr, certificate);
249
250 std::string digest_algorithm;
251 ASSERT_TRUE(certificate->ssl_certificate().GetSignatureDigestAlgorithm(
252 &digest_algorithm));
253 ASSERT_FALSE(digest_algorithm.empty());
254 rtc::scoped_ptr<rtc::SSLFingerprint> good_fingerprint(
255 rtc::SSLFingerprint::Create(digest_algorithm, certificate->identity()));
256 ASSERT_NE(nullptr, good_fingerprint);
257
258 EXPECT_TRUE(transport_->VerifyCertificateFingerprint(
259 certificate.get(), good_fingerprint.get(), &error_desc));
260 EXPECT_FALSE(transport_->VerifyCertificateFingerprint(
261 certificate.get(), nullptr, &error_desc));
262 EXPECT_FALSE(transport_->VerifyCertificateFingerprint(
263 nullptr, good_fingerprint.get(), &error_desc));
264
265 rtc::SSLFingerprint bad_fingerprint = *good_fingerprint;
266 bad_fingerprint.digest.AppendData("0", 1);
267 EXPECT_FALSE(transport_->VerifyCertificateFingerprint(
268 certificate.get(), &bad_fingerprint, &error_desc));
269 }
270 }
271
272 // Tests that NegotiateRole sets the SSL role correctly.
273 TEST_F(TransportTest, TestNegotiateRole) {
274 TransportDescription local_desc(kIceUfrag1, kIcePwd1);
275 TransportDescription remote_desc(kIceUfrag2, kIcePwd2);
276
277 struct NegotiateRoleParams {
278 cricket::ConnectionRole local_role;
279 cricket::ConnectionRole remote_role;
280 cricket::ContentAction local_action;
281 cricket::ContentAction remote_action;
282 };
283
284 rtc::SSLRole ssl_role;
285 std::string error_desc;
286
287 // Parameters which set the SSL role to SSL_CLIENT.
288 NegotiateRoleParams valid_client_params[] = {
289 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTPASS,
290 cricket::CA_ANSWER, cricket::CA_OFFER},
291 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTPASS,
292 cricket::CA_PRANSWER, cricket::CA_OFFER},
293 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_PASSIVE,
294 cricket::CA_OFFER, cricket::CA_ANSWER},
295 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_PASSIVE,
296 cricket::CA_OFFER, cricket::CA_PRANSWER}};
297
298 for (auto& param : valid_client_params) {
299 local_desc.connection_role = param.local_role;
300 remote_desc.connection_role = param.remote_role;
301
302 ASSERT_TRUE(transport_->SetRemoteTransportDescription(
303 remote_desc, param.remote_action, nullptr));
304 ASSERT_TRUE(transport_->SetLocalTransportDescription(
305 local_desc, param.local_action, nullptr));
306 EXPECT_TRUE(
307 transport_->NegotiateRole(param.local_action, &ssl_role, &error_desc));
308 EXPECT_EQ(rtc::SSL_CLIENT, ssl_role);
309 }
310
311 // Parameters which set the SSL role to SSL_SERVER.
312 NegotiateRoleParams valid_server_params[] = {
313 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTPASS,
314 cricket::CA_ANSWER, cricket::CA_OFFER},
315 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTPASS,
316 cricket::CA_PRANSWER, cricket::CA_OFFER},
317 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTIVE,
318 cricket::CA_OFFER, cricket::CA_ANSWER},
319 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTIVE,
320 cricket::CA_OFFER, cricket::CA_PRANSWER}};
321
322 for (auto& param : valid_server_params) {
323 local_desc.connection_role = param.local_role;
324 remote_desc.connection_role = param.remote_role;
325
326 ASSERT_TRUE(transport_->SetRemoteTransportDescription(
327 remote_desc, param.remote_action, nullptr));
328 ASSERT_TRUE(transport_->SetLocalTransportDescription(
329 local_desc, param.local_action, nullptr));
330 EXPECT_TRUE(
331 transport_->NegotiateRole(param.local_action, &ssl_role, &error_desc));
332 EXPECT_EQ(rtc::SSL_SERVER, ssl_role);
333 }
334
335 // Invalid parameters due to both peers having a duplicate role.
336 NegotiateRoleParams duplicate_params[] = {
337 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTIVE,
338 cricket::CA_ANSWER, cricket::CA_OFFER},
339 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTPASS,
340 cricket::CA_ANSWER, cricket::CA_OFFER},
341 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_PASSIVE,
342 cricket::CA_ANSWER, cricket::CA_OFFER},
343 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTIVE,
344 cricket::CA_PRANSWER, cricket::CA_OFFER},
345 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTPASS,
346 cricket::CA_PRANSWER, cricket::CA_OFFER},
347 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_PASSIVE,
348 cricket::CA_PRANSWER, cricket::CA_OFFER},
349 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTIVE,
350 cricket::CA_OFFER, cricket::CA_ANSWER},
351 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTPASS,
352 cricket::CA_OFFER, cricket::CA_ANSWER},
353 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_PASSIVE,
354 cricket::CA_OFFER, cricket::CA_ANSWER},
355 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_ACTIVE,
356 cricket::CA_OFFER, cricket::CA_PRANSWER},
357 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTPASS,
358 cricket::CA_OFFER, cricket::CA_PRANSWER},
359 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_PASSIVE,
360 cricket::CA_OFFER, cricket::CA_PRANSWER}};
361
362 for (auto& param : duplicate_params) {
363 local_desc.connection_role = param.local_role;
364 remote_desc.connection_role = param.remote_role;
365
366 ASSERT_TRUE(transport_->SetRemoteTransportDescription(
367 remote_desc, param.remote_action, nullptr));
368 ASSERT_TRUE(transport_->SetLocalTransportDescription(
369 local_desc, param.local_action, nullptr));
370 EXPECT_FALSE(
371 transport_->NegotiateRole(param.local_action, &ssl_role, &error_desc));
372 }
373
374 // Invalid parameters due to the offerer not using ACTPASS.
375 NegotiateRoleParams offerer_without_actpass_params[] = {
376 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_PASSIVE,
377 cricket::CA_ANSWER, cricket::CA_OFFER},
378 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTIVE,
379 cricket::CA_ANSWER, cricket::CA_OFFER},
380 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_PASSIVE,
381 cricket::CA_ANSWER, cricket::CA_OFFER},
382 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_PASSIVE,
383 cricket::CA_PRANSWER, cricket::CA_OFFER},
384 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTIVE,
385 cricket::CA_PRANSWER, cricket::CA_OFFER},
386 {cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_PASSIVE,
387 cricket::CA_PRANSWER, cricket::CA_OFFER},
388 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_PASSIVE,
389 cricket::CA_OFFER, cricket::CA_ANSWER},
390 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTIVE,
391 cricket::CA_OFFER, cricket::CA_ANSWER},
392 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTPASS,
393 cricket::CA_OFFER, cricket::CA_ANSWER},
394 {cricket::CONNECTIONROLE_ACTIVE, cricket::CONNECTIONROLE_PASSIVE,
395 cricket::CA_OFFER, cricket::CA_PRANSWER},
396 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTIVE,
397 cricket::CA_OFFER, cricket::CA_PRANSWER},
398 {cricket::CONNECTIONROLE_PASSIVE, cricket::CONNECTIONROLE_ACTPASS,
399 cricket::CA_OFFER, cricket::CA_PRANSWER}};
400
401 for (auto& param : offerer_without_actpass_params) {
402 local_desc.connection_role = param.local_role;
403 remote_desc.connection_role = param.remote_role;
404
405 ASSERT_TRUE(transport_->SetRemoteTransportDescription(
406 remote_desc, param.remote_action, nullptr));
407 ASSERT_TRUE(transport_->SetLocalTransportDescription(
408 local_desc, param.local_action, nullptr));
409 EXPECT_FALSE(
410 transport_->NegotiateRole(param.local_action, &ssl_role, &error_desc));
411 }
412 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698