OLD | NEW |
(Empty) | |
| 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 "mojo/runner/url_resolver.h" |
| 6 |
| 7 #include "base/files/file_util.h" |
| 8 #include "base/files/scoped_temp_dir.h" |
| 9 #include "base/logging.h" |
| 10 #include "mojo/util/filename_util.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 |
| 13 namespace mojo { |
| 14 namespace runner { |
| 15 namespace test { |
| 16 namespace { |
| 17 |
| 18 typedef testing::Test URLResolverTest; |
| 19 |
| 20 TEST_F(URLResolverTest, MojoURLsFallThrough) { |
| 21 URLResolver resolver; |
| 22 resolver.AddURLMapping(GURL("mojo:test"), GURL("mojo:foo")); |
| 23 const GURL base_url("file:/base"); |
| 24 resolver.SetMojoBaseURL(base_url); |
| 25 GURL mapped_url = resolver.ApplyMappings(GURL("mojo:test")); |
| 26 std::string resolved(resolver.ResolveMojoURL(mapped_url).spec()); |
| 27 // Resolved must start with |base_url|. |
| 28 EXPECT_EQ(base_url.spec(), resolved.substr(0, base_url.spec().size())); |
| 29 // And must contain foo. |
| 30 EXPECT_NE(std::string::npos, resolved.find("foo")); |
| 31 } |
| 32 |
| 33 TEST_F(URLResolverTest, MapURL) { |
| 34 URLResolver resolver; |
| 35 resolver.AddURLMapping(GURL("https://domokit.org/test.mojo"), |
| 36 GURL("file:///mojo/src/out/Debug/test.mojo")); |
| 37 GURL mapped_url = |
| 38 resolver.ApplyMappings(GURL("https://domokit.org/test.mojo")); |
| 39 EXPECT_EQ("file:///mojo/src/out/Debug/test.mojo", mapped_url.spec()); |
| 40 } |
| 41 |
| 42 TEST_F(URLResolverTest, MultipleMapURL) { |
| 43 URLResolver resolver; |
| 44 resolver.AddURLMapping(GURL("https://a.org/foo"), |
| 45 GURL("https://b.org/a/foo")); |
| 46 resolver.AddURLMapping(GURL("https://b.org/a/foo"), |
| 47 GURL("https://c.org/b/a/foo")); |
| 48 GURL mapped_url = resolver.ApplyMappings(GURL("https://a.org/foo")); |
| 49 EXPECT_EQ("https://c.org/b/a/foo", mapped_url.spec()); |
| 50 } |
| 51 |
| 52 TEST_F(URLResolverTest, MapOrigin) { |
| 53 URLResolver resolver; |
| 54 resolver.AddOriginMapping(GURL("https://domokit.org"), |
| 55 GURL("file:///mojo/src/out/Debug")); |
| 56 GURL mapped_url = |
| 57 resolver.ApplyMappings(GURL("https://domokit.org/test.mojo")); |
| 58 EXPECT_EQ("file:///mojo/src/out/Debug/test.mojo", mapped_url.spec()); |
| 59 } |
| 60 |
| 61 TEST_F(URLResolverTest, MultipleMapOrigin) { |
| 62 URLResolver resolver; |
| 63 resolver.AddOriginMapping(GURL("https://a.org"), GURL("https://b.org/a")); |
| 64 resolver.AddOriginMapping(GURL("https://b.org"), GURL("https://c.org/b")); |
| 65 GURL mapped_url = resolver.ApplyMappings(GURL("https://a.org/foo")); |
| 66 EXPECT_EQ("https://c.org/b/a/foo", mapped_url.spec()); |
| 67 } |
| 68 |
| 69 TEST_F(URLResolverTest, MapOriginThenURL) { |
| 70 URLResolver resolver; |
| 71 resolver.AddOriginMapping(GURL("https://a.org"), GURL("https://b.org/a")); |
| 72 resolver.AddURLMapping(GURL("https://b.org/a/foo"), |
| 73 GURL("https://c.org/b/a/foo")); |
| 74 GURL mapped_url = resolver.ApplyMappings(GURL("https://a.org/foo")); |
| 75 EXPECT_EQ("https://c.org/b/a/foo", mapped_url.spec()); |
| 76 } |
| 77 |
| 78 TEST_F(URLResolverTest, MapURLThenOrigin) { |
| 79 URLResolver resolver; |
| 80 resolver.AddURLMapping(GURL("https://a.org/foo"), |
| 81 GURL("https://b.org/a/foo")); |
| 82 resolver.AddOriginMapping(GURL("https://b.org"), GURL("https://c.org/b")); |
| 83 GURL mapped_url = resolver.ApplyMappings(GURL("https://a.org/foo")); |
| 84 EXPECT_EQ("https://c.org/b/a/foo", mapped_url.spec()); |
| 85 } |
| 86 |
| 87 #if defined(OS_POSIX) |
| 88 #define ARG_LITERAL(x) x |
| 89 #elif defined(OS_WIN) |
| 90 #define ARG_LITERAL(x) L ## x |
| 91 #endif |
| 92 |
| 93 TEST_F(URLResolverTest, GetOriginMappings) { |
| 94 base::CommandLine::StringVector args; |
| 95 args.push_back(ARG_LITERAL("--map-origin=https://a.org=https://b.org/a")); |
| 96 std::vector<URLResolver::OriginMapping> mappings = |
| 97 URLResolver::GetOriginMappings(args); |
| 98 ASSERT_EQ(1U, mappings.size()); |
| 99 EXPECT_EQ("https://a.org", mappings[0].origin); |
| 100 EXPECT_EQ("https://b.org/a", mappings[0].base_url); |
| 101 |
| 102 args.clear(); |
| 103 args.push_back(ARG_LITERAL("-map-origin=https://a.org=https://b.org/a")); |
| 104 mappings = URLResolver::GetOriginMappings(args); |
| 105 ASSERT_EQ(1U, mappings.size()); |
| 106 EXPECT_EQ("https://a.org", mappings[0].origin); |
| 107 EXPECT_EQ("https://b.org/a", mappings[0].base_url); |
| 108 |
| 109 args.clear(); |
| 110 args.push_back(ARG_LITERAL("--map-origin")); |
| 111 mappings = URLResolver::GetOriginMappings(args); |
| 112 EXPECT_EQ(0U, mappings.size()); |
| 113 |
| 114 args.clear(); |
| 115 args.push_back(ARG_LITERAL("--map-origin=")); |
| 116 mappings = URLResolver::GetOriginMappings(args); |
| 117 EXPECT_EQ(0U, mappings.size()); |
| 118 |
| 119 args.clear(); |
| 120 args.push_back(ARG_LITERAL("mojo_shell")); |
| 121 args.push_back(ARG_LITERAL("--map-origin=https://a.org=https://b.org/a")); |
| 122 args.push_back(ARG_LITERAL("--map-origin=https://b.org=https://c.org/b")); |
| 123 args.push_back(ARG_LITERAL("https://a.org/foo")); |
| 124 mappings = URLResolver::GetOriginMappings(args); |
| 125 ASSERT_EQ(2U, mappings.size()); |
| 126 EXPECT_EQ("https://a.org", mappings[0].origin); |
| 127 EXPECT_EQ("https://b.org/a", mappings[0].base_url); |
| 128 EXPECT_EQ("https://b.org", mappings[1].origin); |
| 129 EXPECT_EQ("https://c.org/b", mappings[1].base_url); |
| 130 } |
| 131 |
| 132 TEST_F(URLResolverTest, TestQueryForURLMapping) { |
| 133 URLResolver resolver; |
| 134 resolver.SetMojoBaseURL(GURL("file:/base")); |
| 135 resolver.AddURLMapping(GURL("https://a.org/foo"), |
| 136 GURL("https://b.org/a/foo")); |
| 137 resolver.AddURLMapping(GURL("https://b.org/a/foo"), |
| 138 GURL("https://c.org/b/a/foo")); |
| 139 GURL mapped_url = resolver.ApplyMappings(GURL("https://a.org/foo?a=b")); |
| 140 EXPECT_EQ("https://c.org/b/a/foo?a=b", mapped_url.spec()); |
| 141 } |
| 142 |
| 143 TEST_F(URLResolverTest, TestQueryForBaseFileURL) { |
| 144 URLResolver resolver; |
| 145 resolver.SetMojoBaseURL(GURL("file:///base")); |
| 146 GURL mapped_url = resolver.ResolveMojoURL(GURL("mojo:foo?a=b")); |
| 147 EXPECT_EQ("file:///base/foo/foo.mojo?a=b", mapped_url.spec()); |
| 148 } |
| 149 |
| 150 TEST_F(URLResolverTest, TestQueryForBaseHttpURL) { |
| 151 URLResolver resolver; |
| 152 resolver.SetMojoBaseURL(GURL("http://127.0.0.1:1234")); |
| 153 GURL mapped_url = resolver.ResolveMojoURL(GURL("mojo:foo?a=b")); |
| 154 EXPECT_EQ("http://127.0.0.1:1234/foo/foo.mojo?a=b", mapped_url.spec()); |
| 155 } |
| 156 |
| 157 } // namespace |
| 158 } // namespace test |
| 159 } // namespace runner |
| 160 } // namespace mojo |
OLD | NEW |