// Copyright (c) 2012 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 "rlz/lib/machine_id.h"

#include "base/strings/string16.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "rlz/test/rlz_test_helpers.h"
#include "testing/gtest/include/gtest/gtest.h"

// This test will fail if the behavior of GetMachineId changes.
TEST(MachineDealCodeTestMachineId, MachineId) {
  base::string16 computer_sid(base::UTF8ToUTF16(
        "S-1-5-21-2345599882-2448789067-1921365677"));
  std::string id;
  rlz_lib::testing::GetMachineIdImpl(computer_sid, -1643738288, &id);
  EXPECT_STREQ("A341BA986A7E86840688977FCF20C86E253F00919E068B50F8",
               id.c_str());
}

#if defined(OS_CHROMEOS)
TEST(MachineDealCodeTestMachineId, MachineIdIsUnique) {
  std::string id1;
  std::string id2;
  rlz_lib::GetMachineId(&id1);
  rlz_lib::GetMachineId(&id2);
  EXPECT_NE(id1, id2);
}

TEST(MachineDealCodeTestMachineId, MachineIdIsProperFormat) {
  std::string id;
  rlz_lib::GetMachineId(&id);
  std::string prefix = id.substr(0, 5);

  EXPECT_EQ(50u, id.length());
  EXPECT_TRUE(
      base::ContainsOnlyChars(id, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"));
  EXPECT_STREQ("NONCE", prefix.c_str());
}
#endif
