blob: 001637f6376adca7889bf6ef3cfc4368b20d9c42 [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/core/browser/mice_account_reconcilor_delegate.h"
#include <vector>
#include "google_apis/gaia/gaia_auth_util.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace signin {
namespace {
// Returns a gaia::ListedAccount with the specified account id.
gaia::ListedAccount BuildTestListedAccount(const std::string account_id,
bool valid) {
gaia::ListedAccount account;
account.id = account_id;
account.valid = valid;
return account;
}
} // namespace
TEST(MiceAccountReconcilorDelegate, CalculateParametersForMultilogin) {
MiceAccountReconcilorDelegate mice_delegate;
const gaia::ListedAccount kA = BuildTestListedAccount("A", /*valid=*/true);
const gaia::ListedAccount kB = BuildTestListedAccount("B", /*valid=*/false);
struct TestParams {
std::vector<std::string> chrome_accounts;
std::string primary_account;
std::vector<gaia::ListedAccount> gaia_accounts;
std::vector<std::string> expected_accounts;
};
// clang-format off
TestParams cases[] = {
// chrome_accounts, primary_account, gaia_accounts, expected_accounts
{{}, "", {}, {}},
{{}, "", {kA, kB}, {}},
{{"A"}, "", {}, {"A"}},
{{"A"}, "", {kA, kB}, {"A"}},
{{"A"}, "", {kB, kA}, {"A"}},
{{"A", "B"}, "", {}, {"A", "B"}},
{{"A", "B"}, "", {kA}, {"A", "B"}},
{{"A", "B"}, "", {kB}, {"A", "B"}},
{{"B", "C"}, "", {kA}, {"B", "C"}},
{{"A", "B"}, "", {kA, kB}, {"A", "B"}},
{{"A", "B"}, "", {kB, kA}, {"A", "B"}},
{{"B", "C"}, "", {kA, kB}, {"B", "C"}},
// Tests the reordering: B remains in 2nd place.
{{"C", "D", "B"}, "", {kA, kB}, {"C", "B", "D"}},
// With primary account.
{{"A", "B"}, "B", {}, {"B", "A"}},
{{"B", "A"}, "A", {kB, kA}, {"A", "B"}},
{{"A", "B"}, "B", {kB, kA}, {"B", "A"}},
};
// clang-format on
for (const auto& test : cases) {
MultiloginParameters multilogin_parameters =
mice_delegate.CalculateParametersForMultilogin(
test.chrome_accounts, test.primary_account, test.gaia_accounts,
false, false);
EXPECT_EQ(gaia::MultiloginMode::MULTILOGIN_UPDATE_COOKIE_ACCOUNTS_ORDER,
multilogin_parameters.mode);
EXPECT_EQ(test.expected_accounts, multilogin_parameters.accounts_to_send);
}
}
} // namespace signin