1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/dom_distiller/core/url_utils.h"
6
7#include "testing/gtest/include/gtest/gtest.h"
8
9namespace dom_distiller {
10
11namespace url_utils {
12
13TEST(DomDistillerUrlUtilsTest, TestPathUtil) {
14  const std::string single_key = "mypath?foo=bar";
15  EXPECT_EQ("bar", GetValueForKeyInUrlPathQuery(single_key, "foo"));
16  const std::string two_keys = "mypath?key1=foo&key2=bar";
17  EXPECT_EQ("foo", GetValueForKeyInUrlPathQuery(two_keys, "key1"));
18  EXPECT_EQ("bar", GetValueForKeyInUrlPathQuery(two_keys, "key2"));
19  const std::string multiple_same_key = "mypath?key=foo&key=bar";
20  EXPECT_EQ("foo", GetValueForKeyInUrlPathQuery(multiple_same_key, "key"));
21}
22
23TEST(DomDistillerUrlUtilsTest, TestGetValueForKeyInUrlPathQuery) {
24  // Tests an invalid url.
25  const std::string invalid_url = "http://%40[::1]/";
26  EXPECT_EQ("", GetValueForKeyInUrlPathQuery(invalid_url, "key"));
27
28  // Test a valid URL with the key we are searching for.
29  const std::string valid_url_with_key = "http://www.google.com?key=foo";
30  EXPECT_EQ("foo", GetValueForKeyInUrlPathQuery(valid_url_with_key, "key"));
31
32  // Test a valid URL without the key we are searching for.
33  const std::string valid_url_no_key = "http://www.google.com";
34  EXPECT_EQ("", GetValueForKeyInUrlPathQuery(valid_url_no_key, "key"));
35
36  // Test a valid URL with 2 values of the key we are searching for.
37  const std::string valid_url_two_keys =
38      "http://www.google.com?key=foo&key=bar";
39  EXPECT_EQ("foo", GetValueForKeyInUrlPathQuery(valid_url_two_keys, "key"));
40}
41
42}  // namespace url_utils
43
44}  // namespace dom_distiller
45