blob: 479bcb282f04f4b5ddd1dc689aa61041f8bcd425 [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/services/quarantine/common.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
TEST(QuarantineCommonTest, SanitizeUrlForQuarantine) {
struct {
const char* input;
const char* expected_output;
} kTestCases[] = {
// Credentials stripped from http URL.
{"http://foo:bar@s.example/x/y/z", "http://s.example/x/y/z"},
// Preserve query and fragment of http{s} URL.
{"http://a.example/x/y?q=f&r=g#blah",
"http://a.example/x/y?q=f&r=g#blah"},
{"https://a.example/x/y?q=f#h", "https://a.example/x/y?q=f#h"},
// Ditto for ws{s} URL.
{"ws://a.example/x/y?q=f", "ws://a.example/x/y?q=f"},
{"wss://a.example/x/y?q=f", "wss://a.example/x/y?q=f"},
// Credentials stripped from wss URL.
{"wss://foo:bar@a.example/x/y?q=f", "wss://a.example/x/y?q=f"},
// blob URLs get reduced to origin.
{"blob:https://b.example/x/y/z", "https://b.example/"},
{"blob:https://foo:bar@b.example/x/y/z?q", "https://b.example/"},
// filesystem URLs get reduced to origin.
{"filesystem:https://example.com/temporary/m", "https://example.com/"},
{"filesystem:https://foo:bar@example.com/temporary/m",
"https://example.com/"},
// Unknown scheme is passed through as-is.
{"some-random-scheme:randomdata", "some-random-scheme:randomdata"},
// data URL is dropped.
{"data:text/plain,hello%20world!", ""},
// Invalid URL is dropped.
{"1|\\|\\/4L||>", ""},
};
for (const auto test_case : kTestCases) {
GURL input_url{test_case.input};
GURL output = quarantine::SanitizeUrlForQuarantine(input_url);
EXPECT_EQ(test_case.expected_output, output)
<< "Input : " << test_case.input;
}
}