| Index: chrome/browser/extensions/api/networking_private/networking_private_chromeos_apitest.cc
|
| diff --git a/chrome/browser/extensions/api/networking_private/networking_private_chromeos_apitest.cc b/chrome/browser/extensions/api/networking_private/networking_private_chromeos_apitest.cc
|
| index 209511d127d7a0a58687493600c5331e51459945..2e527239642703764c4313439825cba9a2ace2e5 100644
|
| --- a/chrome/browser/extensions/api/networking_private/networking_private_chromeos_apitest.cc
|
| +++ b/chrome/browser/extensions/api/networking_private/networking_private_chromeos_apitest.cc
|
| @@ -28,6 +28,7 @@
|
| #include "chromeos/dbus/shill_profile_client.h"
|
| #include "chromeos/dbus/shill_service_client.h"
|
| #include "chromeos/network/managed_network_configuration_handler.h"
|
| +#include "chromeos/network/network_certificate_handler.h"
|
| #include "chromeos/network/network_handler.h"
|
| #include "chromeos/network/network_state_handler.h"
|
| #include "chromeos/network/onc/onc_utils.h"
|
| @@ -51,6 +52,8 @@
|
| #include "extensions/browser/api/networking_private/networking_private_delegate_factory.h"
|
| #include "extensions/browser/notification_types.h"
|
| #include "extensions/common/switches.h"
|
| +#include "net/test/cert_test_util.h"
|
| +#include "net/test/test_data_directory.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "third_party/cros_system_api/dbus/service_constants.h"
|
|
|
| @@ -140,6 +143,28 @@ class TestNetworkingCastPrivateDelegate
|
| DISALLOW_COPY_AND_ASSIGN(TestNetworkingCastPrivateDelegate);
|
| };
|
|
|
| +// This is testing NetworkingPrivateChromeOS, so only use overrides here to
|
| +// provide extra functionality or bookkeeping for code paths that are otherwise
|
| +// difficult to replicate in a test environment.
|
| +class NetworkingPrivateChromeOSTestDelegate : public NetworkingPrivateChromeOS {
|
| + public:
|
| + explicit NetworkingPrivateChromeOSTestDelegate(
|
| + content::BrowserContext* context)
|
| + : NetworkingPrivateChromeOS(context) {}
|
| + ~NetworkingPrivateChromeOSTestDelegate() override {}
|
| +
|
| + // NetworkingPrivateChromeOS
|
| + std::unique_ptr<base::DictionaryValue> GetCertificateLists() override {
|
| + // Send a certificates changed notification for testing the event.
|
| + chromeos::NetworkHandler::Get()
|
| + ->network_certificate_handler()
|
| + ->NotifyCertificatsChangedForTest();
|
| + return NetworkingPrivateChromeOS::GetCertificateLists();
|
| + }
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(NetworkingPrivateChromeOSTestDelegate);
|
| +};
|
| +
|
| class UIDelegateStub : public NetworkingPrivateDelegate::UIDelegate {
|
| public:
|
| static int s_show_account_details_called_;
|
| @@ -323,10 +348,10 @@ class NetworkingPrivateChromeOSApiTest : public ExtensionApiTest {
|
| state, true /* add_to_visible */);
|
| }
|
|
|
| - static std::unique_ptr<KeyedService> CreateNetworkingPrivateServiceClient(
|
| + static std::unique_ptr<KeyedService> CreateNetworkingPrivateDelegate(
|
| content::BrowserContext* context) {
|
| std::unique_ptr<NetworkingPrivateDelegate> result(
|
| - new NetworkingPrivateChromeOS(context));
|
| + new NetworkingPrivateChromeOSTestDelegate(context));
|
| std::unique_ptr<NetworkingPrivateDelegate::UIDelegate> ui_delegate(
|
| new UIDelegateStub);
|
| result->set_ui_delegate(std::move(ui_delegate));
|
| @@ -351,7 +376,7 @@ class NetworkingPrivateChromeOSApiTest : public ExtensionApiTest {
|
| content::RunAllPendingInMessageLoop();
|
|
|
| NetworkingPrivateDelegateFactory::GetInstance()->SetTestingFactory(
|
| - profile(), &CreateNetworkingPrivateServiceClient);
|
| + profile(), &CreateNetworkingPrivateDelegate);
|
|
|
| InitializeSanitizedUsername();
|
|
|
| @@ -486,12 +511,28 @@ class NetworkingPrivateChromeOSApiTest : public ExtensionApiTest {
|
| ChromeNetworkingCastPrivateDelegate::SetFactoryCallbackForTest(nullptr);
|
| }
|
|
|
| - private:
|
| std::unique_ptr<ChromeNetworkingCastPrivateDelegate>
|
| CreateNetworkingCastPrivateDelegate() {
|
| return base::MakeUnique<TestNetworkingCastPrivateDelegate>();
|
| }
|
|
|
| + bool SetupCertificates() {
|
| + scoped_refptr<net::X509Certificate> system_ca_cert =
|
| + net::ImportCertFromFile(net::GetTestCertsDirectory(),
|
| + "client_1_ca.pem");
|
| + if (!system_ca_cert)
|
| + return false;
|
| +
|
| + net::CertificateList cert_list;
|
| + cert_list.push_back(std::move(system_ca_cert));
|
| + // TODO(stevenjb): Figure out a simple way to import a test user cert.
|
| +
|
| + chromeos::NetworkHandler::Get()
|
| + ->network_certificate_handler()
|
| + ->SetCertificatesForTest(cert_list);
|
| + return true;
|
| + }
|
| +
|
| protected:
|
| NetworkPortalDetectorTestImpl* detector() { return detector_; }
|
|
|
| @@ -770,6 +811,12 @@ IN_PROC_BROWSER_TEST_F(NetworkingPrivateChromeOSApiTest,
|
| << message_;
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(NetworkingPrivateChromeOSApiTest,
|
| + OnCertificateListsChangedEvent) {
|
| + EXPECT_TRUE(RunNetworkingSubtest("onCertificateListsChangedEvent"))
|
| + << message_;
|
| +}
|
| +
|
| IN_PROC_BROWSER_TEST_F(NetworkingPrivateChromeOSApiTest, VerifyDestination) {
|
| EXPECT_TRUE(RunNetworkingSubtest("verifyDestination")) << message_;
|
| }
|
| @@ -891,6 +938,11 @@ IN_PROC_BROWSER_TEST_F(NetworkingPrivateChromeOSApiTest,
|
| EXPECT_TRUE(RunNetworkingSubtest("getTetherNetworkState")) << message_;
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(NetworkingPrivateChromeOSApiTest, GetCertificateLists) {
|
| + ASSERT_TRUE(SetupCertificates());
|
| + EXPECT_TRUE(RunNetworkingSubtest("getCertificateLists")) << message_;
|
| +}
|
| +
|
| // Tests subset of networking API for the networking API alias - to verify that
|
| // using API methods and event does not cause access exceptions (due to
|
| // missing permissions).
|
|
|