// Copyright 2018 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/previews/core/previews_lite_page_redirect.h"

#include <memory>

#include "base/test/scoped_feature_list.h"
#include "components/previews/core/previews_features.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace previews {

TEST(PreviewsLitePageURLHandlerTest,
     TestExtractOriginalURLFromLitePageRedirectURL) {
  struct TestCase {
    std::string previews_host;
    std::string original_url;
    std::string previews_url;
    bool want_ok;
  };
  const TestCase kTestCases[]{
      // Use https://play.golang.org/p/HUM2HxmUTOW to compute |previews_url|.
      {
          "https://previews.host.com",
          "https://original.host.com/path/path/path?query=yes",
          "https://shta44dh4bi7rc6fnpjnkrtytwlabygjhk53v2trlot2wddylwua."
          "previews.host.com/p?u="
          "https%3A%2F%2Foriginal.host.com%2Fpath%2Fpath%2Fpath%3Fquery%3Dyes",
          true,
      },
      {
          "https://previews.host.com",
          "http://original.host.com/path/path/path?query=yes",
          "https://6p7dar4ju6r4ynz7x3pucmlcltuqsf7z5auhvckzln7voglkt56q."
          "previews.host.com/p?u="
          "http%3A%2F%2Foriginal.host.com%2Fpath%2Fpath%2Fpath%3Fquery%3Dyes",
          true,
      },
  };

  for (const TestCase& test_case : kTestCases) {
    base::test::ScopedFeatureList scoped_feature_list;
    scoped_feature_list.InitAndEnableFeatureWithParameters(
        features::kLitePageServerPreviews,
        {{"previews_host", test_case.previews_host}});

    std::string original_url;
    bool got_ok = ExtractOriginalURLFromLitePageRedirectURL(
        GURL(test_case.previews_url), &original_url);
    EXPECT_EQ(got_ok, test_case.want_ok);
    EXPECT_EQ(original_url, test_case.original_url);
  }
}

}  // namespace previews
