From 9b363a7a56db6a9f92b7fc5c5bc2f45cf07f2abe Mon Sep 17 00:00:00 2001 From: "jhawkins@chromium.org" Date: Mon, 7 Jun 2010 01:51:14 +0000 Subject: AutoFill: Don't save credit card numbers from Autocomplete to the WebDB. BUG=8026 TEST=AutocompleteHistoryManagerTest Review URL: http://codereview.chromium.org/2676003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49030 0039d316-1c4b-4281-b951-d872f2087c98 --- .../autocomplete_history_manager_unittest.cc | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 chrome/browser/autocomplete_history_manager_unittest.cc (limited to 'chrome/browser/autocomplete_history_manager_unittest.cc') diff --git a/chrome/browser/autocomplete_history_manager_unittest.cc b/chrome/browser/autocomplete_history_manager_unittest.cc new file mode 100644 index 0000000..49a473c --- /dev/null +++ b/chrome/browser/autocomplete_history_manager_unittest.cc @@ -0,0 +1,86 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include + +#include "base/ref_counted.h" +#include "base/string16.h" +#include "base/task.h" +#include "chrome/browser/autocomplete_history_manager.h" +#include "chrome/browser/webdata/web_data_service.h" +#include "chrome/test/testing_profile.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "webkit/glue/form_data.h" + +using testing::_; +using webkit_glue::FormData; + +class MockWebDataService : public WebDataService { + public: + MOCK_METHOD1(AddFormFields, + void(const std::vector&)); // NOLINT +}; + +class AutocompleteHistoryManagerTest : public testing::Test { + protected: + AutocompleteHistoryManagerTest() + : ui_thread_(ChromeThread::UI, &message_loop_) { + } + + virtual void SetUp() { + web_data_service_ = new MockWebDataService(); + autocomplete_manager_.reset( + new AutocompleteHistoryManager(&profile_, web_data_service_)); + } + + MessageLoopForUI message_loop_; + ChromeThread ui_thread_; + + TestingProfile profile_; + scoped_refptr web_data_service_; + scoped_ptr autocomplete_manager_; +}; + +// Tests that credit card numbers are not sent to the WebDatabase to be saved. +TEST_F(AutocompleteHistoryManagerTest, CreditCardNumberValue) { + FormData form; + form.name = ASCIIToUTF16("MyForm"); + form.method = ASCIIToUTF16("POST"); + form.origin = GURL("http://myform.com/form.html"); + form.action = GURL("http://myform.com/submit.html"); + + // Valid Visa credit card number pulled from the paypal help site. + webkit_glue::FormField valid_cc(ASCIIToUTF16("Credit Card"), + ASCIIToUTF16("ccnum"), + ASCIIToUTF16("4012888888881881"), + ASCIIToUTF16("text"), + 20); + form.fields.push_back(valid_cc); + + EXPECT_CALL(*web_data_service_, AddFormFields(_)).Times(0); + autocomplete_manager_->FormSubmitted(form); +} + +// Contrary test to AutocompleteHistoryManagerTest.CreditCardNumberValue. The +// value being submitted is not a valid credit card number, so it will be sent +// to the WebDatabase to be saved. +TEST_F(AutocompleteHistoryManagerTest, NonCreditCardNumberValue) { + FormData form; + form.name = ASCIIToUTF16("MyForm"); + form.method = ASCIIToUTF16("POST"); + form.origin = GURL("http://myform.com/form.html"); + form.action = GURL("http://myform.com/submit.html"); + + // Invalid credit card number. + webkit_glue::FormField invalid_cc(ASCIIToUTF16("Credit Card"), + ASCIIToUTF16("ccnum"), + ASCIIToUTF16("4580123456789012"), + ASCIIToUTF16("text"), + 20); + form.fields.push_back(invalid_cc); + + EXPECT_CALL(*(web_data_service_.get()), AddFormFields(_)).Times(1); + autocomplete_manager_->FormSubmitted(form); +} -- cgit v1.1