Chromium Code Reviews| 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(); |
| + } |
| + |
|
tbarzic
2017/05/23 18:01:58
private:
stevenjb
2017/05/25 00:01:11
Done.
|
| + 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). |