blob: 673354591d7def317ef17ffbb6660e16bbde5957 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/signin/chrome_device_id_helper.h"
#include <string>
#include "base/strings/string_util.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "base/test/scoped_feature_list.h"
#include "components/signin/public/base/signin_switches.h"
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
using testing::Eq;
using testing::IsEmpty;
using testing::Ne;
using testing::Not;
using testing::StartsWith;
#if BUILDFLAG(IS_CHROMEOS_ASH)
const char kEpehemeralPrefix[] = "t_";
TEST(DeviceIdHelper, NonEphemeralDeviceIdsAreNotEmpty) {
EXPECT_THAT(GenerateSigninScopedDeviceId(/*for_ephemeral=*/false),
Not(IsEmpty()));
}
TEST(DeviceIdHelper, NonEphemeralDeviceIdsDoNotHaveTheEphemeralPrefix) {
EXPECT_THAT(GenerateSigninScopedDeviceId(/*for_ephemeral=*/false),
Not(StartsWith(kEpehemeralPrefix)));
}
TEST(DeviceIdHelper,
NonEphemeralDeviceIdsAreUniqueIfStableDeviceIdFeatureIsDisabled) {
base::test::ScopedFeatureList features;
features.InitAndDisableFeature(kStableDeviceId);
const std::string device_id1 =
GenerateSigninScopedDeviceId(/*for_ephemeral=*/false);
const std::string device_id2 =
GenerateSigninScopedDeviceId(/*for_ephemeral=*/false);
// Newly generated id is not the same as the previous one.
EXPECT_THAT(device_id2, Ne(device_id1));
}
TEST(DeviceIdHelper,
NonEphemeralDeviceIdsAreNotUniqueIfStableDeviceIdFeatureIsEnabled) {
base::test::ScopedFeatureList features;
features.InitAndEnableFeature(kStableDeviceId);
const std::string device_id1 =
GenerateSigninScopedDeviceId(/*for_ephemeral=*/false);
const std::string device_id2 =
GenerateSigninScopedDeviceId(/*for_ephemeral=*/false);
// Newly generated id is the same as the previous one.
EXPECT_THAT(device_id2, Eq(device_id1));
}
TEST(DeviceIdHelper, EphemeralDeviceIdsAreNotEmpty) {
EXPECT_THAT(GenerateSigninScopedDeviceId(/*for_ephemeral=*/true),
Not(IsEmpty()));
}
TEST(DeviceIdHelper, EphemeralDeviceIdsHaveTheEphemeralPrefix) {
EXPECT_THAT(GenerateSigninScopedDeviceId(/*for_ephemeral=*/true),
StartsWith(kEpehemeralPrefix));
}
TEST(DeviceIdHelper,
EphemeralDeviceIdsAreUniqueIfStableDeviceIdFeatureIsDisabled) {
base::test::ScopedFeatureList features;
features.InitAndDisableFeature(kStableDeviceId);
const std::string device_id1 =
GenerateSigninScopedDeviceId(/*for_ephemeral=*/true);
const std::string device_id2 =
GenerateSigninScopedDeviceId(/*for_ephemeral=*/true);
// Newly generated id is not the same as the previous one.
EXPECT_THAT(device_id2, Ne(device_id1));
}
TEST(DeviceIdHelper,
EphemeralDeviceIdsAreUniqueIfStableDeviceIdFeatureIsEnabled) {
base::test::ScopedFeatureList features;
features.InitAndEnableFeature(kStableDeviceId);
const std::string device_id1 =
GenerateSigninScopedDeviceId(/*for_ephemeral=*/true);
const std::string device_id2 =
GenerateSigninScopedDeviceId(/*for_ephemeral=*/true);
// Newly generated id is not the same as the previous one.
EXPECT_THAT(device_id2, Ne(device_id1));
}
#endif