// Copyright 2014 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/sync_driver/system_encryptor.h"

#include "components/os_crypt/os_crypt.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace browser_sync {

namespace {

const char kPlaintext[] = "The Magic Words are Squeamish Ossifrage";

class SystemEncryptorTest : public testing::Test {
 protected:
  SystemEncryptor encryptor_;
};

TEST_F(SystemEncryptorTest, EncryptDecrypt) {
#if defined(OS_MACOSX)
  // SystemEncryptor ends up needing access to the keychain on OS X,
  // so use the mock keychain to prevent prompts.
  ::OSCrypt::UseMockKeychain(true);
#endif
  std::string ciphertext;
  EXPECT_TRUE(encryptor_.EncryptString(kPlaintext, &ciphertext));
  EXPECT_NE(kPlaintext, ciphertext);
  std::string plaintext;
  EXPECT_TRUE(encryptor_.DecryptString(ciphertext, &plaintext));
  EXPECT_EQ(kPlaintext, plaintext);
}

}  // namespace

}  // namespace browser_sync
