// Copyright 2024 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/ui/sync/sync_passphrase_dialog.h"

#include "base/strings/utf_string_conversions.h"
#include "components/sync/service/sync_user_settings.h"
#include "components/sync/test/test_sync_service.h"
#include "testing/gtest/include/gtest/gtest.h"

TEST(SyncPassphraseDialog, SyncPassphraseDialogDecryptData) {
  constexpr char kPassphraseUTF8[] = "passphrase";
  // `base::UTF8ToUTF16()` cannot be called on string literals, so a duplicate
  // string is needed.
  constexpr char16_t kPassphraseUTF16[] = u"passphrase";
  syncer::TestSyncService sync_service;
  syncer::TestSyncUserSettings* sync_user_settings =
      sync_service.GetUserSettings();
  sync_user_settings->SetPassphraseRequired(kPassphraseUTF8);
  ASSERT_TRUE(sync_user_settings->IsPassphraseRequired());

  // Wrong passphrase.
  EXPECT_FALSE(SyncPassphraseDialogDecryptData(&sync_service, u"wrong"));
  EXPECT_TRUE(sync_user_settings->IsPassphraseRequired());

  // Correct passphrase.
  EXPECT_TRUE(SyncPassphraseDialogDecryptData(&sync_service, kPassphraseUTF16));
  EXPECT_FALSE(sync_user_settings->IsPassphraseRequired());
}
