blob: bdb7f76bc8410707f1417b57f640e9e80804c5da [file] [log] [blame]
// Copyright 2018 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/core/browser/identity_utils.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/testing_pref_service.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
const char kUsername[] = "test@test.com";
const char kValidWildcardPattern[] = ".*@test.com";
const char kInvalidWildcardPattern[] = "*@test.com";
const char kMatchingPattern1[] = "test@test.com";
const char kMatchingPattern2[] = ".*@test.com";
const char kMatchingPattern3[] = "test@.*.com";
const char kMatchingPattern4[] = ".*@.*.com";
const char kMatchingPattern5[] = ".*@.*";
const char kMatchingPattern6[] = ".*";
const char kNonMatchingPattern[] = ".*foo.*";
const char kNonMatchingUsernamePattern[] = "foo@test.com";
const char kNonMatchingDomainPattern[] = "test@foo.com";
const char kRegisteredPattern[] = "test.registered.username_pattern";
} // namespace
class IdentityUtilsTest : public testing::Test {
public:
IdentityUtilsTest() {
prefs_.registry()->RegisterStringPref(kRegisteredPattern, std::string());
}
TestingPrefServiceSimple* prefs() { return &prefs_; }
private:
TestingPrefServiceSimple prefs_;
};
TEST_F(IdentityUtilsTest, IsUsernameAllowedByPattern_EmptyPatterns) {
EXPECT_TRUE(identity::IsUsernameAllowedByPattern(kUsername, ""));
EXPECT_FALSE(identity::IsUsernameAllowedByPattern(kUsername, " "));
}
TEST_F(IdentityUtilsTest, IsUsernameAllowedByPattern_InvalidWildcardPatterns) {
// identity::IsUsernameAllowedByPattern should recognize invalid wildcard
// patterns like "*@foo.com" and insert a "." before them automatically.
EXPECT_TRUE(
identity::IsUsernameAllowedByPattern(kUsername, kValidWildcardPattern));
EXPECT_TRUE(
identity::IsUsernameAllowedByPattern(kUsername, kInvalidWildcardPattern));
}
TEST_F(IdentityUtilsTest, IsUsernameAllowedByPattern_MatchingWildcardPatterns) {
EXPECT_TRUE(
identity::IsUsernameAllowedByPattern(kUsername, kMatchingPattern1));
EXPECT_TRUE(
identity::IsUsernameAllowedByPattern(kUsername, kMatchingPattern2));
EXPECT_TRUE(
identity::IsUsernameAllowedByPattern(kUsername, kMatchingPattern3));
EXPECT_TRUE(
identity::IsUsernameAllowedByPattern(kUsername, kMatchingPattern4));
EXPECT_TRUE(
identity::IsUsernameAllowedByPattern(kUsername, kMatchingPattern5));
EXPECT_TRUE(
identity::IsUsernameAllowedByPattern(kUsername, kMatchingPattern6));
EXPECT_FALSE(
identity::IsUsernameAllowedByPattern(kUsername, kNonMatchingPattern));
EXPECT_FALSE(identity::IsUsernameAllowedByPattern(
kUsername, kNonMatchingUsernamePattern));
EXPECT_FALSE(identity::IsUsernameAllowedByPattern(kUsername,
kNonMatchingDomainPattern));
}
TEST_F(IdentityUtilsTest, LegacyIsUsernameAllowedByPatternFromPrefs) {
// Passing a null local state should return 'allowed'.
EXPECT_TRUE(identity::LegacyIsUsernameAllowedByPatternFromPrefs(
nullptr, kUsername, kRegisteredPattern));
// Now set different values for the named pattern and check against them.
prefs()->SetString(kRegisteredPattern, kMatchingPattern1);
EXPECT_TRUE(identity::LegacyIsUsernameAllowedByPatternFromPrefs(
prefs(), kUsername, kRegisteredPattern));
prefs()->SetString(kRegisteredPattern, kNonMatchingUsernamePattern);
EXPECT_FALSE(identity::LegacyIsUsernameAllowedByPatternFromPrefs(
prefs(), kUsername, kRegisteredPattern));
prefs()->SetString(kRegisteredPattern, kMatchingPattern2);
EXPECT_TRUE(identity::LegacyIsUsernameAllowedByPatternFromPrefs(
prefs(), kUsername, kRegisteredPattern));
prefs()->SetString(kRegisteredPattern, kNonMatchingDomainPattern);
EXPECT_FALSE(identity::LegacyIsUsernameAllowedByPatternFromPrefs(
prefs(), kUsername, kRegisteredPattern));
}