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

Unified Diff: webrtc/p2p/quic/quictransportchannel_unittest.cc

Issue 1844803002: Modify PeerConnection for end-to-end QuicDataChannel usage (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/p2p/quic/quictransportchannel_unittest.cc
diff --git a/webrtc/p2p/quic/quictransportchannel_unittest.cc b/webrtc/p2p/quic/quictransportchannel_unittest.cc
index 7b5b51848aae75da9cfa4964ea2bee289e33e925..a16bfd5b6592807f354035f8eaff64b9586a46b7 100644
--- a/webrtc/p2p/quic/quictransportchannel_unittest.cc
+++ b/webrtc/p2p/quic/quictransportchannel_unittest.cc
@@ -17,6 +17,7 @@
#include "webrtc/base/common.h"
#include "webrtc/base/gunit.h"
#include "webrtc/base/scoped_ptr.h"
+#include "webrtc/base/sslfingerprint.h"
#include "webrtc/base/sslidentity.h"
#include "webrtc/p2p/base/faketransportcontroller.h"
@@ -42,8 +43,10 @@ static const size_t kPacketSize = 100;
static const int kNoWriteError = 0;
// ICE parameters.
-static const char kIceUfrag[] = "TESTICEUFRAG0001";
-static const char kIcePwd[] = "TESTICEPWD00000000000001";
+static const char kIceUfrag1[] = "TESTICEUFRAG0001";
+static const char kIcePwd1[] = "TESTICEPWD00000000000001";
+static const char kIceUfrag2[] = "TESTICEUFRAG0002";
+static const char kIcePwd2[] = "TESTICEPWD00000000000002";
// QUIC packet parameters.
static const net::IPAddress kIpAddress(0, 0, 0, 0);
@@ -125,10 +128,10 @@ class QuicTestPeer : public sigslot::has_slots<> {
(local_ice_role == cricket::ICEROLE_CONTROLLING) ? 1 : 2);
TransportDescription local_desc(
- std::vector<std::string>(), kIceUfrag, kIcePwd, cricket::ICEMODE_FULL,
+ std::vector<std::string>(), kIceUfrag1, kIcePwd1, cricket::ICEMODE_FULL,
local_connection_role, local_fingerprint_.get());
TransportDescription remote_desc(
- std::vector<std::string>(), kIceUfrag, kIcePwd, cricket::ICEMODE_FULL,
+ std::vector<std::string>(), kIceUfrag1, kIcePwd1, cricket::ICEMODE_FULL,
remote_connection_role, remote_fingerprint);
quic_channel_.SetIceCredentials(local_desc.ice_ufrag, local_desc.ice_pwd);
@@ -298,8 +301,8 @@ TEST_F(QuicTransportChannelTest, ChannelSetupIce) {
FailableTransportChannel* channel2 = peer2_.ice_channel();
EXPECT_EQ(cricket::ICEROLE_CONTROLLED, channel1->GetIceRole());
EXPECT_EQ(2u, channel1->IceTiebreaker());
- EXPECT_EQ(kIceUfrag, channel1->ice_ufrag());
- EXPECT_EQ(kIcePwd, channel1->ice_pwd());
+ EXPECT_EQ(kIceUfrag1, channel1->ice_ufrag());
+ EXPECT_EQ(kIcePwd1, channel1->ice_pwd());
EXPECT_EQ(cricket::ICEROLE_CONTROLLING, channel2->GetIceRole());
EXPECT_EQ(1u, channel2->IceTiebreaker());
}
@@ -486,3 +489,42 @@ TEST_F(QuicTransportChannelTest, IceReceivingBeforeConnected) {
ASSERT_TRUE_WAIT(quic_connected(), kTimeoutMs);
EXPECT_TRUE(peer1_.quic_channel()->receiving());
}
+
+// Test that the Transport base class applies local and remote descriptions to
+// the QUIC channel.
+TEST_F(QuicTransportChannelTest, SetLocalAndRemoteTransportDescription) {
+ QuicTransportChannel* quic_channel = peer1_.quic_channel();
+ // Set the local description.
+ rtc::SSLFingerprint* local_fingerprint = peer1_.local_fingerprint().get();
+ TransportDescription local_desc(
+ std::vector<std::string>(), kIceUfrag1, kIcePwd1, cricket::ICEMODE_FULL,
+ cricket::CONNECTIONROLE_ACTPASS, local_fingerprint);
+ ASSERT_TRUE(quic_channel->SetLocalTransportDescription(
+ local_desc, cricket::CA_OFFER, nullptr));
+ const TransportDescription* transport_local_desc =
+ quic_channel->local_description_for_test();
+ EXPECT_EQ(kIceUfrag1, transport_local_desc->ice_ufrag);
+ EXPECT_EQ(kIcePwd1, transport_local_desc->ice_pwd);
+ EXPECT_EQ(*local_fingerprint, *transport_local_desc->identity_fingerprint);
+ // NegotiateTransportDescription was not called yet. The SSL role should
+ // not be set and neither should the remote fingerprint.
+ rtc::scoped_ptr<rtc::SSLRole> role(new rtc::SSLRole());
+ EXPECT_FALSE(quic_channel->GetSslRole(role.get()));
+ // Set the remote description.
+ rtc::SSLFingerprint* remote_fingerprint = peer2_.local_fingerprint().get();
+ TransportDescription remote_desc(
+ std::vector<std::string>(), kIceUfrag2, kIcePwd2, cricket::ICEMODE_FULL,
+ cricket::CONNECTIONROLE_PASSIVE, remote_fingerprint);
+ ASSERT_TRUE(quic_channel->SetRemoteTransportDescription(
+ remote_desc, cricket::CA_ANSWER, nullptr));
+ const TransportDescription* transport_remote_desc =
+ quic_channel->remote_description_for_test();
+ EXPECT_EQ(kIceUfrag2, transport_remote_desc->ice_ufrag);
+ EXPECT_EQ(kIcePwd2, transport_remote_desc->ice_pwd);
+ EXPECT_EQ(*remote_fingerprint, *transport_remote_desc->identity_fingerprint);
+ // NegotiateTransportDescription was called because the
+ // transport description was an ANSWER. The SSL role should be set.
+ ASSERT_TRUE(quic_channel->GetSslRole(role.get()));
+ // SSL role should be client because the remote description is an ANSWER.
+ EXPECT_EQ(*role, rtc::SSL_CLIENT);
+}

Powered by Google App Engine
This is Rietveld 408576698