blob: 83df3659d901052ad52bd199eb88659dee8fb8b3 [file] [log] [blame]
// Copyright 2019 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 "components/signin/internal/identity_manager/primary_account_policy_manager_impl.h"
#include <memory>
#include <string>
#include "base/test/task_environment.h"
#include "components/prefs/testing_pref_service.h"
#include "components/signin/internal/identity_manager/account_tracker_service.h"
#include "components/signin/internal/identity_manager/fake_profile_oauth2_token_service_delegate.h"
#include "components/signin/internal/identity_manager/primary_account_manager.h"
#include "components/signin/internal/identity_manager/primary_account_policy_manager_impl.h"
#include "components/signin/internal/identity_manager/profile_oauth2_token_service.h"
#include "components/signin/public/base/account_consistency_method.h"
#include "components/signin/public/base/signin_pref_names.h"
#include "components/signin/public/base/test_signin_client.h"
#include "components/sync_preferences/testing_pref_service_syncable.h"
#include "testing/gtest/include/gtest/gtest.h"
class PrimaryAccountPolicyManagerImplTest : public testing::Test {
public:
PrimaryAccountPolicyManagerImplTest()
: test_signin_client_(&user_prefs_),
token_service_(
&user_prefs_,
std::make_unique<FakeProfileOAuth2TokenServiceDelegate>()),
primary_account_manager_(&test_signin_client_,
&token_service_,
&account_tracker_,
nullptr /*policy_manager*/),
policy_manager_(&test_signin_client_) {
PrimaryAccountManager::RegisterProfilePrefs(user_prefs_.registry());
PrimaryAccountManager::RegisterPrefs(local_state_.registry());
policy_manager_.InitializePolicy(&local_state_, &primary_account_manager_);
}
~PrimaryAccountPolicyManagerImplTest() override {
test_signin_client_.Shutdown();
}
base::test::TaskEnvironment task_environment_;
sync_preferences::TestingPrefServiceSyncable user_prefs_;
TestingPrefServiceSimple local_state_;
TestSigninClient test_signin_client_;
ProfileOAuth2TokenService token_service_;
AccountTrackerService account_tracker_;
PrimaryAccountManager primary_account_manager_;
PrimaryAccountPolicyManagerImpl policy_manager_;
};
TEST_F(PrimaryAccountPolicyManagerImplTest, Prohibited) {
local_state_.SetString(prefs::kGoogleServicesUsernamePattern,
".*@google.com");
EXPECT_TRUE(policy_manager_.IsAllowedUsername("test@google.com"));
EXPECT_TRUE(policy_manager_.IsAllowedUsername("happy@google.com"));
EXPECT_FALSE(policy_manager_.IsAllowedUsername("test@invalid.com"));
EXPECT_FALSE(policy_manager_.IsAllowedUsername("test@notgoogle.com"));
EXPECT_FALSE(policy_manager_.IsAllowedUsername(std::string()));
}
TEST_F(PrimaryAccountPolicyManagerImplTest, TestAlternateWildcard) {
// Test to make sure we accept "*@google.com" as a pattern (treat it as if
// the admin entered ".*@google.com").
local_state_.SetString(prefs::kGoogleServicesUsernamePattern, "*@google.com");
EXPECT_TRUE(policy_manager_.IsAllowedUsername("test@google.com"));
EXPECT_TRUE(policy_manager_.IsAllowedUsername("happy@google.com"));
EXPECT_FALSE(policy_manager_.IsAllowedUsername("test@invalid.com"));
EXPECT_FALSE(policy_manager_.IsAllowedUsername("test@notgoogle.com"));
EXPECT_FALSE(policy_manager_.IsAllowedUsername(std::string()));
}