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 fb2bbd1d03f2c931cff2937e0e7abccb90fe2ee6..5ecd0806acbbaa70bc9aa0c2d392b0cfb3df148e 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 |
@@ -12,6 +12,7 @@ |
#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" |
+#import "chrome/browser/ui/cocoa/passwords/password_item_views.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" |
@@ -25,17 +26,12 @@ using namespace testing; |
namespace { |
NSString* const kItemTestUsername = @"foo"; |
NSString* const kItemTestPassword = @"bar"; |
+NSString* const kFederation = @"https://google.com/idp"; |
} // namespace |
-MATCHER_P(PasswordFormEq, form, "") { |
- return form.username_value == arg.username_value && |
- form.password_value == arg.password_value; |
-} |
- |
-class ManagePasswordItemViewControllerTest |
- : public ManagePasswordsControllerTest { |
+class PasswordsListViewControllerTest : public ManagePasswordsControllerTest { |
public: |
- ManagePasswordItemViewControllerTest() {} |
+ PasswordsListViewControllerTest() {} |
void SetUp() override { |
ManagePasswordsControllerTest::SetUp(); |
@@ -43,107 +39,144 @@ class ManagePasswordItemViewControllerTest |
profile(), |
password_manager::BuildPasswordStoreService< |
content::BrowserContext, password_manager::MockPasswordStore>); |
- ui_controller()->SetPendingPassword(credentials()); |
} |
- ManagePasswordItemViewController* controller() { |
- if (!controller_) { |
- controller_.reset([[ManagePasswordItemViewController alloc] |
- initWithModel:model() |
- passwordForm:ui_controller()->PendingPassword() |
- position:password_manager::ui::FIRST_ITEM]); |
- } |
- return controller_.get(); |
+ void SetUpManageState( |
+ const std::vector<const autofill::PasswordForm*>& forms) { |
+ model()->set_state(password_manager::ui::MANAGE_STATE); |
+ controller_.reset([[PasswordsListViewController alloc] |
+ initWithModel:model() |
+ forms:forms]); |
+ } |
+ |
+ void SetUpManageState(const autofill::PasswordForm* form) { |
+ model()->set_state(password_manager::ui::PENDING_PASSWORD_STATE); |
+ controller_.reset([[PasswordsListViewController alloc] |
+ initWithModel:model() |
+ forms:std::vector<const autofill::PasswordForm*>(1, form)]); |
} |
- autofill::PasswordForm credentials() { |
+ ManagePasswordItemViewController* GetControllerAt(unsigned i) { |
+ return base::mac::ObjCCast<ManagePasswordItemViewController>( |
+ [[controller_ itemViews] objectAtIndex:i]); |
+ } |
+ |
+ autofill::PasswordForm local_credential() { |
autofill::PasswordForm form; |
form.username_value = base::SysNSStringToUTF16(kItemTestUsername); |
form.password_value = base::SysNSStringToUTF16(kItemTestPassword); |
return form; |
} |
+ autofill::PasswordForm federated_credential() { |
+ autofill::PasswordForm form; |
+ form.username_value = base::SysNSStringToUTF16(kItemTestUsername); |
+ form.federation_url = GURL(base::SysNSStringToUTF16(kFederation)); |
+ return form; |
+ } |
+ |
password_manager::MockPasswordStore* mockStore() { |
password_manager::PasswordStore* store = |
- PasswordStoreFactory::GetForProfile( |
- profile(), ServiceAccessType::EXPLICIT_ACCESS).get(); |
- password_manager::MockPasswordStore* mockStore = |
- static_cast<password_manager::MockPasswordStore*>(store); |
- return mockStore; |
+ PasswordStoreFactory::GetForProfile(profile(), |
+ ServiceAccessType::EXPLICIT_ACCESS) |
+ .get(); |
+ return static_cast<password_manager::MockPasswordStore*>(store); |
} |
private: |
- base::scoped_nsobject<ManagePasswordItemViewController> controller_; |
- DISALLOW_COPY_AND_ASSIGN(ManagePasswordItemViewControllerTest); |
+ base::scoped_nsobject<PasswordsListViewController> controller_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(PasswordsListViewControllerTest); |
}; |
-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(PasswordsListViewControllerTest, ManageStateShouldHaveManageView) { |
+ ScopedVector<const autofill::PasswordForm> forms; |
+ forms.push_back(new autofill::PasswordForm(local_credential())); |
+ forms.push_back(new autofill::PasswordForm(federated_credential())); |
+ SetUpManageState(forms.get()); |
+ |
+ EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_MANAGE, [GetControllerAt(0) state]); |
+ EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_MANAGE, [GetControllerAt(1) state]); |
+ EXPECT_NSEQ([ManagePasswordItemView class], |
+ [[GetControllerAt(0) contentView] class]); |
+ EXPECT_NSEQ([ManagePasswordItemView class], |
+ [[GetControllerAt(1) contentView] class]); |
} |
-TEST_F(ManagePasswordItemViewControllerTest, |
+TEST_F(PasswordsListViewControllerTest, |
ClickingDeleteShouldShowUndoViewAndDeletePassword) { |
- EXPECT_CALL(*mockStore(), RemoveLogin(PasswordFormEq(credentials()))); |
- model()->set_state(password_manager::ui::MANAGE_STATE); |
- |
- ManagePasswordItemManageView* manageView = |
- base::mac::ObjCCast<ManagePasswordItemManageView>( |
- controller().contentView); |
+ ScopedVector<const autofill::PasswordForm> forms; |
+ forms.push_back(new autofill::PasswordForm(local_credential())); |
+ SetUpManageState(forms.get()); |
+ |
+ ManagePasswordItemView* manageView = |
+ base::mac::ObjCCast<ManagePasswordItemView>( |
+ [GetControllerAt(0) contentView]); |
+ EXPECT_CALL(*mockStore(), RemoveLogin(local_credential())); |
[manageView.deleteButton performClick:nil]; |
- EXPECT_NSEQ([ManagePasswordItemUndoView class], |
- [controller().contentView class]); |
+ EXPECT_NSEQ([UndoPasswordItemView class], |
+ [[GetControllerAt(0) contentView] class]); |
} |
-TEST_F(ManagePasswordItemViewControllerTest, |
+TEST_F(PasswordsListViewControllerTest, |
ClickingUndoShouldShowManageViewAndAddPassword) { |
- EXPECT_CALL(*mockStore(), RemoveLogin(PasswordFormEq(credentials()))); |
- model()->set_state(password_manager::ui::MANAGE_STATE); |
- |
- ManagePasswordItemManageView* manageView = |
- base::mac::ObjCCast<ManagePasswordItemManageView>( |
- controller().contentView); |
+ ScopedVector<const autofill::PasswordForm> forms; |
+ forms.push_back(new autofill::PasswordForm(local_credential())); |
+ SetUpManageState(forms.get()); |
+ |
+ ManagePasswordItemView* manageView = |
+ base::mac::ObjCCast<ManagePasswordItemView>( |
+ [GetControllerAt(0) contentView]); |
+ EXPECT_CALL(*mockStore(), RemoveLogin(local_credential())); |
[manageView.deleteButton performClick:nil]; |
- EXPECT_CALL(*mockStore(), AddLogin(PasswordFormEq(credentials()))); |
- ManagePasswordItemUndoView* undoView = |
- base::mac::ObjCCast<ManagePasswordItemUndoView>(controller().contentView); |
+ UndoPasswordItemView* undoView = base::mac::ObjCCast<UndoPasswordItemView>( |
+ [GetControllerAt(0) contentView]); |
+ EXPECT_CALL(*mockStore(), AddLogin(local_credential())); |
[undoView.undoButton performClick:nil]; |
- EXPECT_NSEQ([ManagePasswordItemManageView class], |
- [controller().contentView class]); |
+ EXPECT_NSEQ([ManagePasswordItemView class], |
+ [[GetControllerAt(0) contentView] class]); |
} |
-TEST_F(ManagePasswordItemViewControllerTest, |
+TEST_F(PasswordsListViewControllerTest, |
ManageViewShouldHaveCorrectUsernameAndObscuredPassword) { |
- model()->set_state(password_manager::ui::MANAGE_STATE); |
- ManagePasswordItemManageView* manageView = |
- base::mac::ObjCCast<ManagePasswordItemManageView>( |
- [controller() contentView]); |
+ ScopedVector<const autofill::PasswordForm> forms; |
+ forms.push_back(new autofill::PasswordForm(local_credential())); |
+ forms.push_back(new autofill::PasswordForm(federated_credential())); |
+ SetUpManageState(forms.get()); |
+ ManagePasswordItemView* manageView = |
+ base::mac::ObjCCast<ManagePasswordItemView>( |
+ [GetControllerAt(0) 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]); |
+ |
+ manageView = base::mac::ObjCCast<ManagePasswordItemView>( |
+ [GetControllerAt(1) contentView]); |
+ EXPECT_NSEQ(kItemTestUsername, manageView.usernameField.stringValue); |
+ EXPECT_THAT(base::SysNSStringToUTF8(manageView.passwordField.stringValue), |
+ HasSubstr(federated_credential().federation_url.host())); |
} |
-TEST_F(ManagePasswordItemViewControllerTest, |
- PendingStateShouldHavePendingView) { |
- model()->set_state(password_manager::ui::PENDING_PASSWORD_STATE); |
- EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_PENDING, [controller() state]); |
- EXPECT_NSEQ([ManagePasswordItemPendingView class], |
- [[controller() contentView] class]); |
+TEST_F(PasswordsListViewControllerTest, PendingStateShouldHavePendingView) { |
+ autofill::PasswordForm form = local_credential(); |
+ SetUpManageState(&form); |
+ EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_PENDING, [GetControllerAt(0) state]); |
+ EXPECT_NSEQ([PendingPasswordItemView class], |
+ [[GetControllerAt(0) contentView] class]); |
} |
-TEST_F(ManagePasswordItemViewControllerTest, |
+TEST_F(PasswordsListViewControllerTest, |
PendingViewShouldHaveCorrectUsernameAndObscuredPassword) { |
- model()->set_state(password_manager::ui::PENDING_PASSWORD_STATE); |
- ManagePasswordItemPendingView* pendingView = |
- base::mac::ObjCCast<ManagePasswordItemPendingView>( |
- [controller() contentView]); |
+ autofill::PasswordForm form = local_credential(); |
+ SetUpManageState(&form); |
+ PendingPasswordItemView* pendingView = |
+ base::mac::ObjCCast<PendingPasswordItemView>( |
+ [GetControllerAt(0) contentView]); |
// Ensure the fields are populated properly and the password is obscured. |
EXPECT_NSEQ(kItemTestUsername, pendingView.usernameField.stringValue); |
@@ -151,20 +184,16 @@ TEST_F(ManagePasswordItemViewControllerTest, |
EXPECT_TRUE([[pendingView.passwordField cell] echosBullets]); |
} |
-TEST_F(ManagePasswordItemViewControllerTest, |
+TEST_F(PasswordsListViewControllerTest, |
PendingViewShouldHaveCorrectUsernameAndFederation) { |
- model()->set_state(password_manager::ui::PENDING_PASSWORD_STATE); |
- autofill::PasswordForm form = credentials(); |
- GURL federation("https://google.com/idp"); |
- form.federation_url = federation; |
- ui_controller()->SetPendingPassword(form); |
- ManagePasswordItemPendingView* pendingView = |
- base::mac::ObjCCast<ManagePasswordItemPendingView>( |
- [controller() contentView]); |
+ autofill::PasswordForm form = federated_credential(); |
+ SetUpManageState(&form); |
+ PendingPasswordItemView* pendingView = |
+ base::mac::ObjCCast<PendingPasswordItemView>( |
+ [GetControllerAt(0) contentView]); |
// Ensure the fields are populated properly and the password is obscured. |
EXPECT_NSEQ(kItemTestUsername, pendingView.usernameField.stringValue); |
- EXPECT_FALSE(pendingView.passwordField); |
- EXPECT_THAT(base::SysNSStringToUTF8(pendingView.federationField.stringValue), |
- HasSubstr(federation.host())); |
+ EXPECT_THAT(base::SysNSStringToUTF8(pendingView.passwordField.stringValue), |
+ HasSubstr(federated_credential().federation_url.host())); |
} |