// 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 "chromeos/app_mode/kiosk_oem_manifest_parser.h"

#include "base/path_service.h"
#include "chromeos/chromeos_test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace chromeos {

typedef testing::Test KioskOemManifestParserTest;

TEST_F(KioskOemManifestParserTest, LoadTest) {
  base::FilePath test_data_dir;
  ASSERT_TRUE(chromeos::test_utils::GetTestDataPath(
                  "app_mode", "kiosk_manifest", &test_data_dir));
  base::FilePath kiosk_oem_file =
      test_data_dir.AppendASCII("kiosk_manifest.json");
  KioskOemManifestParser::Manifest manifest;
  EXPECT_TRUE(KioskOemManifestParser::Load(kiosk_oem_file, &manifest));
  EXPECT_TRUE(manifest.enterprise_managed);
  EXPECT_FALSE(manifest.can_exit_enrollment);
  EXPECT_TRUE(manifest.keyboard_driven_oobe);
  EXPECT_EQ(manifest.device_requisition, std::string("test"));
}

}  // namespace chromeos
