blob: ebdf3872d504cbfebcefe55ac5eec92fd16e42a6 [file] [log] [blame]
// Copyright 2015 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 <memory>
#include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "chrome/browser/chromeos/policy/affiliation_test_helper.h"
#include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/fake_session_manager_client.h"
#include "chromeos/dbus/session_manager_client.h"
#include "components/policy/core/common/cloud/device_management_service.h"
#include "components/user_manager/user.h"
#include "components/user_manager/user_manager.h"
#include "content/public/test/test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace policy {
namespace {
const char kAffiliatedUser[] = "affiliated-user@example.com";
const char kAffiliationID[] = "some-affiliation-id";
const char kAnotherAffiliationID[] = "another-affiliation-id";
struct Params {
explicit Params(bool affiliated) : affiliated_(affiliated) {}
bool affiliated_;
};
} // namespace
class UserAffiliationBrowserTest
: public InProcessBrowserTest,
public ::testing::WithParamInterface<Params> {
public:
UserAffiliationBrowserTest() { set_exit_when_last_browser_closes(false); }
protected:
// InProcessBrowserTest
void SetUpCommandLine(base::CommandLine* command_line) override {
affiliation_test_helper::AppendCommandLineSwitchesForLoginManager(
command_line);
}
// InProcessBrowserTest
void SetUpInProcessBrowserTestFixture() override {
chromeos::FakeSessionManagerClient* fake_session_manager_client =
new chromeos::FakeSessionManagerClient;
chromeos::DBusThreadManager::GetSetterForTesting()->SetSessionManagerClient(
base::WrapUnique<chromeos::SessionManagerClient>(
fake_session_manager_client));
UserPolicyBuilder user_policy;
DevicePolicyCrosTestHelper test_helper;
std::set<std::string> device_affiliation_ids;
device_affiliation_ids.insert(kAffiliationID);
affiliation_test_helper::SetDeviceAffiliationID(
&test_helper, fake_session_manager_client, device_affiliation_ids);
std::set<std::string> user_affiliation_ids;
if (GetParam().affiliated_) {
user_affiliation_ids.insert(kAffiliationID);
} else {
user_affiliation_ids.insert(kAnotherAffiliationID);
}
affiliation_test_helper::SetUserAffiliationIDs(
&user_policy, fake_session_manager_client, kAffiliatedUser,
user_affiliation_ids);
// Set retry delay to prevent timeouts.
policy::DeviceManagementService::SetRetryDelayForTesting(0);
}
private:
DISALLOW_COPY_AND_ASSIGN(UserAffiliationBrowserTest);
};
IN_PROC_BROWSER_TEST_P(UserAffiliationBrowserTest, PRE_Affiliated) {
affiliation_test_helper::PreLoginUser(kAffiliatedUser);
}
IN_PROC_BROWSER_TEST_P(UserAffiliationBrowserTest, Affiliated) {
affiliation_test_helper::LoginUser(kAffiliatedUser);
EXPECT_EQ(GetParam().affiliated_,
user_manager::UserManager::Get()
->FindUser(AccountId::FromUserEmail(kAffiliatedUser))
->IsAffiliated());
}
INSTANTIATE_TEST_CASE_P(AffiliationCheck,
UserAffiliationBrowserTest,
::testing::Values(Params(true), Params(false)));
} // namespace policy