1 // Copyright 2013 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 "base/command_line.h" 6 #include "components/autofill/content/browser/wallet/wallet_service_url.h" 7 #include "components/autofill/core/common/autofill_switches.h" 8 #include "content/public/common/content_switches.h" 9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "url/gurl.h" 11 12 namespace autofill { 13 namespace wallet { 14 15 TEST(WalletServiceSandboxUrl, CheckSandboxUrls) { 16 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 17 switches::kWalletServiceUseSandbox, "1"); 18 19 EXPECT_EQ("https://wallet-web.sandbox.google.com/online/v2/u/1/wallet/" 20 "autocheckout/v1/getWalletItemsJwtless", 21 GetGetWalletItemsUrl(1).spec()); 22 EXPECT_EQ("https://wallet-web.sandbox.google.com/online-secure/v2/u/1/" 23 "autocheckout/v1/getFullWalletJwtless?s7e=otp", 24 GetGetFullWalletUrl(1).spec()); 25 EXPECT_EQ("https://wallet-web.sandbox.google.com/manage/w/1/paymentMethods", 26 GetManageInstrumentsUrl(1).spec()); 27 EXPECT_EQ("https://wallet-web.sandbox.google.com/manage/w/1/settings/" 28 "addresses", 29 GetManageAddressesUrl(1).spec()); 30 EXPECT_EQ("https://wallet-web.sandbox.google.com/online/v2/u/1/wallet/" 31 "autocheckout/v1/acceptLegalDocument", 32 GetAcceptLegalDocumentsUrl(1).spec()); 33 EXPECT_EQ("https://wallet-web.sandbox.google.com/online-secure/v2/u/2/" 34 "autocheckout/v1/authenticateInstrument?s7e=cvn", 35 GetAuthenticateInstrumentUrl(2).spec()); 36 EXPECT_EQ("https://wallet-web.sandbox.google.com/online/v2/u/1/wallet/" 37 "autocheckout/v1/saveToWallet", 38 GetSaveToWalletNoEscrowUrl(1).spec()); 39 EXPECT_EQ("https://wallet-web.sandbox.google.com/online-secure/v2/u/1/" 40 "autocheckout/v1/saveToWallet?s7e=card_number%3Bcvn", 41 GetSaveToWalletUrl(1).spec()); 42 EXPECT_EQ("https://wallet-web.sandbox.google.com/online/v2/u/1/" 43 "passiveauth?isChromePayments=true", 44 GetPassiveAuthUrl(1).spec()); 45 } 46 47 TEST(WalletServiceSandboxUrl, CheckProdUrls) { 48 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 49 switches::kWalletServiceUseSandbox, "0"); 50 51 EXPECT_EQ("https://wallet.google.com/online/v2/u/1/wallet/" 52 "autocheckout/v1/getWalletItemsJwtless", 53 GetGetWalletItemsUrl(1).spec()); 54 EXPECT_EQ("https://wallet.google.com/online-secure/v2/u/1/" 55 "autocheckout/v1/getFullWalletJwtless?s7e=otp", 56 GetGetFullWalletUrl(1).spec()); 57 EXPECT_EQ("https://wallet.google.com/manage/w/1/paymentMethods", 58 GetManageInstrumentsUrl(1).spec()); 59 EXPECT_EQ("https://wallet.google.com/manage/w/1/settings/addresses", 60 GetManageAddressesUrl(1).spec()); 61 EXPECT_EQ("https://wallet.google.com/online/v2/u/1/wallet/" 62 "autocheckout/v1/acceptLegalDocument", 63 GetAcceptLegalDocumentsUrl(1).spec()); 64 EXPECT_EQ("https://wallet.google.com/online-secure/v2/u/4/" 65 "autocheckout/v1/authenticateInstrument?s7e=cvn", 66 GetAuthenticateInstrumentUrl(4).spec()); 67 EXPECT_EQ("https://wallet.google.com/online/v2/u/1/wallet/" 68 "autocheckout/v1/saveToWallet", 69 GetSaveToWalletNoEscrowUrl(1).spec()); 70 EXPECT_EQ("https://wallet.google.com/online-secure/v2/u/1/" 71 "autocheckout/v1/saveToWallet?s7e=card_number%3Bcvn", 72 GetSaveToWalletUrl(1).spec()); 73 EXPECT_EQ("https://wallet.google.com/online/v2/u/1/" 74 "passiveauth?isChromePayments=true", 75 GetPassiveAuthUrl(1).spec()); 76 } 77 78 TEST(WalletServiceUrl, DefaultsToProd) { 79 #if defined(GOOGLE_CHROME_BUILD) 80 EXPECT_TRUE(IsUsingProd()); 81 #else 82 EXPECT_FALSE(IsUsingProd()); 83 #endif 84 85 CommandLine* command_line = CommandLine::ForCurrentProcess(); 86 command_line->AppendSwitch(::switches::kReduceSecurityForTesting); 87 EXPECT_FALSE(IsUsingProd()); 88 89 command_line->AppendSwitchASCII(switches::kWalletServiceUseSandbox, "0"); 90 EXPECT_TRUE(IsUsingProd()); 91 } 92 93 TEST(WalletServiceUrl, IsUsingProd) { 94 CommandLine* command_line = CommandLine::ForCurrentProcess(); 95 command_line->AppendSwitchASCII(switches::kWalletServiceUseSandbox, "1"); 96 EXPECT_FALSE(IsUsingProd()); 97 98 const GURL sandbox_get_items_url = GetGetWalletItemsUrl(0); 99 const GURL fake_service_url = GURL("http://goo.gl"); 100 command_line->AppendSwitchASCII(switches::kWalletServiceUrl, 101 fake_service_url.spec()); 102 103 const GURL flag_get_items_url = GetGetWalletItemsUrl(0); 104 EXPECT_NE(sandbox_get_items_url, flag_get_items_url); 105 EXPECT_EQ(fake_service_url.GetOrigin(), flag_get_items_url.GetOrigin()); 106 } 107 108 TEST(WalletServiceUrl, IsSignInContinueUrl) { 109 EXPECT_TRUE(GetSignInContinueUrl().SchemeIsSecure()); 110 111 CommandLine* command_line = CommandLine::ForCurrentProcess(); 112 command_line->AppendSwitchASCII(switches::kWalletServiceUseSandbox, "1"); 113 114 // authuser query param is respected. 115 const char sign_in_url[] = "https://wallet-web.sandbox.google.com/online/v2/" 116 "u/0/passiveauth?isChromePayments=true&authuser=4"; 117 size_t user_index = 100; 118 EXPECT_TRUE(IsSignInContinueUrl(GURL(sign_in_url), &user_index)); 119 EXPECT_EQ(4U, user_index); 120 121 // No authuser query param means 0 is assumed. 122 user_index = 101; 123 const char sign_in_url_no_user[] = "https://wallet-web.sandbox.google.com/" 124 "online/v2/u/0/passiveauth?isChromePayments=true"; 125 EXPECT_TRUE(IsSignInContinueUrl(GURL(sign_in_url_no_user), &user_index)); 126 EXPECT_EQ(0U, user_index); 127 128 // A authuser query param that doesn't parse means 0 is assumed. 129 user_index = 102; 130 const char sign_in_url_bad_user[] = "https://wallet-web.sandbox.google.com/" 131 "online/v2/u/0/passiveauth?isChromePayments=true&authuser=yolo"; 132 EXPECT_TRUE(IsSignInContinueUrl(GURL(sign_in_url_bad_user), &user_index)); 133 EXPECT_EQ(0U, user_index); 134 135 const char not_a_sign_in_url[] = "https://wallet-web.sandbox.google.com/" 136 "online/v2/u/0/example"; 137 EXPECT_FALSE(IsSignInContinueUrl(GURL(not_a_sign_in_url), &user_index)); 138 } 139 140 TEST(WalletServiceUrl, IsSignInRelatedUrl) { 141 EXPECT_TRUE(IsSignInRelatedUrl(GetSignInUrl())); 142 EXPECT_TRUE(IsSignInRelatedUrl(GURL("https://accounts.youtube.com"))); 143 EXPECT_TRUE(IsSignInRelatedUrl(GURL("https://accounts.youtube.com/"))); 144 EXPECT_TRUE(IsSignInRelatedUrl(GURL("https://accounts.google.com"))); 145 EXPECT_FALSE(IsSignInRelatedUrl(GURL("http://google.com"))); 146 } 147 148 } // namespace wallet 149 } // namespace autofill 150