blob: 761ef0f973875529f186f9a4d4e0b13933cd009e [file] [log] [blame]
// 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 "net/dns/public/util.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace net {
namespace dns_util {
TEST(DnsPublicUtilTest, IsValidDoHTemplate) {
EXPECT_TRUE(IsValidDoHTemplate(
"https://dnsserver.example.net/dns-query{?dns}", "GET"));
EXPECT_TRUE(IsValidDoHTemplate(
"https://dnsserver.example.net/dns-query{?dns,extra}", "GET"));
EXPECT_TRUE(IsValidDoHTemplate(
"https://dnsserver.example.net/dns-query{?dns}", "POST"));
EXPECT_TRUE(IsValidDoHTemplate(
"https://dnsserver.example.net/dns-query{?query}", "POST"));
EXPECT_TRUE(
IsValidDoHTemplate("https://dnsserver.example.net/dns-query", "POST"));
EXPECT_TRUE(
IsValidDoHTemplate("https://query:{dns}@dnsserver.example.net", "GET"));
EXPECT_TRUE(IsValidDoHTemplate("https://dnsserver.example.net{/dns}", "GET"));
// Invalid template format
EXPECT_FALSE(IsValidDoHTemplate(
"https://dnsserver.example.net/dns-query{{?dns}}", "GET"));
// Must be HTTPS
EXPECT_FALSE(
IsValidDoHTemplate("http://dnsserver.example.net/dns-query", "POST"));
EXPECT_FALSE(IsValidDoHTemplate(
"http://dnsserver.example.net/dns-query{?dns}", "GET"));
// GET requests require the template to have a dns variable
EXPECT_FALSE(IsValidDoHTemplate(
"https://dnsserver.example.net/dns-query{?query}", "GET"));
// Template must expand to a valid URL
EXPECT_FALSE(IsValidDoHTemplate("https://{?dns}", "GET"));
// The hostname must not contain the dns variable
EXPECT_FALSE(IsValidDoHTemplate("https://{dns}.dnsserver.net", "GET"));
}
} // namespace dns_util
} // namespace net