| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2009 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2009 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 26 matching lines...) Expand all Loading... |
| 37 : AutoDetectProxy(agent) {} | 37 : AutoDetectProxy(agent) {} |
| 38 void Run() { | 38 void Run() { |
| 39 DoWork(); | 39 DoWork(); |
| 40 Thread::Current()->Restart(); // needed to reset the messagequeue | 40 Thread::Current()->Restart(); // needed to reset the messagequeue |
| 41 } | 41 } |
| 42 }; | 42 }; |
| 43 | 43 |
| 44 // Sets up a virtual socket server and HTTPS/SOCKS5 proxy servers. | 44 // Sets up a virtual socket server and HTTPS/SOCKS5 proxy servers. |
| 45 class ProxyTest : public testing::Test { | 45 class ProxyTest : public testing::Test { |
| 46 public: | 46 public: |
| 47 ProxyTest() : ss_(new rtc::VirtualSocketServer(NULL)) { | 47 ProxyTest() : ss_(new rtc::VirtualSocketServer(nullptr)) { |
| 48 Thread::Current()->set_socketserver(ss_.get()); | 48 Thread::Current()->set_socketserver(ss_.get()); |
| 49 socks_.reset(new rtc::SocksProxyServer( | 49 socks_.reset(new rtc::SocksProxyServer( |
| 50 ss_.get(), kSocksProxyIntAddr, ss_.get(), kSocksProxyExtAddr)); | 50 ss_.get(), kSocksProxyIntAddr, ss_.get(), kSocksProxyExtAddr)); |
| 51 https_.reset(new rtc::HttpListenServer()); | 51 https_.reset(new rtc::HttpListenServer()); |
| 52 https_->Listen(kHttpsProxyIntAddr); | 52 https_->Listen(kHttpsProxyIntAddr); |
| 53 } | 53 } |
| 54 ~ProxyTest() { | 54 ~ProxyTest() { Thread::Current()->set_socketserver(nullptr); } |
| 55 Thread::Current()->set_socketserver(NULL); | |
| 56 } | |
| 57 | 55 |
| 58 rtc::SocketServer* ss() { return ss_.get(); } | 56 rtc::SocketServer* ss() { return ss_.get(); } |
| 59 | 57 |
| 60 rtc::ProxyType DetectProxyType(const SocketAddress& address) { | 58 rtc::ProxyType DetectProxyType(const SocketAddress& address) { |
| 61 rtc::ProxyType type; | 59 rtc::ProxyType type; |
| 62 AutoDetectProxyRunner* detect = new AutoDetectProxyRunner("unittest/1.0"); | 60 AutoDetectProxyRunner* detect = new AutoDetectProxyRunner("unittest/1.0"); |
| 63 detect->set_proxy(address); | 61 detect->set_proxy(address); |
| 64 detect->Run(); // blocks until done | 62 detect->Run(); // blocks until done |
| 65 type = detect->proxy().type; | 63 type = detect->proxy().type; |
| 66 detect->Destroy(false); | 64 detect->Destroy(false); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 81 rtc::AsyncSocksProxySocket* proxy_socket = | 79 rtc::AsyncSocksProxySocket* proxy_socket = |
| 82 new rtc::AsyncSocksProxySocket(socket, kSocksProxyIntAddr, | 80 new rtc::AsyncSocksProxySocket(socket, kSocksProxyIntAddr, |
| 83 "", rtc::CryptString()); | 81 "", rtc::CryptString()); |
| 84 // TODO: IPv6-ize these tests when proxy supports IPv6. | 82 // TODO: IPv6-ize these tests when proxy supports IPv6. |
| 85 | 83 |
| 86 rtc::TestEchoServer server(Thread::Current(), | 84 rtc::TestEchoServer server(Thread::Current(), |
| 87 SocketAddress(INADDR_ANY, 0)); | 85 SocketAddress(INADDR_ANY, 0)); |
| 88 | 86 |
| 89 rtc::AsyncTCPSocket* packet_socket = rtc::AsyncTCPSocket::Create( | 87 rtc::AsyncTCPSocket* packet_socket = rtc::AsyncTCPSocket::Create( |
| 90 proxy_socket, SocketAddress(INADDR_ANY, 0), server.address()); | 88 proxy_socket, SocketAddress(INADDR_ANY, 0), server.address()); |
| 91 EXPECT_TRUE(packet_socket != NULL); | 89 EXPECT_TRUE(packet_socket != nullptr); |
| 92 rtc::TestClient client(packet_socket); | 90 rtc::TestClient client(packet_socket); |
| 93 | 91 |
| 94 EXPECT_EQ(Socket::CS_CONNECTING, proxy_socket->GetState()); | 92 EXPECT_EQ(Socket::CS_CONNECTING, proxy_socket->GetState()); |
| 95 EXPECT_TRUE(client.CheckConnected()); | 93 EXPECT_TRUE(client.CheckConnected()); |
| 96 EXPECT_EQ(Socket::CS_CONNECTED, proxy_socket->GetState()); | 94 EXPECT_EQ(Socket::CS_CONNECTED, proxy_socket->GetState()); |
| 97 EXPECT_EQ(server.address(), client.remote_address()); | 95 EXPECT_EQ(server.address(), client.remote_address()); |
| 98 client.Send("foo", 3); | 96 client.Send("foo", 3); |
| 99 EXPECT_TRUE(client.CheckNextPacket("foo", 3, NULL)); | 97 EXPECT_TRUE(client.CheckNextPacket("foo", 3, nullptr)); |
| 100 EXPECT_TRUE(client.CheckNoPacket()); | 98 EXPECT_TRUE(client.CheckNoPacket()); |
| 101 } | 99 } |
| 102 | 100 |
| 103 /* | 101 /* |
| 104 // Tests whether we can use a HTTPS proxy to connect to a server. | 102 // Tests whether we can use a HTTPS proxy to connect to a server. |
| 105 TEST_F(ProxyTest, TestHttpsConnect) { | 103 TEST_F(ProxyTest, TestHttpsConnect) { |
| 106 AsyncSocket* socket = ss()->CreateAsyncSocket(SOCK_STREAM); | 104 AsyncSocket* socket = ss()->CreateAsyncSocket(SOCK_STREAM); |
| 107 AsyncHttpsProxySocket* proxy_socket = new AsyncHttpsProxySocket( | 105 AsyncHttpsProxySocket* proxy_socket = new AsyncHttpsProxySocket( |
| 108 socket, "unittest/1.0", kHttpsProxyIntAddress, "", CryptString()); | 106 socket, "unittest/1.0", kHttpsProxyIntAddress, "", CryptString()); |
| 109 TestClient client(new AsyncTCPSocket(proxy_socket)); | 107 TestClient client(new AsyncTCPSocket(proxy_socket)); |
| 110 TestEchoServer server(Thread::Current(), SocketAddress()); | 108 TestEchoServer server(Thread::Current(), SocketAddress()); |
| 111 | 109 |
| 112 EXPECT_TRUE(client.Connect(server.address())); | 110 EXPECT_TRUE(client.Connect(server.address())); |
| 113 EXPECT_TRUE(client.CheckConnected()); | 111 EXPECT_TRUE(client.CheckConnected()); |
| 114 EXPECT_EQ(server.address(), client.remote_address()); | 112 EXPECT_EQ(server.address(), client.remote_address()); |
| 115 client.Send("foo", 3); | 113 client.Send("foo", 3); |
| 116 EXPECT_TRUE(client.CheckNextPacket("foo", 3, NULL)); | 114 EXPECT_TRUE(client.CheckNextPacket("foo", 3, nullptr)); |
| 117 EXPECT_TRUE(client.CheckNoPacket()); | 115 EXPECT_TRUE(client.CheckNoPacket()); |
| 118 } | 116 } |
| 119 */ | 117 */ |
| 120 | 118 |
| 121 // Tests whether we can autodetect a SOCKS5 proxy. | 119 // Tests whether we can autodetect a SOCKS5 proxy. |
| 122 TEST_F(ProxyTest, TestAutoDetectSocks5) { | 120 TEST_F(ProxyTest, TestAutoDetectSocks5) { |
| 123 EXPECT_EQ(rtc::PROXY_SOCKS5, DetectProxyType(kSocksProxyIntAddr)); | 121 EXPECT_EQ(rtc::PROXY_SOCKS5, DetectProxyType(kSocksProxyIntAddr)); |
| 124 } | 122 } |
| 125 | 123 |
| 126 /* | 124 /* |
| 127 // Tests whether we can autodetect a HTTPS proxy. | 125 // Tests whether we can autodetect a HTTPS proxy. |
| 128 TEST_F(ProxyTest, TestAutoDetectHttps) { | 126 TEST_F(ProxyTest, TestAutoDetectHttps) { |
| 129 EXPECT_EQ(rtc::PROXY_HTTPS, DetectProxyType(kHttpsProxyIntAddr)); | 127 EXPECT_EQ(rtc::PROXY_HTTPS, DetectProxyType(kHttpsProxyIntAddr)); |
| 130 } | 128 } |
| 131 */ | 129 */ |
| 132 | 130 |
| 133 // Tests whether we fail properly for no proxy. | 131 // Tests whether we fail properly for no proxy. |
| 134 TEST_F(ProxyTest, TestAutoDetectBogus) { | 132 TEST_F(ProxyTest, TestAutoDetectBogus) { |
| 135 EXPECT_EQ(rtc::PROXY_UNKNOWN, DetectProxyType(kBogusProxyIntAddr)); | 133 EXPECT_EQ(rtc::PROXY_UNKNOWN, DetectProxyType(kBogusProxyIntAddr)); |
| 136 } | 134 } |
| OLD | NEW |