1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
// Copyright 2014 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 "chrome/browser/ui/cocoa/passwords/base_passwords_controller_test.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/password_manager/password_store_factory.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_manager_test_utils.h"
#include "content/public/test/web_contents_tester.h"
namespace {
const char kSiteOrigin[] = "http://example.com/login";
}
using testing::Return;
using testing::ReturnRef;
ManagePasswordsControllerTest::
ManagePasswordsControllerTest() {
}
ManagePasswordsControllerTest::
~ManagePasswordsControllerTest() {
}
void ManagePasswordsControllerTest::SetUp() {
CocoaProfileTest::SetUp();
// Create the test UIController here so that it's bound to and owned by
// |test_web_contents_| and therefore accessible to the model.
test_web_contents_.reset(
content::WebContentsTester::CreateTestWebContents(profile(), NULL));
ui_controller_ = new testing::NiceMock<ManagePasswordsUIControllerMock>(
test_web_contents_.get());
PasswordStoreFactory::GetInstance()->SetTestingFactoryAndUse(
profile(), password_manager::BuildPasswordStore<
content::BrowserContext,
testing::NiceMock<password_manager::MockPasswordStore>>);
}
ManagePasswordsBubbleModel*
ManagePasswordsControllerTest::GetModelAndCreateIfNull() {
if (!model_) {
model_.reset(new ManagePasswordsBubbleModel(test_web_contents_.get(),
GetDisplayReason()));
}
return model_.get();
}
void ManagePasswordsControllerTest::SetUpSavePendingState(bool empty_username) {
autofill::PasswordForm form;
if (!empty_username) {
form.username_value = base::ASCIIToUTF16("username");
}
EXPECT_CALL(*ui_controller_, GetPendingPassword()).WillOnce(ReturnRef(form));
std::vector<const autofill::PasswordForm*> forms;
EXPECT_CALL(*ui_controller_, GetCurrentForms()).WillOnce(ReturnRef(forms));
GURL origin(kSiteOrigin);
EXPECT_CALL(*ui_controller_, GetOrigin()).WillOnce(ReturnRef(origin));
EXPECT_CALL(*ui_controller_, GetState())
.WillOnce(Return(password_manager::ui::PENDING_PASSWORD_STATE));
GetModelAndCreateIfNull();
ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(ui_controller_));
}
void ManagePasswordsControllerTest::SetUpUpdatePendingState(
bool multiple_forms) {
autofill::PasswordForm form;
EXPECT_CALL(*ui_controller_, GetPendingPassword()).WillOnce(ReturnRef(form));
std::vector<const autofill::PasswordForm*> forms;
forms.push_back(&form);
if (multiple_forms) {
forms.push_back(&form);
}
EXPECT_CALL(*ui_controller_, GetCurrentForms()).WillOnce(ReturnRef(forms));
GURL origin(kSiteOrigin);
EXPECT_CALL(*ui_controller_, GetOrigin()).WillOnce(ReturnRef(origin));
EXPECT_CALL(*ui_controller_, GetState())
.WillOnce(Return(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE));
GetModelAndCreateIfNull();
ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(ui_controller_));
}
void ManagePasswordsControllerTest::SetUpConfirmationState() {
GURL origin(kSiteOrigin);
EXPECT_CALL(*ui_controller_, GetOrigin()).WillOnce(ReturnRef(origin));
EXPECT_CALL(*ui_controller_, GetState())
.WillOnce(Return(password_manager::ui::CONFIRMATION_STATE));
GetModelAndCreateIfNull();
ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(ui_controller_));
}
void ManagePasswordsControllerTest::SetUpManageState() {
std::vector<const autofill::PasswordForm*> forms;
EXPECT_CALL(*ui_controller_, GetCurrentForms()).WillOnce(ReturnRef(forms));
GURL origin(kSiteOrigin);
EXPECT_CALL(*ui_controller_, GetOrigin()).WillOnce(ReturnRef(origin));
EXPECT_CALL(*ui_controller_, GetState())
.WillOnce(Return(password_manager::ui::MANAGE_STATE));
GetModelAndCreateIfNull();
ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(ui_controller_));
}
ManagePasswordsBubbleModel::DisplayReason
ManagePasswordsControllerTest::GetDisplayReason() const {
return ManagePasswordsBubbleModel::AUTOMATIC;
}
@implementation ContentViewDelegateMock
@synthesize model = _model;
@synthesize dismissed = _dismissed;
- (void)viewShouldDismiss {
_dismissed = YES;
}
@end
|