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 |