Index: components/autofill/content/browser/wallet/wallet_client_unittest.cc |
diff --git a/components/autofill/content/browser/wallet/wallet_client_unittest.cc b/components/autofill/content/browser/wallet/wallet_client_unittest.cc |
index 042c695e7ed4e2cefe3ee54a89bc8ad12e041af8..98b3971d63f01a5fd4704b12087dd174e404f700 100644 |
--- a/components/autofill/content/browser/wallet/wallet_client_unittest.cc |
+++ b/components/autofill/content/browser/wallet/wallet_client_unittest.cc |
@@ -281,6 +281,30 @@ const char kErrorResponse[] = |
" }" |
"}"; |
+const char kErrorResponseSpendingLimitExceeded[] = |
+ "{" |
+ " \"error_type\":\"APPLICATION_ERROR\"," |
+ " \"error_detail\":\"error_detail\"," |
+ " \"application_error\":\"application_error\"," |
+ " \"debug_data\":" |
+ " {" |
+ " \"debug_message\":\"debug_message\"," |
+ " \"stack_trace\":\"stack_trace\"" |
+ " }," |
+ " \"application_error_data\":\"application_error_data\"," |
+ " \"wallet_error\":" |
+ " {" |
+ " \"error_type\":\"SPENDING_LIMIT_EXCEEDED\"," |
+ " \"error_detail\":\"error_detail\"," |
+ " \"message_for_user\":" |
+ " {" |
+ " \"text\":\"text\"," |
+ " \"subtext\":\"subtext\"," |
+ " \"details\":\"details\"" |
+ " }" |
+ " }" |
+ "}"; |
+ |
const char kErrorTypeMissingInResponse[] = |
"{" |
" \"error_type\":\"Not APPLICATION_ERROR\"," |
@@ -1755,7 +1779,8 @@ TEST_F(WalletClientTest, HasRequestInProgress) { |
EXPECT_FALSE(wallet_client_->HasRequestInProgress()); |
} |
-TEST_F(WalletClientTest, ErrorResponse) { |
+// 500 (INTERNAL_SERVER_ERROR) - response json is parsed. |
+TEST_F(WalletClientTest, ErrorResponse500) { |
EXPECT_FALSE(wallet_client_->HasRequestInProgress()); |
delegate_.ExpectBaselineMetrics(); |
wallet_client_->GetWalletItems(base::string16(), base::string16()); |
@@ -1774,6 +1799,60 @@ TEST_F(WalletClientTest, ErrorResponse) { |
kErrorResponse); |
} |
+// 403 (FORBIDDEN) - response json is parsed. |
+TEST_F(WalletClientTest, ErrorResponse403) { |
+ EXPECT_FALSE(wallet_client_->HasRequestInProgress()); |
+ delegate_.ExpectBaselineMetrics(); |
+ wallet_client_->GetWalletItems(base::string16(), base::string16()); |
+ EXPECT_TRUE(wallet_client_->HasRequestInProgress()); |
+ testing::Mock::VerifyAndClear(delegate_.metric_logger()); |
+ |
+ EXPECT_CALL(delegate_, OnWalletError(WalletClient::SPENDING_LIMIT_EXCEEDED)) |
+ .Times(1); |
+ delegate_.ExpectLogWalletApiCallDuration(AutofillMetrics::GET_WALLET_ITEMS, |
+ 1); |
+ delegate_.ExpectWalletErrorMetric( |
+ AutofillMetrics::WALLET_SPENDING_LIMIT_EXCEEDED); |
+ |
+ VerifyAndFinishRequest(net::HTTP_FORBIDDEN, |
+ kGetWalletItemsValidRequest, |
+ kErrorResponseSpendingLimitExceeded); |
+} |
+ |
+// 400 (BAD_REQUEST) - response json is ignored. |
+TEST_F(WalletClientTest, ErrorResponse400) { |
+ EXPECT_FALSE(wallet_client_->HasRequestInProgress()); |
+ delegate_.ExpectBaselineMetrics(); |
+ wallet_client_->GetWalletItems(base::string16(), base::string16()); |
+ EXPECT_TRUE(wallet_client_->HasRequestInProgress()); |
+ testing::Mock::VerifyAndClear(delegate_.metric_logger()); |
+ |
+ EXPECT_CALL(delegate_, OnWalletError(WalletClient::BAD_REQUEST)).Times(1); |
+ delegate_.ExpectLogWalletApiCallDuration(AutofillMetrics::GET_WALLET_ITEMS, |
+ 1); |
+ delegate_.ExpectWalletErrorMetric(AutofillMetrics::WALLET_BAD_REQUEST); |
+ |
+ VerifyAndFinishRequest( |
+ net::HTTP_BAD_REQUEST, kGetWalletItemsValidRequest, kErrorResponse); |
+} |
+ |
+// Anything else - response json is ignored. |
+TEST_F(WalletClientTest, ErrorResponseOther) { |
+ EXPECT_FALSE(wallet_client_->HasRequestInProgress()); |
+ delegate_.ExpectBaselineMetrics(); |
+ wallet_client_->GetWalletItems(base::string16(), base::string16()); |
+ EXPECT_TRUE(wallet_client_->HasRequestInProgress()); |
+ testing::Mock::VerifyAndClear(delegate_.metric_logger()); |
+ |
+ EXPECT_CALL(delegate_, OnWalletError(WalletClient::NETWORK_ERROR)).Times(1); |
+ delegate_.ExpectLogWalletApiCallDuration(AutofillMetrics::GET_WALLET_ITEMS, |
+ 1); |
+ delegate_.ExpectWalletErrorMetric(AutofillMetrics::WALLET_NETWORK_ERROR); |
+ |
+ VerifyAndFinishRequest( |
+ net::HTTP_NOT_FOUND, kGetWalletItemsValidRequest, kErrorResponse); |
+} |
+ |
TEST_F(WalletClientTest, CancelRequest) { |
EXPECT_FALSE(wallet_client_->HasRequestInProgress()); |
delegate_.ExpectLogWalletApiCallDuration(AutofillMetrics::GET_WALLET_ITEMS, |