Index: webrtc/p2p/base/turnport_unittest.cc |
diff --git a/webrtc/p2p/base/turnport_unittest.cc b/webrtc/p2p/base/turnport_unittest.cc |
index 69b25ea0d8ef35a00e78eb312fd322cb76e35bee..7223eabbee1134d5d6153b28f9fed140d30595dc 100644 |
--- a/webrtc/p2p/base/turnport_unittest.cc |
+++ b/webrtc/p2p/base/turnport_unittest.cc |
@@ -647,6 +647,40 @@ TEST_F(TurnPortTest, TestTurnPortType) { |
EXPECT_EQ(cricket::RELAY_PORT_TYPE, turn_port_->Type()); |
} |
+// Tests that the URL of the servers can be correctly reconstructed when |
+// gathering the candidates. |
+TEST_F(TurnPortTest, TestReconstructedServerUrl) { |
+ // Connect the TURN server using UDP. |
+ CreateTurnPort(kTurnUsername, kTurnPassword, kTurnUdpProtoAddr); |
+ turn_port_->PrepareAddress(); |
+ EXPECT_TRUE_SIMULATED_WAIT(turn_ready_, kSimulatedRtt * 2, fake_clock_); |
+ std::string expected_server_url = "turn:99.99.99.3:3478?transport=udp"; |
+ EXPECT_EQ(turn_port_->Candidates()[0].url(), expected_server_url); |
+ |
+ // Connect the server with IPV6 using UDP. |
+ turn_ready_ = false; |
+ turn_server_.AddInternalSocket(kTurnUdpIPv6IntAddr, PROTO_UDP); |
+ CreateTurnPort(kLocalIPv6Addr, kTurnUsername, kTurnPassword, |
+ kTurnUdpIPv6ProtoAddr); |
+ turn_port_->PrepareAddress(); |
+ EXPECT_TRUE_SIMULATED_WAIT(turn_ready_, kSimulatedRtt * 2, fake_clock_); |
+ ASSERT_EQ(1U, turn_port_->Candidates().size()); |
+ expected_server_url = |
+ "turn:2400:4030:1:2c00:be30:abcd:efab:cdef:3478?transport=udp"; |
+ EXPECT_EQ(turn_port_->Candidates()[0].url(), expected_server_url); |
+ |
+ // Connection the server using TCP. |
+ turn_ready_ = false; |
+ turn_server_.AddInternalSocket(kTurnTcpIntAddr, PROTO_TCP); |
+ CreateTurnPort(kTurnUsername, kTurnPassword, kTurnTcpProtoAddr); |
+ turn_port_->PrepareAddress(); |
+ EXPECT_TRUE_SIMULATED_WAIT(turn_ready_, kSimulatedRtt * 3, fake_clock_); |
+ ASSERT_EQ(1U, turn_port_->Candidates().size()); |
+ expected_server_url = "turn:99.99.99.4:3478?transport=tcp"; |
+ EXPECT_EQ(turn_port_->Candidates()[0].url(), expected_server_url); |
+ turn_ready_ = false; |
+} |
+ |
// Do a normal TURN allocation. |
TEST_F(TurnPortTest, TestTurnAllocate) { |
CreateTurnPort(kTurnUsername, kTurnPassword, kTurnUdpProtoAddr); |