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). |