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..117aa64eaa78b8d6f7f58afaad8a392b765dea6a 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 { |
|
Ilya Sherman
2013/05/22 23:53:59
Why did you remove this? It should wrap everythin
Dan Beam
2013/05/23 00:30:40
look at newer patchsets
|
| - |
| 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; |
| @@ -222,6 +222,14 @@ class TestAutofillDialogController |
| void set_dialog_type(DialogType dialog_type) { dialog_type_ = dialog_type; } |
| + MOCK_METHOD0(LoadRiskFingerprintData, void()); |
| + |
| + virtual void OnDidLoadRiskFingerprintData( |
| + scoped_ptr<risk::Fingerprint> fingerprint) OVERRIDE { |
| + AutofillDialogControllerImpl::OnDidLoadRiskFingerprintData( |
| + fingerprint.Pass()); |
| + } |
|
Ilya Sherman
2013/05/22 23:53:59
Optional nit: I think you can just write "using Au
Dan Beam
2013/05/23 00:30:40
Done.
|
| + |
| protected: |
| virtual PersonalDataManager* GetManager() OVERRIDE { |
| return &test_manager_; |
| @@ -285,7 +293,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 +319,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(); |
| + } |
|
Ilya Sherman
2013/05/22 23:53:59
nit: Please define this as a free function rather
Dan Beam
2013/05/23 00:30:40
Done.
|
| + |
| void FillCreditCardInputs() { |
| DetailOutputMap cc_outputs; |
| const DetailInputs& cc_inputs = |
| @@ -383,8 +399,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 +621,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 +629,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 +959,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 +998,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 +1019,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 +1040,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 +1062,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 +1334,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()); |
|
Ilya Sherman
2013/05/22 23:53:59
Should this test call controller()->OnAccept(); be
Dan Beam
2013/05/23 00:30:40
Done.
|
| +} |
| + |
| +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 |