blob: 7959ffe628515deedfaa530238ca24ffef0aa906 [file] [log] [blame]
// Copyright 2019 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/page_image_annotation/content/renderer/content_page_annotator_driver.h"
#include "base/strings/strcat.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
namespace page_image_annotation {
using ::testing::Eq;
using ::testing::IsEmpty;
TEST(ContentPageAnnotatorDriverTest, GenerateSourceIdFailure) {
// Degenerate case: no info at all.
EXPECT_THAT(ContentPageAnnotatorDriver::GenerateSourceId(GURL(""), ""),
IsEmpty());
// Empty page URL.
EXPECT_THAT(ContentPageAnnotatorDriver::GenerateSourceId(
GURL(""), "https://absolute.com/img.jpg"),
IsEmpty());
// Invalid page URL for a relative src.
EXPECT_THAT(ContentPageAnnotatorDriver::GenerateSourceId(
GURL("invalid_page_url"), "relative.jpg"),
IsEmpty());
// Invalid page URL for an absolute src.
EXPECT_THAT(ContentPageAnnotatorDriver::GenerateSourceId(
GURL("invalid_page_url"), "https://absolute.com/img.jpg"),
IsEmpty());
// No relative src.
EXPECT_THAT(ContentPageAnnotatorDriver::GenerateSourceId(
GURL("https://website.com"), ""),
IsEmpty());
// No data URI.
EXPECT_THAT(ContentPageAnnotatorDriver::GenerateSourceId(
GURL("http://website.com"), "data:"),
IsEmpty());
}
TEST(ContentPageAnnotatorDriverTest, GenerateSourceIdSuccess) {
const GURL page_url("https://website.com/folder/page.html");
EXPECT_THAT(
ContentPageAnnotatorDriver::GenerateSourceId(page_url, "relative.jpg"),
Eq("https://website.com/folder/relative.jpg"));
EXPECT_THAT(ContentPageAnnotatorDriver::GenerateSourceId(
page_url, "https://absolute.com/img.jpg"),
Eq("https://absolute.com/img.jpg"));
// Arbitrary image data.
constexpr char kImageData[] = "image/png;base64,ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// The SHA256 hash of the above data encoded in base 64.
constexpr char kBase64Sha256Output[] =
"/xjMyCY9UxaB3RbVCyijwPy4/LI6NpO/hCDGQJrJttc=";
EXPECT_THAT(ContentPageAnnotatorDriver::GenerateSourceId(
page_url, base::StrCat({"data:", kImageData})),
Eq(kBase64Sha256Output));
}
} // namespace page_image_annotation