| 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 92de86c90e3730bc74b7493789179bf464aebc08..def96e32c9404bdaf6313f329ad588d56ff97e10 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"
|
| @@ -37,9 +38,10 @@ 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;
|
| @@ -56,6 +58,22 @@ void SetOutputValue(const DetailInputs& inputs,
|
| }
|
| }
|
|
|
| +scoped_ptr<wallet::FullWallet> CreateFullWalletWithVerifyCvv() {
|
| + base::DictionaryValue dict;
|
| + scoped_ptr<base::ListValue> list(new base::ListValue());
|
| + list->AppendString("verify_cvv");
|
| + dict.Set("required_action", list.release());
|
| + return wallet::FullWallet::CreateFullWallet(dict);
|
| +}
|
| +
|
| +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();
|
| +}
|
| +
|
| class TestAutofillDialogView : public AutofillDialogView {
|
| public:
|
| TestAutofillDialogView() {}
|
| @@ -222,6 +240,9 @@ class TestAutofillDialogController
|
|
|
| void set_dialog_type(DialogType dialog_type) { dialog_type_ = dialog_type; }
|
|
|
| + MOCK_METHOD0(LoadRiskFingerprintData, void());
|
| + using AutofillDialogControllerImpl::OnDidLoadRiskFingerprintData;
|
| +
|
| protected:
|
| virtual PersonalDataManager* GetManager() OVERRIDE {
|
| return &test_manager_;
|
| @@ -285,7 +306,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(),
|
| @@ -303,14 +324,6 @@ class AutofillDialogControllerTest : public testing::Test {
|
| }
|
|
|
| protected:
|
| - static scoped_ptr<wallet::FullWallet> CreateFullWalletWithVerifyCvv() {
|
| - base::DictionaryValue dict;
|
| - scoped_ptr<base::ListValue> list(new base::ListValue());
|
| - list->AppendString("verify_cvv");
|
| - dict.Set("required_action", list.release());
|
| - return wallet::FullWallet::CreateFullWallet(dict);
|
| - }
|
| -
|
| void FillCreditCardInputs() {
|
| DetailOutputMap cc_outputs;
|
| const DetailInputs& cc_inputs =
|
| @@ -643,6 +656,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());
|
| @@ -650,6 +664,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.
|
| @@ -1036,6 +1052,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));
|
| @@ -1074,6 +1091,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));
|
| @@ -1094,6 +1112,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));
|
| @@ -1114,6 +1133,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));
|
| @@ -1135,6 +1155,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));
|
| @@ -1404,4 +1425,49 @@ 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());
|
| + controller()->OnAccept();
|
| +
|
| + EXPECT_TRUE(controller()->GetRiskData().empty());
|
| +}
|
| +
|
| +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_TRUE(controller()->GetRiskData().empty());
|
| +
|
| + 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_TRUE(controller()->GetRiskData().empty());
|
| +
|
| + // Simulate a risk load and verify |GetRiskData()| matches the encoded value.
|
| + controller()->OnDidAcceptLegalDocuments();
|
| + controller()->OnDidLoadRiskFingerprintData(GetFakeFingerprint().Pass());
|
| + EXPECT_EQ(kFakeFingerprintEncoded, controller()->GetRiskData());
|
| +}
|
| +
|
| } // namespace autofill
|
|
|