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

Side by Side Diff: chrome/browser/ui/cocoa/passwords/credential_item_view_unittest.mm

Issue 878743007: Implement CredentialItemView and tests for the Mac account chooser. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix order Created 5 years, 9 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "chrome/browser/ui/cocoa/passwords/credential_item_view.h"
6
7 #include "base/strings/sys_string_conversions.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
10 #include "testing/gtest_mac.h"
11 #import "third_party/ocmock/OCMock/OCMock.h"
12 #include "third_party/ocmock/gtest_support.h"
13 #include "ui/gfx/image/image.h"
14
15 @interface CredentialItemView(Testing)
16 @property(nonatomic, readonly) NSTextField* nameLabel;
17 @property(nonatomic, readonly) NSTextField* usernameLabel;
18 @property(nonatomic, readonly) NSImageView* avatarView;
19 @end
20
21 // A test implementation of a CredentialItemDelegate to stub out interactions.
22 @interface CredentialItemTestDelegate : NSObject<CredentialItemDelegate>
23 @property(nonatomic, readonly) BOOL didFetchAvatar;
24 @property(nonatomic, readonly) GURL fetchedAvatarURL;
25 @property(nonatomic, readonly) CredentialItemView* viewForFetchedAvatar;
26 @property(nonatomic, readonly) BOOL didSelectPasswordForm;
27 @property(nonatomic, readonly) autofill::PasswordForm selectedPasswordForm;
28 @property(nonatomic, readonly)
29 password_manager::CredentialType selectedCredentialType;
30 @end
31
32 @implementation CredentialItemTestDelegate
33 @synthesize didFetchAvatar = didFetchAvatar_;
34 @synthesize fetchedAvatarURL = fetchedAvatarURL_;
35 @synthesize viewForFetchedAvatar = viewForFetchedAvatar_;
36 @synthesize didSelectPasswordForm = didSelectPasswordForm_;
37 @synthesize selectedPasswordForm = selectedPasswordForm_;
38 @synthesize selectedCredentialType = selectedCredentialType_;
39
40 - (void)fetchAvatar:(const GURL&)avatarURL forView:(CredentialItemView*)view {
41 didFetchAvatar_ = YES;
42 fetchedAvatarURL_ = avatarURL;
43 viewForFetchedAvatar_ = view;
44 }
45
46 - (void)selectPasswordForm:(const autofill::PasswordForm&)passwordForm
47 credentialType:(password_manager::CredentialType)credentialType {
48 didSelectPasswordForm_ = YES;
49 selectedPasswordForm_ = passwordForm;
50 selectedCredentialType_ = credentialType;
51 }
52
53 @end
54
55 namespace {
56
57 // Returns an NSImage suitable for use as a test avatar.
58 NSImage* TestAvatar() {
59 return [[[NSImage alloc] init] autorelease];
60 }
61
62 // Returns a PasswordForm with only a username.
63 autofill::PasswordForm BasicCredential() {
64 autofill::PasswordForm credential;
65 credential.username_value = base::ASCIIToUTF16("taco");
66 return credential;
67 }
68
69 // Returns a PasswordForm with a username and display name.
70 autofill::PasswordForm CredentialWithName() {
71 autofill::PasswordForm credential;
72 credential.username_value = base::ASCIIToUTF16("pizza");
73 credential.display_name = base::ASCIIToUTF16("margherita pizza");
74 return credential;
75 }
76
77 // Returns a PasswordForm with a username and avatar URL.
78 autofill::PasswordForm CredentialWithAvatar() {
79 autofill::PasswordForm credential;
80 credential.username_value = base::ASCIIToUTF16("sandwich");
81 credential.avatar_url = GURL("http://sandwich.com/pastrami.jpg");
82 return credential;
83 }
84
85 // Returns a PasswordForm with a username, display name, and avatar URL.
86 autofill::PasswordForm CredentialWithNameAndAvatar() {
87 autofill::PasswordForm credential;
88 credential.username_value = base::ASCIIToUTF16("noodle");
89 credential.display_name = base::ASCIIToUTF16("pasta amatriciana");
90 credential.avatar_url = GURL("http://pasta.com/amatriciana.png");
91 return credential;
92 }
93
94 // Tests for CredentialItemViewTest.
95 class CredentialItemViewTest : public CocoaTest {
96 protected:
97 void SetUp() override {
98 delegate_.reset([[CredentialItemTestDelegate alloc] init]);
99 }
100
101 // Returns a delegate for testing.
102 CredentialItemTestDelegate* delegate() { return delegate_.get(); }
103
104 // Returns an autoreleased view populated from |form|.
105 CredentialItemView* view(const autofill::PasswordForm& form) {
106 return [[[CredentialItemView alloc]
107 initWithPasswordForm:form
108 credentialType:password_manager::CredentialType::
109 CREDENTIAL_TYPE_LOCAL
110 delegate:delegate()] autorelease];
111 }
112
113 private:
114 base::scoped_nsobject<CredentialItemTestDelegate> delegate_;
115 };
116
117 TEST_VIEW(CredentialItemViewTest, CredentialItemView);
118
119 TEST_F(CredentialItemViewTest, BasicCredential) {
120 autofill::PasswordForm form(BasicCredential());
121 CredentialItemView* item = view(form);
122
123 EXPECT_NSEQ(base::SysUTF16ToNSString(form.username_value),
124 [item usernameLabel].stringValue);
125 EXPECT_EQ(nil, [item nameLabel]);
126 EXPECT_FALSE([delegate() didFetchAvatar]);
127 EXPECT_NSEQ([CredentialItemView defaultAvatar], [item avatarView].image);
128 }
129
130 TEST_F(CredentialItemViewTest, CredentialWithName) {
131 autofill::PasswordForm form(CredentialWithName());
132 CredentialItemView* item = view(form);
133
134 EXPECT_NSEQ(base::SysUTF16ToNSString(form.username_value),
135 [item usernameLabel].stringValue);
136 EXPECT_NSEQ(base::SysUTF16ToNSString(form.display_name),
137 [item nameLabel].stringValue);
138 EXPECT_FALSE([delegate() didFetchAvatar]);
139 EXPECT_NSEQ([CredentialItemView defaultAvatar], [item avatarView].image);
140 }
141
142 TEST_F(CredentialItemViewTest, CredentialWithAvatar) {
143 autofill::PasswordForm form(CredentialWithAvatar());
144 CredentialItemView* item = view(form);
145
146 EXPECT_NSEQ(base::SysUTF16ToNSString(form.username_value),
147 [item usernameLabel].stringValue);
148 EXPECT_EQ(nil, [item nameLabel]);
149 EXPECT_TRUE([delegate() didFetchAvatar]);
150 EXPECT_EQ(form.avatar_url, [delegate() fetchedAvatarURL]);
151 EXPECT_EQ(item, [delegate() viewForFetchedAvatar]);
152 EXPECT_NSEQ([CredentialItemView defaultAvatar], [item avatarView].image);
153
154 NSImage* testAvatar = TestAvatar();
155 [item updateAvatar:testAvatar];
156 EXPECT_NSEQ(testAvatar, [item avatarView].image);
157 }
158
159 TEST_F(CredentialItemViewTest, CredentialWithNameAndAvatar) {
160 autofill::PasswordForm form(CredentialWithNameAndAvatar());
161 CredentialItemView* item = view(form);
162
163 EXPECT_NSEQ(base::SysUTF16ToNSString(form.username_value),
164 [item usernameLabel].stringValue);
165 EXPECT_NSEQ(base::SysUTF16ToNSString(form.display_name),
166 [item nameLabel].stringValue);
167 EXPECT_TRUE([delegate() didFetchAvatar]);
168 EXPECT_EQ(form.avatar_url, [delegate() fetchedAvatarURL]);
169 EXPECT_EQ(item, [delegate() viewForFetchedAvatar]);
170 EXPECT_NSEQ([CredentialItemView defaultAvatar], [item avatarView].image);
171
172 NSImage* testAvatar = TestAvatar();
173 [item updateAvatar:testAvatar];
174 EXPECT_NSEQ(testAvatar, [item avatarView].image);
175 }
176
177 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698