summaryrefslogtreecommitdiff
path: root/chromium/chrome/renderer/app_categorizer_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/renderer/app_categorizer_unittest.cc')
-rw-r--r--chromium/chrome/renderer/app_categorizer_unittest.cc79
1 files changed, 79 insertions, 0 deletions
diff --git a/chromium/chrome/renderer/app_categorizer_unittest.cc b/chromium/chrome/renderer/app_categorizer_unittest.cc
new file mode 100644
index 00000000000..7439061dc56
--- /dev/null
+++ b/chromium/chrome/renderer/app_categorizer_unittest.cc
@@ -0,0 +1,79 @@
+// Copyright 2016 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 "chrome/renderer/app_categorizer.h"
+
+#include "base/stl_util.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+
+namespace {
+
+const char* kChatAppURLs[] = {
+ "https://hangouts.google.com/hangouts/foo",
+ "https://hAnGoUtS.gOoGlE.com/HaNgOuTs/foo",
+ "https://meet.google.com/hangouts/foo",
+ "https://talkgadget.google.com/hangouts/foo",
+ "https://staging.talkgadget.google.com/hangouts/foo",
+ "https://plus.google.com/hangouts/foo",
+ "https://plus.sandbox.google.com/hangouts/foo"
+};
+
+const char* kChatManifestFSs[] = {
+ "filesystem:https://hangouts.google.com/foo",
+ "filesystem:https://hAnGoUtS.gOoGlE.com/foo",
+ "filesystem:https://meet.google.com/foo",
+ "filesystem:https://talkgadget.google.com/foo",
+ "filesystem:https://staging.talkgadget.google.com/foo",
+ "filesystem:https://plus.google.com/foo",
+ "filesystem:https://plus.sandbox.google.com/foo"
+};
+
+const char* kBadChatAppURLs[] = {
+ "http://talkgadget.google.com/hangouts/foo", // not https
+ "https://talkgadget.evil.com/hangouts/foo" // domain not whitelisted
+};
+
+} // namespace
+
+TEST(AppCategorizerTest, IsHangoutsUrl) {
+ for (size_t i = 0; i < base::size(kChatAppURLs); ++i) {
+ EXPECT_TRUE(AppCategorizer::IsHangoutsUrl(GURL(kChatAppURLs[i])));
+ }
+
+ for (size_t i = 0; i < base::size(kBadChatAppURLs); ++i) {
+ EXPECT_FALSE(AppCategorizer::IsHangoutsUrl(GURL(kBadChatAppURLs[i])));
+ }
+}
+
+TEST(AppCategorizerTest, IsWhitelistedApp) {
+ // Hangouts app
+ {
+ EXPECT_EQ(base::size(kChatAppURLs), base::size(kChatManifestFSs));
+ for (size_t i = 0; i < base::size(kChatAppURLs); ++i) {
+ EXPECT_TRUE(AppCategorizer::IsWhitelistedApp(
+ GURL(kChatManifestFSs[i]), GURL(kChatAppURLs[i])));
+ }
+ for (size_t i = 0; i < base::size(kBadChatAppURLs); ++i) {
+ EXPECT_FALSE(AppCategorizer::IsWhitelistedApp(
+ GURL("filesystem:https://irrelevant.com/"),
+ GURL(kBadChatAppURLs[i])));
+ }
+
+ // Manifest URL not filesystem
+ EXPECT_FALSE(AppCategorizer::IsWhitelistedApp(
+ GURL("https://hangouts.google.com/foo"),
+ GURL("https://hangouts.google.com/hangouts/foo")));
+
+ // Manifest URL not https
+ EXPECT_FALSE(AppCategorizer::IsWhitelistedApp(
+ GURL("filesystem:http://hangouts.google.com/foo"),
+ GURL("https://hangouts.google.com/hangouts/foo")));
+
+ // Manifest URL hostname does not match that of the app URL
+ EXPECT_FALSE(AppCategorizer::IsWhitelistedApp(
+ GURL("filesystem:https://meet.google.com/foo"),
+ GURL("https://hangouts.google.com/hangouts/foo")));
+ }
+}