diff options
Diffstat (limited to 'chromium/chrome/renderer/app_categorizer_unittest.cc')
-rw-r--r-- | chromium/chrome/renderer/app_categorizer_unittest.cc | 79 |
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"))); + } +} |