Chromium Code Reviews| Index: chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc |
| diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc |
| index 423badcc9794d815992240739011bbffd06b9fb1..e465209018cd6a2b65c64c7c2f741c822af42091 100644 |
| --- a/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc |
| +++ b/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc |
| @@ -13,6 +13,7 @@ |
| #include "chrome/test/base/testing_profile.h" |
| #include "components/autofill/browser/autofill_common_test.h" |
| #include "components/autofill/browser/autofill_metrics.h" |
| +#include "components/autofill/browser/risk/proto/fingerprint.pb.h" |
| #include "components/autofill/browser/test_personal_data_manager.h" |
| #include "components/autofill/browser/wallet/full_wallet.h" |
| #include "components/autofill/browser/wallet/instrument.h" |
| @@ -34,12 +35,11 @@ using testing::_; |
| namespace autofill { |
| -namespace { |
| - |
| const char kFakeEmail[] = "user@example.com"; |
| +const char kFakeFingerprintEncoded[] = "CgVaAwiACA=="; |
| const char kEditedBillingAddress[] = "123 edited billing address"; |
| -const char* kFieldsFromPage[] = { "email", "cc-number", "billing region", |
| - "shipping region" }; |
| +const char* kFieldsFromPage[] = |
| + { "email", "cc-number", "billing region", "shipping region" }; |
| const char kSettingsOrigin[] = "Chrome settings"; |
| using content::BrowserThread; |
| @@ -167,6 +167,20 @@ class TestAccountChooserModel : public AccountChooserModel { |
| DISALLOW_COPY_AND_ASSIGN(TestAccountChooserModel); |
| }; |
| +FORWARD_DECLARE_TEST(AutofillDialogControllerTest, AcceptLegalDocuments); |
| +FORWARD_DECLARE_TEST(AutofillDialogControllerTest, VerifyCvv); |
| +FORWARD_DECLARE_TEST(AutofillDialogControllerTest, ErrorDuringSubmit); |
| +FORWARD_DECLARE_TEST(AutofillDialogControllerTest, ErrorDuringVerifyCvv); |
| +FORWARD_DECLARE_TEST(AutofillDialogControllerTest, ChangeAccountDuringSubmit); |
| +FORWARD_DECLARE_TEST(AutofillDialogControllerTest, |
| + ChangeAccountDuringVerifyCvv); |
| +FORWARD_DECLARE_TEST(AutofillDialogControllerTest, |
| + RiskNeverLoadsWithPendingLegalDocuments); |
| +FORWARD_DECLARE_TEST(AutofillDialogControllerTest, |
| + RiskLoadsWithoutPendingLegalDocuments); |
| +FORWARD_DECLARE_TEST(AutofillDialogControllerTest, |
| + RiskLoadsAfterAcceptingLegalDocuments); |
| + |
| class TestAutofillDialogController |
| : public AutofillDialogControllerImpl, |
| public base::SupportsWeakPtr<TestAutofillDialogController> { |
| @@ -235,11 +249,28 @@ class TestAutofillDialogController |
| return is_first_run_; |
| } |
| + MOCK_METHOD0(LoadRiskFingerprintData, void()); |
| + |
| virtual void OpenTabWithUrl(const GURL& url) OVERRIDE { |
| open_tab_url_ = url; |
| } |
| private: |
| + FRIEND_TEST_ALL_PREFIXES(AutofillDialogControllerTest, AcceptLegalDocuments); |
| + FRIEND_TEST_ALL_PREFIXES(AutofillDialogControllerTest, VerifyCvv); |
| + FRIEND_TEST_ALL_PREFIXES(AutofillDialogControllerTest, ErrorDuringSubmit); |
| + FRIEND_TEST_ALL_PREFIXES(AutofillDialogControllerTest, ErrorDuringVerifyCvv); |
| + FRIEND_TEST_ALL_PREFIXES(AutofillDialogControllerTest, |
| + ChangeAccountDuringSubmit); |
| + FRIEND_TEST_ALL_PREFIXES(AutofillDialogControllerTest, |
| + ChangeAccountDuringVerifyCvv); |
| + FRIEND_TEST_ALL_PREFIXES(AutofillDialogControllerTest, |
| + RiskNeverLoadsWithPendingLegalDocuments); |
| + FRIEND_TEST_ALL_PREFIXES(AutofillDialogControllerTest, |
| + RiskLoadsWithoutPendingLegalDocuments); |
| + FRIEND_TEST_ALL_PREFIXES(AutofillDialogControllerTest, |
| + RiskLoadsAfterAcceptingLegalDocuments); |
|
Ilya Sherman
2013/05/22 22:34:24
Why not just make the relevant method public? The
Dan Beam
2013/05/22 23:25:20
Done.
|
| + |
| // To specify our own metric logger. |
| virtual const AutofillMetrics& GetMetricLogger() const OVERRIDE { |
| return metric_logger_; |
| @@ -285,7 +316,7 @@ class AutofillDialogControllerTest : public testing::Test { |
| base::Callback<void(const FormStructure*, const std::string&)> callback = |
| base::Bind(&AutofillDialogControllerTest::FinishedCallback, |
| base::Unretained(this)); |
| - controller_ = (new TestAutofillDialogController( |
| + controller_ = (new testing::NiceMock<TestAutofillDialogController>( |
| test_web_contents_.get(), |
| form_data, |
| GURL(), |
| @@ -311,6 +342,14 @@ class AutofillDialogControllerTest : public testing::Test { |
| return wallet::FullWallet::CreateFullWallet(dict); |
| } |
| + static scoped_ptr<risk::Fingerprint> GetFakeFingerprint() { |
| + scoped_ptr<risk::Fingerprint> fingerprint(new risk::Fingerprint()); |
| + // Add some data to the proto, else the encoded content is empty. |
| + fingerprint->mutable_machine_characteristics()->mutable_screen_size()-> |
| + set_width(1024); |
| + return fingerprint.Pass(); |
| + } |
| + |
| void FillCreditCardInputs() { |
| DetailOutputMap cc_outputs; |
| const DetailInputs& cc_inputs = |
| @@ -383,8 +422,6 @@ class AutofillDialogControllerTest : public testing::Test { |
| DISALLOW_COPY_AND_ASSIGN(AutofillDialogControllerTest); |
| }; |
| -} // namespace |
| - |
| // This test makes sure nothing falls over when fields are being validity- |
| // checked. |
| TEST_F(AutofillDialogControllerTest, ValidityCheck) { |
| @@ -607,6 +644,7 @@ TEST_F(AutofillDialogControllerTest, AcceptLegalDocuments) { |
| AcceptLegalDocuments(_, _, _)).Times(1); |
| EXPECT_CALL(*controller()->GetTestingWalletClient(), |
| GetFullWallet(_)).Times(1); |
| + EXPECT_CALL(*controller(), LoadRiskFingerprintData()).Times(1); |
| scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); |
| wallet_items->AddLegalDocument(wallet::GetTestLegalDocument()); |
| @@ -614,6 +652,8 @@ TEST_F(AutofillDialogControllerTest, AcceptLegalDocuments) { |
| wallet_items->AddAddress(wallet::GetTestShippingAddress()); |
| controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| controller()->OnAccept(); |
| + controller()->OnDidAcceptLegalDocuments(); |
| + controller()->OnDidLoadRiskFingerprintData(GetFakeFingerprint().Pass()); |
| } |
| // Makes sure the default object IDs are respected. |
| @@ -942,6 +982,7 @@ TEST_F(AutofillDialogControllerTest, VerifyCvv) { |
| wallet_items->AddAddress(wallet::GetTestShippingAddress()); |
| controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| controller()->OnAccept(); |
| + controller()->OnDidLoadRiskFingerprintData(GetFakeFingerprint().Pass()); |
| EXPECT_TRUE(NotificationsOfType(DialogNotification::REQUIRED_ACTION).empty()); |
| EXPECT_TRUE(controller()->SectionIsActive(SECTION_SHIPPING)); |
| @@ -980,6 +1021,7 @@ TEST_F(AutofillDialogControllerTest, ErrorDuringSubmit) { |
| wallet_items->AddAddress(wallet::GetTestShippingAddress()); |
| controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| controller()->OnAccept(); |
| + controller()->OnDidLoadRiskFingerprintData(GetFakeFingerprint().Pass()); |
| EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); |
| EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_CANCEL)); |
| @@ -1000,6 +1042,7 @@ TEST_F(AutofillDialogControllerTest, ChangeAccountDuringSubmit) { |
| wallet_items->AddAddress(wallet::GetTestShippingAddress()); |
| controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| controller()->OnAccept(); |
| + controller()->OnDidLoadRiskFingerprintData(GetFakeFingerprint().Pass()); |
| EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); |
| EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_CANCEL)); |
| @@ -1020,6 +1063,7 @@ TEST_F(AutofillDialogControllerTest, ErrorDuringVerifyCvv) { |
| wallet_items->AddAddress(wallet::GetTestShippingAddress()); |
| controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| controller()->OnAccept(); |
| + controller()->OnDidLoadRiskFingerprintData(GetFakeFingerprint().Pass()); |
| controller()->OnDidGetFullWallet(CreateFullWalletWithVerifyCvv()); |
| ASSERT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); |
| @@ -1041,6 +1085,7 @@ TEST_F(AutofillDialogControllerTest, ChangeAccountDuringVerifyCvv) { |
| wallet_items->AddAddress(wallet::GetTestShippingAddress()); |
| controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| controller()->OnAccept(); |
| + controller()->OnDidLoadRiskFingerprintData(GetFakeFingerprint().Pass()); |
| controller()->OnDidGetFullWallet(CreateFullWalletWithVerifyCvv()); |
| ASSERT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); |
| @@ -1312,4 +1357,48 @@ TEST_F(AutofillDialogControllerTest, SaveDetailsInChrome) { |
| EXPECT_FALSE(controller()->ShouldOfferToSaveInChrome()); |
| } |
| +TEST_F(AutofillDialogControllerTest, RiskNeverLoadsWithPendingLegalDocuments) { |
| + EXPECT_CALL(*controller(), LoadRiskFingerprintData()).Times(0); |
| + |
| + scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); |
| + wallet_items->AddLegalDocument(wallet::GetTestLegalDocument()); |
| + controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| + |
| + EXPECT_EQ("risky business", controller()->GetRiskData()); |
| +} |
| + |
| +TEST_F(AutofillDialogControllerTest, RiskLoadsWithoutPendingLegalDocuments) { |
| + EXPECT_CALL(*controller(), LoadRiskFingerprintData()).Times(1); |
| + |
| + scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); |
| + wallet_items->AddInstrument(wallet::GetTestMaskedInstrument()); |
| + wallet_items->AddAddress(wallet::GetTestShippingAddress()); |
| + controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| + controller()->OnAccept(); |
| + |
| + EXPECT_EQ("risky business", controller()->GetRiskData()); |
| + |
| + controller()->OnDidLoadRiskFingerprintData(GetFakeFingerprint().Pass()); |
| + EXPECT_EQ(kFakeFingerprintEncoded, controller()->GetRiskData()); |
| +} |
| + |
| +TEST_F(AutofillDialogControllerTest, RiskLoadsAfterAcceptingLegalDocuments) { |
| + EXPECT_CALL(*controller(), LoadRiskFingerprintData()).Times(0); |
| + |
| + scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); |
| + wallet_items->AddLegalDocument(wallet::GetTestLegalDocument()); |
| + controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| + |
| + testing::Mock::VerifyAndClear(controller()); |
| + EXPECT_CALL(*controller(), LoadRiskFingerprintData()).Times(1); |
| + |
| + controller()->OnAccept(); |
| + EXPECT_EQ("risky business", controller()->GetRiskData()); |
| + |
| + // Simulate a risk load and verify |GetRiskData()| matches the encoded value. |
| + controller()->OnDidAcceptLegalDocuments(); |
| + controller()->OnDidLoadRiskFingerprintData(GetFakeFingerprint().Pass()); |
| + EXPECT_EQ(kFakeFingerprintEncoded, controller()->GetRiskData()); |
| +} |
| + |
| } // namespace autofill |