| Index: chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm
|
| diff --git a/chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm b/chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm
|
| index 112f21ef2095da268337a618119707e01c2b64a9..215ff8b557f54fd7f115ff10a53eb3ad81d2dc66 100644
|
| --- a/chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm
|
| +++ b/chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm
|
| @@ -8,53 +8,142 @@
|
| #include "base/mac/scoped_nsobject.h"
|
| #include "base/strings/string16.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| +#include "chrome/browser/password_manager/mock_password_store_service.h"
|
| +#include "chrome/browser/password_manager/password_store_factory.h"
|
| #include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
|
| #import "chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller.h"
|
| #include "chrome/browser/ui/cocoa/passwords/manage_passwords_controller_test.h"
|
| +#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
|
| #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h"
|
| +#include "components/password_manager/core/browser/mock_password_store.h"
|
| +#include "components/password_manager/core/browser/password_store.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "testing/gtest_mac.h"
|
|
|
| +using namespace testing;
|
| +
|
| namespace {
|
| -static const CGFloat kArbitraryWidth = 500;
|
| +NSString* const kItemTestUsername = @"foo";
|
| +NSString* const kItemTestPassword = @"bar";
|
| } // namespace
|
|
|
| -typedef ManagePasswordsControllerTest ManagePasswordItemViewControllerTest;
|
| +MATCHER_P(PasswordFormEq, form, "") {
|
| + return form.username_value == arg.username_value &&
|
| + form.password_value == arg.password_value;
|
| +}
|
| +
|
| +class ManagePasswordItemViewControllerTest
|
| + : public ManagePasswordsControllerTest {
|
| + public:
|
| + ManagePasswordItemViewControllerTest() {}
|
| + virtual ~ManagePasswordItemViewControllerTest() {}
|
| +
|
| + virtual void SetUp() OVERRIDE {
|
| + ManagePasswordsControllerTest::SetUp();
|
| + PasswordStoreFactory::GetInstance()->SetTestingFactory(
|
| + profile(), MockPasswordStoreService::Build);
|
| + ui_controller()->SetPendingCredentials(credentials());
|
| + }
|
| +
|
| + ManagePasswordItemViewController* controller() {
|
| + if (!controller_) {
|
| + controller_.reset([[ManagePasswordItemViewController alloc]
|
| + initWithModel:model()
|
| + passwordForm:ui_controller()->PendingCredentials()
|
| + position:password_manager::ui::FIRST_ITEM]);
|
| + }
|
| + return controller_.get();
|
| + }
|
| +
|
| + autofill::PasswordForm credentials() {
|
| + autofill::PasswordForm form;
|
| + form.username_value = base::SysNSStringToUTF16(kItemTestUsername);
|
| + form.password_value = base::SysNSStringToUTF16(kItemTestPassword);
|
| + return form;
|
| + }
|
| +
|
| + password_manager::MockPasswordStore* mockStore() {
|
| + password_manager::PasswordStore* store =
|
| + PasswordStoreFactory::GetForProfile(profile(), Profile::EXPLICIT_ACCESS)
|
| + .get();
|
| + password_manager::MockPasswordStore* mockStore =
|
| + static_cast<password_manager::MockPasswordStore*>(store);
|
| + return mockStore;
|
| + }
|
| +
|
| + private:
|
| + base::scoped_nsobject<ManagePasswordItemViewController> controller_;
|
| + DISALLOW_COPY_AND_ASSIGN(ManagePasswordItemViewControllerTest);
|
| +};
|
| +
|
| +TEST_F(ManagePasswordItemViewControllerTest, ManageStateShouldHaveManageView) {
|
| + model()->set_state(password_manager::ui::MANAGE_STATE);
|
| + EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_MANAGE, [controller() state]);
|
| + EXPECT_NSEQ([ManagePasswordItemManageView class],
|
| + [[controller() contentView] class]);
|
| +}
|
| +
|
| +TEST_F(ManagePasswordItemViewControllerTest,
|
| + ClickingDeleteShouldShowUndoViewAndDeletePassword) {
|
| + EXPECT_CALL(*mockStore(), RemoveLogin(PasswordFormEq(credentials())));
|
| + model()->set_state(password_manager::ui::MANAGE_STATE);
|
| +
|
| + ManagePasswordItemManageView* manageView =
|
| + base::mac::ObjCCast<ManagePasswordItemManageView>(
|
| + controller().contentView);
|
| + [manageView.deleteButton performClick:nil];
|
| +
|
| + EXPECT_NSEQ([ManagePasswordItemUndoView class],
|
| + [controller().contentView class]);
|
| +}
|
| +
|
| +TEST_F(ManagePasswordItemViewControllerTest,
|
| + ClickingUndoShouldShowManageViewAndAddPassword) {
|
| + EXPECT_CALL(*mockStore(), AddLogin(PasswordFormEq(credentials())));
|
| + model()->set_state(password_manager::ui::MANAGE_STATE);
|
| +
|
| + ManagePasswordItemManageView* manageView =
|
| + base::mac::ObjCCast<ManagePasswordItemManageView>(
|
| + controller().contentView);
|
| + [manageView.deleteButton performClick:nil];
|
| +
|
| + ManagePasswordItemUndoView* undoView =
|
| + base::mac::ObjCCast<ManagePasswordItemUndoView>(controller().contentView);
|
| + [undoView.undoButton performClick:nil];
|
| +
|
| + EXPECT_NSEQ([ManagePasswordItemManageView class],
|
| + [controller().contentView class]);
|
| +}
|
| +
|
| +TEST_F(ManagePasswordItemViewControllerTest,
|
| + ManageViewShouldHaveCorrectUsernameAndObscuredPassword) {
|
| + model()->set_state(password_manager::ui::MANAGE_STATE);
|
| + ManagePasswordItemManageView* manageView =
|
| + base::mac::ObjCCast<ManagePasswordItemManageView>(
|
| + [controller() contentView]);
|
| +
|
| + // Ensure the fields are populated properly and the password is obscured.
|
| + EXPECT_NSEQ(kItemTestUsername, manageView.usernameField.stringValue);
|
| + EXPECT_NSEQ(kItemTestPassword, manageView.passwordField.stringValue);
|
| + EXPECT_TRUE([[manageView.passwordField cell] echosBullets]);
|
| +}
|
|
|
| TEST_F(ManagePasswordItemViewControllerTest,
|
| PendingStateShouldHavePendingView) {
|
| - base::scoped_nsobject<ManagePasswordItemViewController> controller(
|
| - [[ManagePasswordItemViewController alloc]
|
| - initWithModel:model()
|
| - position:password_manager::ui::FIRST_ITEM
|
| - minWidth:kArbitraryWidth]);
|
| - EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_PENDING, [controller state]);
|
| + EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_PENDING, [controller() state]);
|
| EXPECT_NSEQ([ManagePasswordItemPendingView class],
|
| - [[controller contentView] class]);
|
| + [[controller() contentView] class]);
|
| }
|
|
|
| TEST_F(ManagePasswordItemViewControllerTest,
|
| PendingViewShouldHaveCorrectUsernameAndObscuredPassword) {
|
| - // Set the pending credentials.
|
| - autofill::PasswordForm form;
|
| - NSString* const kUsername = @"foo";
|
| - NSString* const kPassword = @"bar";
|
| - form.username_value = base::SysNSStringToUTF16(kUsername);
|
| - form.password_value = base::SysNSStringToUTF16(kPassword);
|
| - ui_controller()->SetPendingCredentials(form);
|
| - ui_controller()->SetState(password_manager::ui::PENDING_PASSWORD_STATE);
|
| -
|
| - base::scoped_nsobject<ManagePasswordItemViewController> controller(
|
| - [[ManagePasswordItemViewController alloc]
|
| - initWithModel:model()
|
| - position:password_manager::ui::FIRST_ITEM
|
| - minWidth:kArbitraryWidth]);
|
| + model()->set_state(password_manager::ui::PENDING_PASSWORD_STATE);
|
| ManagePasswordItemPendingView* pendingView =
|
| base::mac::ObjCCast<ManagePasswordItemPendingView>(
|
| - [controller contentView]);
|
| + [controller() contentView]);
|
|
|
| // Ensure the fields are populated properly and the password is obscured.
|
| - EXPECT_NSEQ(kUsername, pendingView.usernameField.stringValue);
|
| - EXPECT_NSEQ(kPassword, pendingView.passwordField.stringValue);
|
| + EXPECT_NSEQ(kItemTestUsername, pendingView.usernameField.stringValue);
|
| + EXPECT_NSEQ(kItemTestPassword, pendingView.passwordField.stringValue);
|
| EXPECT_TRUE([[pendingView.passwordField cell] echosBullets]);
|
| }
|
|
|