| 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));
|
| +}
|
|
|