| OLD | NEW |
| 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 "content/browser/renderer_host/p2p/socket_host_udp.h" | 5 #include "content/browser/renderer_host/p2p/socket_host_udp.h" |
| 6 | 6 |
| 7 #include <deque> | 7 #include <deque> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 | 157 |
| 158 net::IPEndPoint local_address_; | 158 net::IPEndPoint local_address_; |
| 159 | 159 |
| 160 net::IPEndPoint dest1_; | 160 net::IPEndPoint dest1_; |
| 161 net::IPEndPoint dest2_; | 161 net::IPEndPoint dest2_; |
| 162 }; | 162 }; |
| 163 | 163 |
| 164 // Verify that we can send STUN messages before we receive anything | 164 // Verify that we can send STUN messages before we receive anything |
| 165 // from the other side. | 165 // from the other side. |
| 166 TEST_F(P2PSocketHostUdpTest, SendStunNoAuth) { | 166 TEST_F(P2PSocketHostUdpTest, SendStunNoAuth) { |
| 167 EXPECT_CALL(sender_, Send( |
| 168 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID)))) |
| 169 .Times(3) |
| 170 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); |
| 171 |
| 167 std::vector<char> packet1; | 172 std::vector<char> packet1; |
| 168 CreateStunRequest(&packet1); | 173 CreateStunRequest(&packet1); |
| 169 socket_host_->Send(dest1_, packet1); | 174 socket_host_->Send(dest1_, packet1); |
| 170 | 175 |
| 171 std::vector<char> packet2; | 176 std::vector<char> packet2; |
| 172 CreateStunResponse(&packet2); | 177 CreateStunResponse(&packet2); |
| 173 socket_host_->Send(dest1_, packet2); | 178 socket_host_->Send(dest1_, packet2); |
| 174 | 179 |
| 175 std::vector<char> packet3; | 180 std::vector<char> packet3; |
| 176 CreateStunError(&packet3); | 181 CreateStunError(&packet3); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 201 TEST_F(P2PSocketHostUdpTest, SendAfterStunRequest) { | 206 TEST_F(P2PSocketHostUdpTest, SendAfterStunRequest) { |
| 202 // Receive packet from |dest1_|. | 207 // Receive packet from |dest1_|. |
| 203 std::vector<char> request_packet; | 208 std::vector<char> request_packet; |
| 204 CreateStunRequest(&request_packet); | 209 CreateStunRequest(&request_packet); |
| 205 | 210 |
| 206 EXPECT_CALL(sender_, Send(MatchPacketMessage(request_packet))) | 211 EXPECT_CALL(sender_, Send(MatchPacketMessage(request_packet))) |
| 207 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 212 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
| 208 socket_->ReceivePacket(dest1_, request_packet); | 213 socket_->ReceivePacket(dest1_, request_packet); |
| 209 | 214 |
| 210 // Now we should be able to send any data to |dest1_|. | 215 // Now we should be able to send any data to |dest1_|. |
| 216 EXPECT_CALL(sender_, Send( |
| 217 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID)))) |
| 218 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
| 211 std::vector<char> packet; | 219 std::vector<char> packet; |
| 212 CreateRandomPacket(&packet); | 220 CreateRandomPacket(&packet); |
| 213 socket_host_->Send(dest1_, packet); | 221 socket_host_->Send(dest1_, packet); |
| 214 | 222 |
| 215 ASSERT_EQ(1U, sent_packets_.size()); | 223 ASSERT_EQ(1U, sent_packets_.size()); |
| 216 ASSERT_EQ(dest1_, sent_packets_[0].first); | 224 ASSERT_EQ(dest1_, sent_packets_[0].first); |
| 217 } | 225 } |
| 218 | 226 |
| 219 // Verify that we can send data after we've received STUN response | 227 // Verify that we can send data after we've received STUN response |
| 220 // from the other side. | 228 // from the other side. |
| 221 TEST_F(P2PSocketHostUdpTest, SendAfterStunResponse) { | 229 TEST_F(P2PSocketHostUdpTest, SendAfterStunResponse) { |
| 222 // Receive packet from |dest1_|. | 230 // Receive packet from |dest1_|. |
| 223 std::vector<char> request_packet; | 231 std::vector<char> request_packet; |
| 224 CreateStunRequest(&request_packet); | 232 CreateStunRequest(&request_packet); |
| 225 | 233 |
| 226 EXPECT_CALL(sender_, Send(MatchPacketMessage(request_packet))) | 234 EXPECT_CALL(sender_, Send(MatchPacketMessage(request_packet))) |
| 227 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 235 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
| 228 socket_->ReceivePacket(dest1_, request_packet); | 236 socket_->ReceivePacket(dest1_, request_packet); |
| 229 | 237 |
| 230 // Now we should be able to send any data to |dest1_|. | 238 // Now we should be able to send any data to |dest1_|. |
| 239 EXPECT_CALL(sender_, Send( |
| 240 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID)))) |
| 241 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
| 231 std::vector<char> packet; | 242 std::vector<char> packet; |
| 232 CreateRandomPacket(&packet); | 243 CreateRandomPacket(&packet); |
| 233 socket_host_->Send(dest1_, packet); | 244 socket_host_->Send(dest1_, packet); |
| 234 | 245 |
| 235 ASSERT_EQ(1U, sent_packets_.size()); | 246 ASSERT_EQ(1U, sent_packets_.size()); |
| 236 ASSERT_EQ(dest1_, sent_packets_[0].first); | 247 ASSERT_EQ(dest1_, sent_packets_[0].first); |
| 237 } | 248 } |
| 238 | 249 |
| 239 // Verify messages still cannot be sent to an unathorized host after | 250 // Verify messages still cannot be sent to an unathorized host after |
| 240 // successful binding with different host. | 251 // successful binding with different host. |
| 241 TEST_F(P2PSocketHostUdpTest, SendAfterStunResponseDifferentHost) { | 252 TEST_F(P2PSocketHostUdpTest, SendAfterStunResponseDifferentHost) { |
| 242 // Receive packet from |dest1_|. | 253 // Receive packet from |dest1_|. |
| 243 std::vector<char> request_packet; | 254 std::vector<char> request_packet; |
| 244 CreateStunRequest(&request_packet); | 255 CreateStunRequest(&request_packet); |
| 245 | 256 |
| 246 EXPECT_CALL(sender_, Send(MatchPacketMessage(request_packet))) | 257 EXPECT_CALL(sender_, Send(MatchPacketMessage(request_packet))) |
| 247 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 258 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
| 248 socket_->ReceivePacket(dest1_, request_packet); | 259 socket_->ReceivePacket(dest1_, request_packet); |
| 249 | 260 |
| 250 // Should fail when trying to send the same packet to |dest2_|. | 261 // Should fail when trying to send the same packet to |dest2_|. |
| 251 std::vector<char> packet; | 262 std::vector<char> packet; |
| 252 CreateRandomPacket(&packet); | 263 CreateRandomPacket(&packet); |
| 253 EXPECT_CALL(sender_, Send( | 264 EXPECT_CALL(sender_, Send( |
| 254 MatchMessage(static_cast<uint32>(P2PMsg_OnError::ID)))) | 265 MatchMessage(static_cast<uint32>(P2PMsg_OnError::ID)))) |
| 255 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 266 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
| 256 socket_host_->Send(dest2_, packet); | 267 socket_host_->Send(dest2_, packet); |
| 257 } | 268 } |
| 258 | 269 |
| 259 } // namespace content | 270 } // namespace content |
| OLD | NEW |