Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Unified Diff: ios/chrome/browser/ui/dialogs/nsurl_protection_space_util_unittest.mm

Issue 2588713002: Upstream Chrome on iOS source code [4/11]. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/dialogs/nsurl_protection_space_util_unittest.mm
diff --git a/ios/chrome/browser/ui/dialogs/nsurl_protection_space_util_unittest.mm b/ios/chrome/browser/ui/dialogs/nsurl_protection_space_util_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..6a92896785fbe4a4c14b0cb8ca8b12bde13bf248
--- /dev/null
+++ b/ios/chrome/browser/ui/dialogs/nsurl_protection_space_util_unittest.mm
@@ -0,0 +1,171 @@
+// Copyright 2015 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.
+
+#import "ios/chrome/browser/ui/dialogs/nsurl_protection_space_util.h"
+
+#include "base/ios/ios_util.h"
+#import "base/mac/scoped_nsobject.h"
+#include "base/strings/sys_string_conversions.h"
+#include "components/strings/grit/components_strings.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/gtest_mac.h"
+#include "testing/platform_test.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/l10n/l10n_util_mac.h"
+
+using namespace ios_internal::nsurlprotectionspace_util;
+
+namespace {
+
+// Test hostnames and URL origins.
+NSString* const kTestHost = @"chromium.org";
+NSString* const kTestHttpOrigin = @"http://chromium.org";
+NSString* const kTestHttpsOrigin = @"https://chromium.org:80";
+
+// Returns protection space for the given |host|, |protocol| and |port|.
+NSURLProtectionSpace* GetProtectionSpaceForHost(NSString* host,
+ NSString* protocol,
+ NSInteger port) {
+ return [[[NSURLProtectionSpace alloc] initWithHost:host
+ port:port
+ protocol:protocol
+ realm:nil
+ authenticationMethod:nil] autorelease];
+}
+
+// Returns protection space for the given |host| and |protocol| and port 80.
+NSURLProtectionSpace* GetProtectionSpaceForHost(NSString* host,
+ NSString* protocol) {
+ return GetProtectionSpaceForHost(host, protocol, 80);
+}
+
+// Returns protection space for the given proxy |host| and |protocol|.
+NSURLProtectionSpace* GetProtectionSpaceForProxyHost(NSString* host,
+ NSString* type) {
+ return [[[NSURLProtectionSpace alloc] initWithProxyHost:host
+ port:80
+ type:type
+ realm:nil
+ authenticationMethod:nil] autorelease];
+}
+
+} // namespace
+
+// Tests that dialog can not be shown without valid host.
+TEST(NSURLProtectionSpaceUtilTest, CantShowWithoutValidHost) {
+ NSURLProtectionSpace* protectionSpace =
+ GetProtectionSpaceForHost(@"", NSURLProtectionSpaceHTTPS);
+
+ EXPECT_FALSE(CanShow(protectionSpace));
+}
+
+// Tests that dialog can not be shown with invalid port.
+TEST(NSURLProtectionSpaceUtilTest, CantShowWithoutValidPort) {
+ NSURLProtectionSpace* protectionSpace =
+ GetProtectionSpaceForHost(kTestHost, NSURLProtectionSpaceHTTPS, INT_MAX);
+
+ EXPECT_FALSE(CanShow(protectionSpace));
+}
+
+// Tests showing the dialog for SOCKS proxy server.
+TEST(NSURLProtectionSpaceUtilTest, ShowForSocksProxy) {
+ NSURLProtectionSpace* protectionSpace =
+ GetProtectionSpaceForProxyHost(kTestHost, NSURLProtectionSpaceSOCKSProxy);
+
+ ASSERT_TRUE(CanShow(protectionSpace));
+
+ // Expecting the following text:
+ // The proxy chromium.org requires a username and password.
+ // Your connection to this site is not private.
+ NSString* expectedText = [NSString
+ stringWithFormat:@"%@ %@", l10n_util::GetNSStringF(
+ IDS_LOGIN_DIALOG_PROXY_AUTHORITY,
+ base::SysNSStringToUTF16(kTestHost)),
+ l10n_util::GetNSString(
+ IDS_WEBSITE_SETTINGS_NON_SECURE_TRANSPORT)];
+
+ EXPECT_NSEQ(expectedText, MessageForHTTPAuth(protectionSpace));
+}
+
+// Tests showing the dialog for http proxy server.
+TEST(NSURLProtectionSpaceUtilTest, ShowForHttpProxy) {
+ NSURLProtectionSpace* protectionSpace =
+ GetProtectionSpaceForProxyHost(kTestHost, NSURLProtectionSpaceHTTPProxy);
+
+ ASSERT_TRUE(CanShow(protectionSpace));
+
+ // Expecting the following text:
+ // The proxy http://chromium.org requires a username and password.
+ // Your connection to this site is not private.
+ NSString* expectedText = [NSString
+ stringWithFormat:@"%@ %@", l10n_util::GetNSStringF(
+ IDS_LOGIN_DIALOG_PROXY_AUTHORITY,
+ base::SysNSStringToUTF16(kTestHttpOrigin)),
+ l10n_util::GetNSString(
+ IDS_WEBSITE_SETTINGS_NON_SECURE_TRANSPORT)];
+ EXPECT_NSEQ(expectedText, MessageForHTTPAuth(protectionSpace));
+}
+
+// Tests showing the dialog for https proxy server.
+TEST(NSURLProtectionSpaceUtilTest, ShowForHttpsProxy) {
+ NSURLProtectionSpace* protectionSpace =
+ GetProtectionSpaceForProxyHost(kTestHost, NSURLProtectionSpaceHTTPSProxy);
+
+ ASSERT_TRUE(CanShow(protectionSpace));
+
+ NSString* expectedText = nil;
+ // On iOS 10, HTTPS Proxy protection space reports itself as unsecure
+ // (crbug.com/629570).
+ if (base::ios::IsRunningOnIOS10OrLater()) {
+ // Expecting the following text:
+ // The proxy https://chromium.org requires a username and password.
+ // Your connection to this site is not private.
+ expectedText = [NSString
+ stringWithFormat:@"%@ %@",
+ l10n_util::GetNSStringF(
+ IDS_LOGIN_DIALOG_PROXY_AUTHORITY,
+ base::SysNSStringToUTF16(kTestHttpsOrigin)),
+ l10n_util::GetNSString(
+ IDS_WEBSITE_SETTINGS_NON_SECURE_TRANSPORT)];
+ } else {
+ // Expecting the following text:
+ // The proxy https://chromium.org:80 requires a username and password.
+ expectedText =
+ l10n_util::GetNSStringF(IDS_LOGIN_DIALOG_PROXY_AUTHORITY,
+ base::SysNSStringToUTF16(kTestHttpsOrigin));
+ }
+ EXPECT_NSEQ(expectedText, MessageForHTTPAuth(protectionSpace));
+}
+
+// Tests showing the dialog for http server.
+TEST(NSURLProtectionSpaceUtilTest, ShowForHttpServer) {
+ NSURLProtectionSpace* protectionSpace =
+ GetProtectionSpaceForHost(kTestHost, NSURLProtectionSpaceHTTP);
+
+ ASSERT_TRUE(CanShow(protectionSpace));
+
+ // Expecting the following text:
+ // http://chromium.org requires a username and password.
+ NSString* expectedText = [NSString
+ stringWithFormat:@"%@ %@", l10n_util::GetNSStringF(
+ IDS_LOGIN_DIALOG_AUTHORITY,
+ base::SysNSStringToUTF16(kTestHttpOrigin)),
+ l10n_util::GetNSString(
+ IDS_WEBSITE_SETTINGS_NON_SECURE_TRANSPORT)];
+ EXPECT_NSEQ(expectedText, MessageForHTTPAuth(protectionSpace));
+}
+
+// Tests showing the dialog for https server.
+TEST(NSURLProtectionSpaceUtilTest, ShowForHttpsServer) {
+ NSURLProtectionSpace* protectionSpace =
+ GetProtectionSpaceForHost(kTestHost, NSURLProtectionSpaceHTTPS);
+
+ ASSERT_TRUE(CanShow(protectionSpace));
+
+ // Expecting the following text:
+ // https://chromium.org:80 requires a username and password.
+ NSString* expectedText = l10n_util::GetNSStringF(
+ IDS_LOGIN_DIALOG_AUTHORITY, base::SysNSStringToUTF16(kTestHttpsOrigin));
+ EXPECT_NSEQ(expectedText, MessageForHTTPAuth(protectionSpace));
+}

Powered by Google App Engine
This is Rietveld 408576698