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..91e2d2e55f6ea387d1cc1bf87a75c1d53497911c 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,65 @@ 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()); |
Dan Beam
2014/09/04 01:04:19
seems like a lot of copy pasta...
Evan Stade
2014/09/04 18:16:19
Acknowledged.
|
+ |
+ 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, |