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 |