Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3903)

Unified Diff: chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc

Issue 14904002: Load and send Wallet Risk params after user has agreed (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698