OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "shell/url_resolver.h" | 5 #include "shell/url_resolver.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 namespace mojo { | 10 namespace mojo { |
11 namespace shell { | 11 namespace shell { |
12 namespace test { | 12 namespace test { |
13 namespace { | 13 namespace { |
14 | 14 |
15 typedef testing::Test URLResolverTest; | 15 typedef testing::Test URLResolverTest; |
16 | 16 |
17 TEST_F(URLResolverTest, MojoURLsFallThrough) { | 17 TEST_F(URLResolverTest, MojoURLsFallThrough) { |
18 URLResolver resolver; | 18 URLResolver resolver; |
19 resolver.AddURLMapping(GURL("mojo:test"), GURL("mojo:foo")); | 19 resolver.AddURLMapping(GURL("mojo:test"), GURL("mojo:foo")); |
20 const GURL base_url("file:/base"); | 20 const GURL base_url("file:/base"); |
21 resolver.SetMojoBaseURL(base_url); | 21 resolver.SetMojoBaseURL(base_url); |
22 GURL mapped_url = resolver.ApplyURLMappings(GURL("mojo:test")); | 22 GURL mapped_url = resolver.ApplyMappings(GURL("mojo:test")); |
23 std::string resolved(resolver.ResolveMojoURL(mapped_url).spec()); | 23 std::string resolved(resolver.ResolveMojoURL(mapped_url).spec()); |
24 // Resolved must start with |base_url|. | 24 // Resolved must start with |base_url|. |
25 EXPECT_EQ(base_url.spec(), resolved.substr(0, base_url.spec().size())); | 25 EXPECT_EQ(base_url.spec(), resolved.substr(0, base_url.spec().size())); |
26 // And must contain foo. | 26 // And must contain foo. |
27 EXPECT_NE(std::string::npos, resolved.find("foo")); | 27 EXPECT_NE(std::string::npos, resolved.find("foo")); |
28 } | 28 } |
29 | 29 |
| 30 TEST_F(URLResolverTest, MapURL) { |
| 31 URLResolver resolver; |
| 32 resolver.AddURLMapping(GURL("https://domokit.org/test.mojo"), |
| 33 GURL("file:///mojo/src/out/Debug/test.mojo")); |
| 34 GURL mapped_url = |
| 35 resolver.ApplyMappings(GURL("https://domokit.org/test.mojo")); |
| 36 EXPECT_EQ("file:///mojo/src/out/Debug/test.mojo", mapped_url.spec()); |
| 37 } |
| 38 |
| 39 TEST_F(URLResolverTest, MultipleMapURL) { |
| 40 URLResolver resolver; |
| 41 resolver.AddURLMapping(GURL("https://a.org/foo"), |
| 42 GURL("https://b.org/a/foo")); |
| 43 resolver.AddURLMapping(GURL("https://b.org/a/foo"), |
| 44 GURL("https://c.org/b/a/foo")); |
| 45 GURL mapped_url = resolver.ApplyMappings(GURL("https://a.org/foo")); |
| 46 EXPECT_EQ("https://c.org/b/a/foo", mapped_url.spec()); |
| 47 } |
| 48 |
| 49 TEST_F(URLResolverTest, MapOrigin) { |
| 50 URLResolver resolver; |
| 51 resolver.AddOriginMapping(GURL("https://domokit.org"), |
| 52 GURL("file:///mojo/src/out/Debug")); |
| 53 GURL mapped_url = |
| 54 resolver.ApplyMappings(GURL("https://domokit.org/test.mojo")); |
| 55 EXPECT_EQ("file:///mojo/src/out/Debug/test.mojo", mapped_url.spec()); |
| 56 } |
| 57 |
| 58 TEST_F(URLResolverTest, MultipleMapOrigin) { |
| 59 URLResolver resolver; |
| 60 resolver.AddOriginMapping(GURL("https://a.org"), GURL("https://b.org/a")); |
| 61 resolver.AddOriginMapping(GURL("https://b.org"), GURL("https://c.org/b")); |
| 62 GURL mapped_url = resolver.ApplyMappings(GURL("https://a.org/foo")); |
| 63 EXPECT_EQ("https://c.org/b/a/foo", mapped_url.spec()); |
| 64 } |
| 65 |
| 66 TEST_F(URLResolverTest, MapOriginThenURL) { |
| 67 URLResolver resolver; |
| 68 resolver.AddOriginMapping(GURL("https://a.org"), GURL("https://b.org/a")); |
| 69 resolver.AddURLMapping(GURL("https://b.org/a/foo"), |
| 70 GURL("https://c.org/b/a/foo")); |
| 71 GURL mapped_url = resolver.ApplyMappings(GURL("https://a.org/foo")); |
| 72 EXPECT_EQ("https://c.org/b/a/foo", mapped_url.spec()); |
| 73 } |
| 74 |
| 75 TEST_F(URLResolverTest, MapURLThenOrigin) { |
| 76 URLResolver resolver; |
| 77 resolver.AddURLMapping(GURL("https://a.org/foo"), |
| 78 GURL("https://b.org/a/foo")); |
| 79 resolver.AddOriginMapping(GURL("https://b.org"), GURL("https://c.org/b")); |
| 80 GURL mapped_url = resolver.ApplyMappings(GURL("https://a.org/foo")); |
| 81 EXPECT_EQ("https://c.org/b/a/foo", mapped_url.spec()); |
| 82 } |
| 83 |
| 84 TEST_F(URLResolverTest, GetOriginMappings) { |
| 85 std::vector<std::string> args; |
| 86 args.push_back("--map-origin=https://a.org=https://b.org/a"); |
| 87 std::vector<URLResolver::OriginMapping> mappings = |
| 88 URLResolver::GetOriginMappings(args); |
| 89 ASSERT_EQ(1U, mappings.size()); |
| 90 EXPECT_EQ("https://a.org", mappings[0].origin); |
| 91 EXPECT_EQ("https://b.org/a", mappings[0].base_url); |
| 92 |
| 93 args.clear(); |
| 94 args.push_back("-map-origin=https://a.org=https://b.org/a"); |
| 95 mappings = URLResolver::GetOriginMappings(args); |
| 96 ASSERT_EQ(1U, mappings.size()); |
| 97 EXPECT_EQ("https://a.org", mappings[0].origin); |
| 98 EXPECT_EQ("https://b.org/a", mappings[0].base_url); |
| 99 |
| 100 args.clear(); |
| 101 args.push_back("--map-origin"); |
| 102 mappings = URLResolver::GetOriginMappings(args); |
| 103 EXPECT_EQ(0U, mappings.size()); |
| 104 |
| 105 args.clear(); |
| 106 args.push_back("--map-origin="); |
| 107 mappings = URLResolver::GetOriginMappings(args); |
| 108 EXPECT_EQ(0U, mappings.size()); |
| 109 |
| 110 args.clear(); |
| 111 args.push_back("mojo_shell"); |
| 112 args.push_back("--args-for=https://a.org/foo --test"); |
| 113 args.push_back("--map-origin=https://a.org=https://b.org/a"); |
| 114 args.push_back("--map-origin=https://b.org=https://c.org/b"); |
| 115 args.push_back("https://a.org/foo"); |
| 116 mappings = URLResolver::GetOriginMappings(args); |
| 117 ASSERT_EQ(2U, mappings.size()); |
| 118 EXPECT_EQ("https://a.org", mappings[0].origin); |
| 119 EXPECT_EQ("https://b.org/a", mappings[0].base_url); |
| 120 EXPECT_EQ("https://b.org", mappings[1].origin); |
| 121 EXPECT_EQ("https://c.org/b", mappings[1].base_url); |
| 122 } |
| 123 |
30 } // namespace | 124 } // namespace |
31 } // namespace test | 125 } // namespace test |
32 } // namespace shell | 126 } // namespace shell |
33 } // namespace mojo | 127 } // namespace mojo |
OLD | NEW |