diff options
Diffstat (limited to 'chromium/extensions/browser/api/system_network/system_network_apitest.cc')
-rw-r--r-- | chromium/extensions/browser/api/system_network/system_network_apitest.cc | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/chromium/extensions/browser/api/system_network/system_network_apitest.cc b/chromium/extensions/browser/api/system_network/system_network_apitest.cc new file mode 100644 index 00000000000..f7c1964345b --- /dev/null +++ b/chromium/extensions/browser/api/system_network/system_network_apitest.cc @@ -0,0 +1,61 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// 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/system_network/system_network_api.h" +#include "extensions/browser/api_test_utils.h" +#include "extensions/common/test_util.h" +#include "extensions/shell/test/shell_apitest.h" +#include "extensions/test/extension_test_message_listener.h" + +using extensions::Extension; +using extensions::api_test_utils::RunFunctionAndReturnSingleResult; +using extensions::api::SystemNetworkGetNetworkInterfacesFunction; +using extensions::api::system_network::NetworkInterface; + +namespace { + +class SystemNetworkApiTest : public extensions::ShellApiTest {}; + +} // namespace + +IN_PROC_BROWSER_TEST_F(SystemNetworkApiTest, SystemNetworkExtension) { + ASSERT_TRUE(RunAppTest("system/network")) << message_; +} + +IN_PROC_BROWSER_TEST_F(SystemNetworkApiTest, GetNetworkInterfaces) { + scoped_refptr<SystemNetworkGetNetworkInterfacesFunction> socket_function( + new SystemNetworkGetNetworkInterfacesFunction()); + scoped_refptr<Extension> empty_extension( + extensions::test_util::CreateEmptyExtension()); + + socket_function->set_extension(empty_extension.get()); + socket_function->set_has_callback(true); + + scoped_ptr<base::Value> result(RunFunctionAndReturnSingleResult( + socket_function.get(), "[]", browser_context())); + ASSERT_EQ(base::Value::TYPE_LIST, result->GetType()); + + // All we can confirm is that we have at least one address, but not what it + // is. + base::ListValue* value = static_cast<base::ListValue*>(result.get()); + ASSERT_TRUE(value->GetSize() > 0); + + for (base::ListValue::const_iterator it = value->begin(); it != value->end(); + ++it) { + base::Value* network_interface_value = *it; + + NetworkInterface network_interface; + ASSERT_TRUE(NetworkInterface::Populate(*network_interface_value, + &network_interface)); + + LOG(INFO) << "Network interface: address=" << network_interface.address + << ", name=" << network_interface.name + << ", prefix length=" << network_interface.prefix_length; + ASSERT_NE(std::string(), network_interface.address); + ASSERT_NE(std::string(), network_interface.name); + ASSERT_LE(0, network_interface.prefix_length); + } +} |