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

Unified Diff: chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm

Issue 462563002: Add ManagePasswordsBubbleManageViewController and unit tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix views Created 6 years, 4 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/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]);
}

Powered by Google App Engine
This is Rietveld 408576698