/*
 * Copyright 2016 Google Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "url.h"

#include <gtest/gtest.h>

namespace http {
namespace {

class InvalidUrlTest : public testing::TestWithParam<const char *> {
};

TEST_P(InvalidUrlTest, Invalid) {
  Url url;
  EXPECT_FALSE(url.Parse(GetParam()));
  EXPECT_FALSE(url.ok());
}

INSTANTIATE_TEST_CASE_P(
    InvalidUrls,
    InvalidUrlTest,
    testing::Values(
        "http://",
        "//",
        "http://foo//",
        "https://example.com:/",
        "http://example.com:234567",
        "2600:55::00ad:d001",
        "2600:55::00ad:d001]",
        "[2600:55::00ad:d001",
        "[2600:55::00ad:d001]:"
    ));

void VerifyOk(const std::string &raw_url,
              bool absolute,
              const std::string &scheme,
              const std::string &host,
              int port,
              const std::string &path,
              const std::string &query_string,
              const std::string &fragment,
              const std::string &normal_url) {
  Url url;
  url.Parse(raw_url);
  EXPECT_TRUE(url.ok());
  EXPECT_EQ(absolute, url.absolute());
  EXPECT_EQ(scheme, url.scheme());
  EXPECT_EQ(host, url.host());
  EXPECT_EQ(port, url.port());
  EXPECT_EQ(path, url.path());
  EXPECT_EQ(query_string, url.query_string());
  EXPECT_EQ(fragment, url.fragment());
  EXPECT_EQ(normal_url, url.url());
}

TEST(UrlTest, Empty_NotOk) {
  Url url;
  EXPECT_FALSE(url.ok());
  EXPECT_EQ("", url.scheme());
  EXPECT_EQ("", url.host());
  EXPECT_EQ(0, url.port());
  EXPECT_EQ("", url.path());
  EXPECT_EQ("", url.query_string());
  EXPECT_EQ("", url.fragment());
}

TEST(UrlTest, HostOnly_Ok) {
  VerifyOk("www.example.com",
           true,
           "http",
           "www.example.com",
           80,
           "/",
           "",
           "",
           "http://www.example.com/");
}

TEST(UrlTest, HostOnlyTrailingSlash_Ok) {
  VerifyOk("www.example.com/",
           true,
           "http",
           "www.example.com",
           80,
           "/",
           "",
           "",
           "http://www.example.com/");
}

TEST(UrlTest, HostPort_Ok) {
  VerifyOk("www.example.com:3111",
           true,
           "http",
           "www.example.com",
           3111,
           "/",
           "",
           "",
           "http://www.example.com:3111/");
}

TEST(UrlTest, HostPortTrailingSlash_Ok) {
  VerifyOk("www.example.com:3111/",
           true,
           "http",
           "www.example.com",
           3111,
           "/",
           "",
           "",
           "http://www.example.com:3111/");
}

TEST(UrlTest, SchemeAndHost_Ok) {
  VerifyOk("https://www.example.com",
           true,
           "https",
           "www.example.com",
           443,
           "/",
           "",
           "",
           "https://www.example.com/");
}

TEST(UrlTest, SchemeAndHostTrailingSlash_Ok) {
  VerifyOk("https://www.example.com/",
           true,
           "https",
           "www.example.com",
           443,
           "/",
           "",
           "",
           "https://www.example.com/");
}

TEST(UrlTest, SchemeHostPort_Ok) {
  VerifyOk("http://www.example.com:7001",
           true,
           "http",
           "www.example.com",
           7001,
           "/",
           "",
           "",
           "http://www.example.com:7001/");
}

TEST(UrlTest, SchemeHostPortTrailingSlash_Ok) {
  VerifyOk("http://www.example.com:7001/",
           true,
           "http",
           "www.example.com",
           7001,
           "/",
           "",
           "",
           "http://www.example.com:7001/");
}

TEST(UrlTest, AbsolutePathOnly_Ok) {
  VerifyOk("/path/to/resource",
           false,
           "",
           "",
           0,
           "/path/to/resource",
           "",
           "",
           "/path/to/resource");
}

TEST(UrlTest, HostPath_Ok) {
  VerifyOk("foo/bar/path",
           true,
           "http",
           "foo",
           80,
           "/bar/path",
           "",
           "",
           "http://foo/bar/path");
}

TEST(UrlTest, SchemaHostQueryString_Ok) {
  VerifyOk("http://localhost?foo=bar&a=b",
           true,
           "http",
           "localhost",
           80,
           "/",
           "foo=bar&a=b",
           "",
           "http://localhost/?foo=bar&a=b");
}

TEST(UrlTest, SchemaHostSlashQueryString_Ok) {
  VerifyOk("http://localhost/?foo=bar&abc=def",
           true,
           "http",
           "localhost",
           80,
           "/",
           "foo=bar&abc=def",
           "",
           "http://localhost/?foo=bar&abc=def");
}

TEST(UrlTest, SchemaHostPathQueryString_Ok) {
  VerifyOk("http://localhost/cgi-bin/download?foo=bar",
           true,
           "http",
           "localhost",
           80,
           "/cgi-bin/download",
           "foo=bar",
           "",
           "http://localhost/cgi-bin/download?foo=bar");
}

TEST(UrlTest, Fragment_Ok) {
  VerifyOk("#foo",
           false,
           "",
           "",
           0,
           "",
           "",
           "foo",
           "#foo");
}

TEST(UrlTest, HostFragment_Ok) {
  VerifyOk("www.example.com#foo",
           true,
           "http",
           "www.example.com",
           80,
           "/",
           "",
           "foo",
           "http://www.example.com/#foo");
}

TEST(UrlTest, HostPortSlashFragment_Ok) {
  VerifyOk("https://www.example.com:3011/#foo",
           true,
           "https",
           "www.example.com",
           3011,
           "/",
           "",
           "foo",
           "https://www.example.com:3011/#foo");
}

TEST(UrlTest, IPv6_Ok) {
  VerifyOk("[e712:ff00:3::ad]",
           true,
           "http",
           "[e712:ff00:3::ad]",
           80,
           "/",
           "",
           "",
           "http://[e712:ff00:3::ad]/");
}

TEST(UrlTest, IPv6Slash_Ok) {
  VerifyOk("[e712:ff00:3::ad]/",
           true,
           "http",
           "[e712:ff00:3::ad]",
           80,
           "/",
           "",
           "",
           "http://[e712:ff00:3::ad]/");
}

TEST(UrlTest, IPv6Path_Ok) {
  VerifyOk("[e712:ff00:3::ad]/foo/bar",
           true,
           "http",
           "[e712:ff00:3::ad]",
           80,
           "/foo/bar",
           "",
           "",
           "http://[e712:ff00:3::ad]/foo/bar");
}

TEST(UrlTest, IPv6Port_Ok) {
  VerifyOk("[e712:ff00:3::ad]:3303",
           true,
           "http",
           "[e712:ff00:3::ad]",
           3303,
           "/",
           "",
           "",
           "http://[e712:ff00:3::ad]:3303/");
}

TEST(UrlTest, IPv6PortSlash_Ok) {
  VerifyOk("[e712:ff00:3::ad]:3303/",
           true,
           "http",
           "[e712:ff00:3::ad]",
           3303,
           "/",
           "",
           "",
           "http://[e712:ff00:3::ad]:3303/");
}

TEST(UrlTest, IPv6PortPath_Ok) {
  VerifyOk("[e712:ff00:3::ad]:3303/abc/def",
           true,
           "http",
           "[e712:ff00:3::ad]",
           3303,
           "/abc/def",
           "",
           "",
           "http://[e712:ff00:3::ad]:3303/abc/def");
}

TEST(UrlTest, SchemeIPv6_Ok) {
  VerifyOk("https://[e712:ff00:3::ad]",
           true,
           "https",
           "[e712:ff00:3::ad]",
           443,
           "/",
           "",
           "",
           "https://[e712:ff00:3::ad]/");
}

TEST(UrlTest, SchemeIPv6Slash_Ok) {
  VerifyOk("https://[e712:ff00:3::ad]/",
           true,
           "https",
           "[e712:ff00:3::ad]",
           443,
           "/",
           "",
           "",
           "https://[e712:ff00:3::ad]/");
}

TEST(UrlTest, SchemeIPv6Path_Ok) {
  VerifyOk("https://[e712:ff00:3::ad]/def/ghi/",
           true,
           "https",
           "[e712:ff00:3::ad]",
           443,
           "/def/ghi/",
           "",
           "",
           "https://[e712:ff00:3::ad]/def/ghi/");
}

TEST(UrlTest, SchemeIPv6Port_Ok) {
  VerifyOk("https://[e712:ff00:3::ad]:3303",
           true,
           "https",
           "[e712:ff00:3::ad]",
           3303,
           "/",
           "",
           "",
           "https://[e712:ff00:3::ad]:3303/");
}

TEST(UrlTest, SchemeIPv6PortSlash_Ok) {
  VerifyOk("https://[e712:ff00:3::ad]:3303/",
           true,
           "https",
           "[e712:ff00:3::ad]",
           3303,
           "/",
           "",
           "",
           "https://[e712:ff00:3::ad]:3303/");
}

TEST(UrlTest, SchemeIPv6PortPath_Ok) {
  VerifyOk("https://[e712:ff00:3::ad]:3303/dir",
           true,
           "https",
           "[e712:ff00:3::ad]",
           3303,
           "/dir",
           "",
           "",
           "https://[e712:ff00:3::ad]:3303/dir");
}

TEST(UrlTest, FullHost_Ok) {
  VerifyOk("http://www.example.com:7889/path/to/foo?a=b&c=d#foo",
           true,
           "http",
           "www.example.com",
           7889,
           "/path/to/foo",
           "a=b&c=d",
           "foo",
           "http://www.example.com:7889/path/to/foo?a=b&c=d#foo");
}

TEST(UrlTest, FullIPv6_Ok) {
  VerifyOk("http://[26e5:0030:2:4::efad:0001:200e]:2345/path?a=b&c=d#foo",
           true,
           "http",
           "[26e5:0030:2:4::efad:0001:200e]",
           2345,
           "/path",
           "a=b&c=d",
           "foo",
           "http://[26e5:0030:2:4::efad:0001:200e]:2345/path?a=b&c=d#foo");
}

}  // namespace
}  // namespace http
