// Copyright 2016 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 "base/files/scoped_temp_dir.h"
#include "extensions/common/error_utils.h"
#include "extensions/common/extension.h"
#include "extensions/common/file_util.h"
#include "extensions/common/manifest_constants.h"
#include "extensions/common/value_builder.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace extensions {

TEST(ChromeURLOverridesHandlerTest, TestFileMissing) {
  DictionaryBuilder manifest;
  manifest.Set("name", "ntp override");
  manifest.Set("version", "0.1");
  manifest.Set("manifest_version", 2);
  manifest.Set("description", "description");
  manifest.Set("chrome_url_overrides",
               DictionaryBuilder().Set("newtab", "newtab.html").Build());
  std::unique_ptr<base::DictionaryValue> manifest_value = manifest.Build();
  std::string error;
  std::vector<InstallWarning> warnings;
  base::ScopedTempDir dir;
  ASSERT_TRUE(dir.CreateUniqueTempDir());
  scoped_refptr<Extension> extension =
      Extension::Create(dir.GetPath(), Manifest::INTERNAL, *manifest_value,
                        Extension::NO_FLAGS, std::string(), &error);
  ASSERT_TRUE(extension);
  EXPECT_FALSE(
      file_util::ValidateExtension(extension.get(), &error, &warnings));
  EXPECT_EQ(ErrorUtils::FormatErrorMessage(manifest_errors::kFileNotFound,
                                           "newtab.html"),
            error);
}

}  // namespace extensions
