blob: 607734337eb4660f495526c49eef7c0e29116275 [file] [log] [blame]
// 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/bind.h"
#include "base/callback.h"
#include "base/command_line.h"
#include "base/macros.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/api/networking_private/networking_private_credentials_getter.h"
#include "chrome/browser/extensions/api/networking_private/networking_private_service_client.h"
#include "chrome/browser/extensions/api/networking_private/networking_private_service_client_factory.h"
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/user_manager/user.h"
#include "components/user_manager/user_manager.h"
#include "components/wifi/fake_wifi_service.h"
#include "extensions/common/switches.h"
#include "testing/gmock/include/gmock/gmock.h"
using testing::Return;
using testing::_;
using extensions::NetworkingPrivateServiceClient;
using extensions::NetworkingPrivateServiceClientFactory;
// This tests the Windows / Mac implementation of the networkingPrivate API.
// Note: the expectations in test/data/extensions/api_test/networking/test.js
// are shared between this and the Chrome OS tests. TODO(stevenjb): Develop
// a mechanism to specify the test expectations from here to eliminate that
// dependency.
namespace {
// Stub Verify* methods implementation to satisfy expectations of
// networking_private_apitest.
class CryptoVerifyStub
: public extensions::NetworkingPrivateServiceClient::CryptoVerify {
void VerifyDestination(const Credentials& verification_properties,
bool* verified,
std::string* error) override {
*verified = true;
}
void VerifyAndEncryptCredentials(
const std::string& network_guid,
const Credentials& credentials,
const VerifyAndEncryptCredentialsCallback& callback) override {
callback.Run("encrypted_credentials", "");
}
void VerifyAndEncryptData(const Credentials& verification_properties,
const std::string& data,
std::string* base64_encoded_ciphertext,
std::string* error) override {
*base64_encoded_ciphertext = "encrypted_data";
}
};
class NetworkingPrivateServiceClientApiTest : public ExtensionApiTest {
public:
NetworkingPrivateServiceClientApiTest() {}
bool RunNetworkingSubtest(const std::string& subtest) {
return RunExtensionSubtest("networking",
"main.html?" + subtest,
kFlagEnableFileAccess | kFlagLoadAsComponent);
}
void SetUpInProcessBrowserTestFixture() override {
ExtensionApiTest::SetUpInProcessBrowserTestFixture();
}
void SetUpCommandLine(CommandLine* command_line) override {
ExtensionApiTest::SetUpCommandLine(command_line);
// Whitelist the extension ID of the test extension.
command_line->AppendSwitchASCII(
extensions::switches::kWhitelistedExtensionID,
"epcifkihnkjgphfkloaaleeakhpmgdmn");
}
static KeyedService* CreateNetworkingPrivateServiceClient(
content::BrowserContext* profile) {
return new NetworkingPrivateServiceClient(new wifi::FakeWiFiService(),
new CryptoVerifyStub());
}
void SetUpOnMainThread() override {
ExtensionApiTest::SetUpOnMainThread();
content::RunAllPendingInMessageLoop();
NetworkingPrivateServiceClientFactory::GetInstance()->SetTestingFactory(
profile(), &CreateNetworkingPrivateServiceClient);
}
protected:
DISALLOW_COPY_AND_ASSIGN(NetworkingPrivateServiceClientApiTest);
};
// Place each subtest into a separate browser test so that the stub networking
// library state is reset for each subtest run. This way they won't affect each
// other.
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, StartConnect) {
EXPECT_TRUE(RunNetworkingSubtest("startConnect")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, StartDisconnect) {
EXPECT_TRUE(RunNetworkingSubtest("startDisconnect")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
StartConnectNonexistent) {
EXPECT_TRUE(RunNetworkingSubtest("startConnectNonexistent")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
StartDisconnectNonexistent) {
EXPECT_TRUE(RunNetworkingSubtest("startDisconnectNonexistent")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
StartGetPropertiesNonexistent) {
EXPECT_TRUE(RunNetworkingSubtest("startGetPropertiesNonexistent"))
<< message_;
}
// TODO(stevenjb/mef): Fix these, crbug.com/371442.
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
DISABLED_GetNetworks) {
EXPECT_TRUE(RunNetworkingSubtest("getNetworks")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
DISABLED_GetVisibleNetworks) {
EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworks")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
GetVisibleNetworksWifi) {
EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworksWifi")) << message_;
}
// TODO(stevenjb/mef): Fix this, crbug.com/371442.
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
DISABLED_RequestNetworkScan) {
EXPECT_TRUE(RunNetworkingSubtest("requestNetworkScan")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, GetProperties) {
EXPECT_TRUE(RunNetworkingSubtest("getProperties")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, GetState) {
EXPECT_TRUE(RunNetworkingSubtest("getState")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
GetStateNonExistent) {
EXPECT_TRUE(RunNetworkingSubtest("getStateNonExistent")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, SetProperties) {
EXPECT_TRUE(RunNetworkingSubtest("setProperties")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, CreateNetwork) {
EXPECT_TRUE(RunNetworkingSubtest("createNetwork")) << message_;
}
// TODO(stevenjb/mef): Fix this, crbug.com/371442.
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
DISABLED_GetManagedProperties) {
EXPECT_TRUE(RunNetworkingSubtest("getManagedProperties")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
OnNetworksChangedEventConnect) {
EXPECT_TRUE(RunNetworkingSubtest("onNetworksChangedEventConnect"))
<< message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
OnNetworksChangedEventDisconnect) {
EXPECT_TRUE(RunNetworkingSubtest("onNetworksChangedEventDisconnect"))
<< message_;
}
// TODO(stevenjb/mef): Fix this, crbug.com/371442.
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
DISABLED_OnNetworkListChangedEvent) {
EXPECT_TRUE(RunNetworkingSubtest("onNetworkListChangedEvent")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
VerifyDestination) {
EXPECT_TRUE(RunNetworkingSubtest("verifyDestination")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
VerifyAndEncryptCredentials) {
EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptCredentials")) << message_;
}
IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
VerifyAndEncryptData) {
EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptData")) << message_;
}
} // namespace