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

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: . Created 7 years, 8 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 70078fc9cf3eba95b80bec0e29b09a4f7fa14ba8..88137bb5673308fe5d84382b12fe5c04091bf931 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"
@@ -179,7 +180,12 @@ class TestAutofillDialogController
return &test_wallet_client_;
}
+ MOCK_METHOD0(LoadRiskFingerprintData, void());
+
void set_is_first_run(bool is_first_run) { is_first_run_ = is_first_run; }
+ void set_fingerprint_data(const std::string& fingerprint_data) {
+ fingerprint_data_ = fingerprint_data;
+ }
protected:
virtual PersonalDataManager* GetManager() OVERRIDE {
@@ -194,6 +200,12 @@ class TestAutofillDialogController
return is_first_run_;
}
+ virtual void SerializeFingerprint(risk::Fingerprint* fingerprint,
+ std::string* data) {
+ // Ignore |fingerprint|, it's NULL.
+ data->assign(fingerprint_data_);
+ }
+
private:
// To specify our own metric logger.
virtual const AutofillMetrics& GetMetricLogger() const OVERRIDE {
@@ -204,6 +216,7 @@ class TestAutofillDialogController
TestPersonalDataManager test_manager_;
testing::NiceMock<TestWalletClient> test_wallet_client_;
bool is_first_run_;
+ std::string fingerprint_data_;
DISALLOW_COPY_AND_ASSIGN(TestAutofillDialogController);
};
@@ -238,7 +251,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(),
@@ -942,4 +955,60 @@ 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);
+ controller()->set_fingerprint_data("goodbye");
+
+ scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems();
+ controller()->OnDidGetWalletItems(wallet_items.Pass());
+ // No legal Documents are present, |legal_documents_are_current_| should be
+ // true and |LoadRiskFingerprintData()| should have been called.
+
+ // |OnRiskFingerprintDataLoaded()| hasn't happened yet, |risk_data_| should be
+ // empty still (and the default, "risky business", should be returned).
+ EXPECT_EQ("risky business", controller()->GetRiskData());
+
+ // Now simulate a risk load success and verify that it's base64 encoded.
+ controller()->OnDidLoadRiskFingerprintData(scoped_ptr<risk::Fingerprint>());
+ EXPECT_EQ("Z29vZGJ5ZQ==", controller()->GetRiskData());
+}
+
+TEST_F(AutofillDialogControllerTest, RiskLoadsAfterAcceptingLegalDocuments) {
+ EXPECT_CALL(*controller(), LoadRiskFingerprintData()).Times(0);
+ controller()->set_fingerprint_data("hello");
+
+ scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems();
+ wallet_items->AddLegalDocument(wallet::GetTestLegalDocument());
+ controller()->OnDidGetWalletItems(wallet_items.Pass());
+ // |legal_documents_are_current_| should be false as there's a legal document.
+
+ // If, for some reason, risk is loaded before |legal_documents_are_current_|
+ // is true, it should not take effect (and the default should be returned).
+ controller()->OnDidLoadRiskFingerprintData(scoped_ptr<risk::Fingerprint>());
+ EXPECT_EQ("risky business", controller()->GetRiskData());
+
+ testing::Mock::VerifyAndClear(controller());
+ EXPECT_CALL(*controller(), LoadRiskFingerprintData()).Times(1);
+
+ controller()->OnDidAcceptLegalDocuments();
+ // Now |legal_documents_are_current_| should be true.
+
+ // No |OnRiskFingerprintDataLoaded()| yet, |risk_data_| is still empty.
+ EXPECT_EQ("risky business", controller()->GetRiskData());
+
+ // Now simulate a successful risk load and verify that it's base64 encoded.
+ controller()->OnDidLoadRiskFingerprintData(scoped_ptr<risk::Fingerprint>());
+ EXPECT_EQ("aGVsbG8=", controller()->GetRiskData());
+}
+
} // namespace autofill

Powered by Google App Engine
This is Rietveld 408576698