Skip to content

Commit

Permalink
Move sockets_* tests to extensions/
Browse files Browse the repository at this point in the history
Also add a new function for unloading extensions
to ShellApiTest. It is needed by
SocketTCPServerUnbindOnUnload and others tests as
we migrate them.

Review URL: https://codereview.chromium.org/854703003

Cr-Commit-Position: refs/heads/master@{#312410}
  • Loading branch information
thiago.santos authored and Commit bot committed Jan 21, 2015
1 parent f714289 commit d4ef118
Show file tree
Hide file tree
Showing 23 changed files with 245 additions and 293 deletions.
112 changes: 0 additions & 112 deletions chrome/browser/extensions/api/sockets_tcp/sockets_tcp_apitest.cc

This file was deleted.

103 changes: 0 additions & 103 deletions chrome/browser/extensions/api/sockets_udp/sockets_udp_apitest.cc

This file was deleted.

3 changes: 0 additions & 3 deletions chrome/chrome_tests.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,6 @@
'browser/extensions/api/sessions/sessions_apitest.cc',
'browser/extensions/api/settings_overrides/settings_overrides_browsertest.cc',
'browser/extensions/api/socket/socket_apitest.cc',
'browser/extensions/api/sockets_tcp/sockets_tcp_apitest.cc',
'browser/extensions/api/sockets_tcp_server/sockets_tcp_server_apitest.cc',
'browser/extensions/api/sockets_udp/sockets_udp_apitest.cc',
'browser/extensions/api/storage/settings_apitest.cc',
'browser/extensions/api/streams_private/streams_private_apitest.cc',
'browser/extensions/api/sync_file_system/sync_file_system_browsertest.cc',
Expand Down
1 change: 0 additions & 1 deletion chrome/chrome_tests_unit.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -719,7 +719,6 @@
'browser/extensions/api/signed_in_devices/signed_in_devices_manager_unittest.cc',
'browser/extensions/api/socket/socket_api_unittest.cc',
'browser/extensions/api/sockets_tcp_server/sockets_tcp_server_api_unittest.cc',
'browser/extensions/api/sockets_udp/sockets_udp_api_unittest.cc',
'browser/extensions/api/socket/tcp_socket_unittest.cc',
'browser/extensions/api/socket/tls_socket_unittest.cc',
'browser/extensions/api/socket/udp_socket_unittest.cc',
Expand Down
1 change: 1 addition & 0 deletions extensions/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ if (false) {
"browser/api/declarative_webrequest/webrequest_condition_unittest.cc",
"browser/api/idle/idle_api_unittest.cc",
"browser/api/sockets_tcp/sockets_tcp_api_unittest.cc",
"browser/api/sockets_udp/sockets_udp_api_unittest.cc",
"browser/api/storage/settings_quota_unittest.cc",
"browser/api/storage/storage_api_unittest.cc",
"browser/api/storage/storage_frontend_unittest.cc",
Expand Down
102 changes: 94 additions & 8 deletions extensions/browser/api/sockets_tcp/sockets_tcp_apitest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,65 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "base/memory/ref_counted.h"
#include "base/strings/stringprintf.h"
#include "extensions/browser/api/dns/host_resolver_wrapper.h"
#include "extensions/browser/api/dns/mock_host_resolver_creator.h"
#include "extensions/browser/api/sockets_tcp/sockets_tcp_api.h"
#include "extensions/browser/api_test_utils.h"
#include "extensions/common/extension.h"
#include "extensions/common/test_util.h"
#include "extensions/shell/test/shell_apitest.h"
#include "extensions/shell/test/shell_test.h"

using extensions::api_test_utils::RunFunctionAndReturnSingleResult;
#include "extensions/test/extension_test_message_listener.h"
#include "extensions/test/result_catcher.h"
#include "net/dns/mock_host_resolver.h"
#include "net/test/spawned_test_server/spawned_test_server.h"

namespace extensions {

class SocketsTcpApiTest : public AppShellTest {};
const std::string kHostname = "127.0.0.1";

class SocketsTcpApiTest : public ShellApiTest {
public:
SocketsTcpApiTest()
: resolver_event_(true, false),
resolver_creator_(new MockHostResolverCreator()) {}

void SetUpOnMainThread() override {
ShellApiTest::SetUpOnMainThread();

HostResolverWrapper::GetInstance()->SetHostResolverForTesting(
resolver_creator_->CreateMockHostResolver());
}

void TearDownOnMainThread() override {
HostResolverWrapper::GetInstance()->SetHostResolverForTesting(NULL);
resolver_creator_->DeleteMockHostResolver();

ShellApiTest::TearDownOnMainThread();
}

private:
base::WaitableEvent resolver_event_;

// The MockHostResolver asserts that it's used on the same thread on which
// it's created, which is actually a stronger rule than its real counterpart.
// But that's fine; it's good practice.
scoped_refptr<MockHostResolverCreator> resolver_creator_;
};

IN_PROC_BROWSER_TEST_F(SocketsTcpApiTest, SocketsTcpCreateGood) {
scoped_refptr<extensions::core_api::SocketsTcpCreateFunction>
socket_create_function(
new extensions::core_api::SocketsTcpCreateFunction());
scoped_refptr<core_api::SocketsTcpCreateFunction> socket_create_function(
new core_api::SocketsTcpCreateFunction());
scoped_refptr<Extension> empty_extension = test_util::CreateEmptyExtension();

socket_create_function->set_extension(empty_extension.get());
socket_create_function->set_has_callback(true);

scoped_ptr<base::Value> result(RunFunctionAndReturnSingleResult(
socket_create_function.get(), "[]", browser_context()));
scoped_ptr<base::Value> result(
api_test_utils::RunFunctionAndReturnSingleResult(
socket_create_function.get(), "[]", browser_context()));

ASSERT_EQ(base::Value::TYPE_DICTIONARY, result->GetType());
base::DictionaryValue* value =
Expand All @@ -34,4 +70,54 @@ IN_PROC_BROWSER_TEST_F(SocketsTcpApiTest, SocketsTcpCreateGood) {
ASSERT_TRUE(socketId > 0);
}

IN_PROC_BROWSER_TEST_F(SocketsTcpApiTest, SocketTcpExtension) {
scoped_ptr<net::SpawnedTestServer> test_server(new net::SpawnedTestServer(
net::SpawnedTestServer::TYPE_TCP_ECHO, net::SpawnedTestServer::kLocalhost,
base::FilePath(FILE_PATH_LITERAL("net/data"))));
EXPECT_TRUE(test_server->Start());

net::HostPortPair host_port_pair = test_server->host_port_pair();
int port = host_port_pair.port();
ASSERT_TRUE(port > 0);

// Test that connect() is properly resolving hostnames.
host_port_pair.set_host("lOcAlHoSt");

ResultCatcher catcher;
catcher.RestrictToBrowserContext(browser_context());

ExtensionTestMessageListener listener("info_please", true);

ASSERT_TRUE(LoadApp("sockets_tcp/api"));
EXPECT_TRUE(listener.WaitUntilSatisfied());
listener.Reply(
base::StringPrintf("tcp:%s:%d", host_port_pair.host().c_str(), port));

EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
}

IN_PROC_BROWSER_TEST_F(SocketsTcpApiTest, SocketTcpExtensionTLS) {
scoped_ptr<net::SpawnedTestServer> test_https_server(
new net::SpawnedTestServer(
net::SpawnedTestServer::TYPE_HTTPS, net::BaseTestServer::SSLOptions(),
base::FilePath(FILE_PATH_LITERAL("net/data"))));
EXPECT_TRUE(test_https_server->Start());

net::HostPortPair https_host_port_pair = test_https_server->host_port_pair();
int https_port = https_host_port_pair.port();
ASSERT_GT(https_port, 0);

ResultCatcher catcher;
catcher.RestrictToBrowserContext(browser_context());

ExtensionTestMessageListener listener("info_please", true);

ASSERT_TRUE(LoadApp("sockets_tcp/api"));
EXPECT_TRUE(listener.WaitUntilSatisfied());
listener.Reply(base::StringPrintf(
"https:%s:%d", https_host_port_pair.host().c_str(), https_port));

EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
}

} // namespace extensions
Loading

0 comments on commit d4ef118

Please sign in to comment.