// 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 "chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_extension_util_win.h"

#include "chrome/browser/safe_browsing/chrome_cleaner/mock_chrome_cleaner_process_win.h"
#include "chrome/grit/generated_resources.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile.h"
#include "chrome/test/base/testing_profile_manager.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/l10n/l10n_util.h"

namespace safe_browsing {

TEST(ChromeCleanerExtensionUtilTest, GetExtensionNamesFromIds) {
  content::TestBrowserThreadBundle test_browser_thread_bundle_;
  TestingProfileManager profile_manager_(TestingBrowserProcess::GetGlobal());

  // Set up the testing profile, so chrome_cleaner_win_util can get the
  // extensions registry from it.
  ASSERT_TRUE(profile_manager_.SetUp());
  TestingProfile* testing_profile_ =
      profile_manager_.CreateTestingProfile("DummyProfile");
  MockChromeCleanerProcess::AddMockExtensionsToProfile(testing_profile_);

  std::set<base::string16> test_ids = {
      MockChromeCleanerProcess::kInstalledExtensionId1,
      MockChromeCleanerProcess::kInstalledExtensionId2,
      MockChromeCleanerProcess::kUnknownExtensionId,
  };

  std::set<base::string16> expected_names = {
      MockChromeCleanerProcess::kInstalledExtensionName1,
      MockChromeCleanerProcess::kInstalledExtensionName2,
      l10n_util::GetStringFUTF16(
          IDS_SETTINGS_RESET_CLEANUP_DETAILS_EXTENSION_UNKNOWN,
          MockChromeCleanerProcess::kUnknownExtensionId),
  };

  std::set<base::string16> actual_names;
  GetExtensionNamesFromIds(testing_profile_, test_ids, &actual_names);
  EXPECT_THAT(actual_names, testing::ContainerEq(expected_names));
}

}  // namespace safe_browsing
