OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <algorithm> | 5 #include <algorithm> |
6 #include <map> | 6 #include <map> |
7 #include <set> | 7 #include <set> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 protected: | 150 protected: |
151 NativeBackendKWalletTestBase() { | 151 NativeBackendKWalletTestBase() { |
152 old_form_google_.origin = GURL("http://www.google.com/"); | 152 old_form_google_.origin = GURL("http://www.google.com/"); |
153 old_form_google_.action = GURL("http://www.google.com/login"); | 153 old_form_google_.action = GURL("http://www.google.com/login"); |
154 old_form_google_.username_element = UTF8ToUTF16("user"); | 154 old_form_google_.username_element = UTF8ToUTF16("user"); |
155 old_form_google_.username_value = UTF8ToUTF16("joeschmoe"); | 155 old_form_google_.username_value = UTF8ToUTF16("joeschmoe"); |
156 old_form_google_.password_element = UTF8ToUTF16("pass"); | 156 old_form_google_.password_element = UTF8ToUTF16("pass"); |
157 old_form_google_.password_value = UTF8ToUTF16("seekrit"); | 157 old_form_google_.password_value = UTF8ToUTF16("seekrit"); |
158 old_form_google_.submit_element = UTF8ToUTF16("submit"); | 158 old_form_google_.submit_element = UTF8ToUTF16("submit"); |
159 old_form_google_.signon_realm = "Google"; | 159 old_form_google_.signon_realm = "Google"; |
| 160 old_form_google_.date_created = base::Time::Now(); |
160 | 161 |
161 form_google_ = old_form_google_; | 162 form_google_ = old_form_google_; |
162 form_google_.times_used = 3; | 163 form_google_.times_used = 3; |
163 form_google_.type = PasswordForm::TYPE_GENERATED; | 164 form_google_.type = PasswordForm::TYPE_GENERATED; |
164 form_google_.form_data.name = UTF8ToUTF16("form_name"); | 165 form_google_.form_data.name = UTF8ToUTF16("form_name"); |
165 form_google_.form_data.user_submitted = true; | 166 form_google_.form_data.user_submitted = true; |
166 form_google_.date_synced = base::Time::Now(); | 167 form_google_.date_synced = base::Time::Now(); |
| 168 form_google_.date_created = old_form_google_.date_created; |
167 form_google_.display_name = UTF8ToUTF16("Joe Schmoe"); | 169 form_google_.display_name = UTF8ToUTF16("Joe Schmoe"); |
168 form_google_.avatar_url = GURL("http://www.google.com/avatar"); | 170 form_google_.avatar_url = GURL("http://www.google.com/avatar"); |
169 form_google_.federation_url = GURL("http://www.google.com/federation_url"); | 171 form_google_.federation_url = GURL("http://www.google.com/federation_url"); |
170 form_google_.skip_zero_click = true; | 172 form_google_.skip_zero_click = true; |
171 | 173 |
172 form_isc_.origin = GURL("http://www.isc.org/"); | 174 form_isc_.origin = GURL("http://www.isc.org/"); |
173 form_isc_.action = GURL("http://www.isc.org/auth"); | 175 form_isc_.action = GURL("http://www.isc.org/auth"); |
174 form_isc_.username_element = UTF8ToUTF16("id"); | 176 form_isc_.username_element = UTF8ToUTF16("id"); |
175 form_isc_.username_value = UTF8ToUTF16("janedoe"); | 177 form_isc_.username_value = UTF8ToUTF16("janedoe"); |
176 form_isc_.password_element = UTF8ToUTF16("passwd"); | 178 form_isc_.password_element = UTF8ToUTF16("passwd"); |
177 form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); | 179 form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); |
178 form_isc_.submit_element = UTF8ToUTF16("login"); | 180 form_isc_.submit_element = UTF8ToUTF16("login"); |
179 form_isc_.signon_realm = "ISC"; | 181 form_isc_.signon_realm = "ISC"; |
180 form_isc_.date_synced = base::Time::Now(); | 182 form_isc_.date_synced = base::Time::Now(); |
| 183 form_isc_.date_created = base::Time::Now(); |
181 } | 184 } |
182 | 185 |
183 static void CheckPasswordForm(const PasswordForm& expected, | 186 static void CheckPasswordForm(const PasswordForm& expected, |
184 const PasswordForm& actual); | 187 const PasswordForm& actual, |
| 188 bool check_date_created); |
185 static void CheckPasswordChanges(const PasswordStoreChangeList& expected, | 189 static void CheckPasswordChanges(const PasswordStoreChangeList& expected, |
186 const PasswordStoreChangeList& actual); | 190 const PasswordStoreChangeList& actual); |
187 static void CheckPasswordChangesWithResult( | 191 static void CheckPasswordChangesWithResult( |
188 const PasswordStoreChangeList* expected, | 192 const PasswordStoreChangeList* expected, |
189 const PasswordStoreChangeList* actual, | 193 const PasswordStoreChangeList* actual, |
190 bool result); | 194 bool result); |
191 | 195 |
192 PasswordForm old_form_google_; | 196 PasswordForm old_form_google_; |
193 PasswordForm form_google_; | 197 PasswordForm form_google_; |
194 PasswordForm form_isc_; | 198 PasswordForm form_isc_; |
195 }; | 199 }; |
196 | 200 |
197 // static | 201 // static |
198 void NativeBackendKWalletTestBase::CheckPasswordForm( | 202 void NativeBackendKWalletTestBase::CheckPasswordForm( |
199 const PasswordForm& expected, const PasswordForm& actual) { | 203 const PasswordForm& expected, |
| 204 const PasswordForm& actual, |
| 205 bool check_date_created) { |
200 EXPECT_EQ(expected.origin, actual.origin); | 206 EXPECT_EQ(expected.origin, actual.origin); |
201 EXPECT_EQ(expected.password_value, actual.password_value); | 207 EXPECT_EQ(expected.password_value, actual.password_value); |
202 EXPECT_EQ(expected.action, actual.action); | 208 EXPECT_EQ(expected.action, actual.action); |
203 EXPECT_EQ(expected.username_element, actual.username_element); | 209 EXPECT_EQ(expected.username_element, actual.username_element); |
204 EXPECT_EQ(expected.username_value, actual.username_value); | 210 EXPECT_EQ(expected.username_value, actual.username_value); |
205 EXPECT_EQ(expected.password_element, actual.password_element); | 211 EXPECT_EQ(expected.password_element, actual.password_element); |
206 EXPECT_EQ(expected.submit_element, actual.submit_element); | 212 EXPECT_EQ(expected.submit_element, actual.submit_element); |
207 EXPECT_EQ(expected.signon_realm, actual.signon_realm); | 213 EXPECT_EQ(expected.signon_realm, actual.signon_realm); |
208 EXPECT_EQ(expected.ssl_valid, actual.ssl_valid); | 214 EXPECT_EQ(expected.ssl_valid, actual.ssl_valid); |
209 EXPECT_EQ(expected.preferred, actual.preferred); | 215 EXPECT_EQ(expected.preferred, actual.preferred); |
210 // We don't check the date created. It varies. | 216 if (check_date_created) { |
| 217 EXPECT_EQ(expected.date_created, actual.date_created); |
| 218 } |
211 EXPECT_EQ(expected.blacklisted_by_user, actual.blacklisted_by_user); | 219 EXPECT_EQ(expected.blacklisted_by_user, actual.blacklisted_by_user); |
212 EXPECT_EQ(expected.type, actual.type); | 220 EXPECT_EQ(expected.type, actual.type); |
213 EXPECT_EQ(expected.times_used, actual.times_used); | 221 EXPECT_EQ(expected.times_used, actual.times_used); |
214 EXPECT_EQ(expected.scheme, actual.scheme); | 222 EXPECT_EQ(expected.scheme, actual.scheme); |
215 EXPECT_EQ(expected.date_synced, actual.date_synced); | 223 EXPECT_EQ(expected.date_synced, actual.date_synced); |
216 EXPECT_EQ(expected.display_name, actual.display_name); | 224 EXPECT_EQ(expected.display_name, actual.display_name); |
217 EXPECT_EQ(expected.avatar_url, actual.avatar_url); | 225 EXPECT_EQ(expected.avatar_url, actual.avatar_url); |
218 EXPECT_EQ(expected.federation_url, actual.federation_url); | 226 EXPECT_EQ(expected.federation_url, actual.federation_url); |
219 EXPECT_EQ(expected.skip_zero_click, actual.skip_zero_click); | 227 EXPECT_EQ(expected.skip_zero_click, actual.skip_zero_click); |
220 } | 228 } |
221 | 229 |
222 // static | 230 // static |
223 void NativeBackendKWalletTestBase::CheckPasswordChanges( | 231 void NativeBackendKWalletTestBase::CheckPasswordChanges( |
224 const PasswordStoreChangeList& expected, | 232 const PasswordStoreChangeList& expected, |
225 const PasswordStoreChangeList& actual) { | 233 const PasswordStoreChangeList& actual) { |
226 ASSERT_EQ(expected.size(), actual.size()); | 234 ASSERT_EQ(expected.size(), actual.size()); |
227 for (size_t i = 0; i < expected.size(); ++i) { | 235 for (size_t i = 0; i < expected.size(); ++i) { |
228 EXPECT_EQ(expected[i].type(), actual[i].type()); | 236 EXPECT_EQ(expected[i].type(), actual[i].type()); |
229 CheckPasswordForm(expected[i].form(), actual[i].form()); | 237 CheckPasswordForm(expected[i].form(), actual[i].form(), true); |
230 } | 238 } |
231 } | 239 } |
232 | 240 |
233 // static | 241 // static |
234 void NativeBackendKWalletTestBase::CheckPasswordChangesWithResult( | 242 void NativeBackendKWalletTestBase::CheckPasswordChangesWithResult( |
235 const PasswordStoreChangeList* expected, | 243 const PasswordStoreChangeList* expected, |
236 const PasswordStoreChangeList* actual, | 244 const PasswordStoreChangeList* actual, |
237 bool result) { | 245 bool result) { |
238 EXPECT_TRUE(result); | 246 EXPECT_TRUE(result); |
239 CheckPasswordChanges(*expected, *actual); | 247 CheckPasswordChanges(*expected, *actual); |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 NativeBackendKWalletStub backend(42); | 366 NativeBackendKWalletStub backend(42); |
359 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 367 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
360 | 368 |
361 form_google_.date_synced = base::Time(); | 369 form_google_.date_synced = base::Time(); |
362 form_isc_.date_synced = base::Time(); | 370 form_isc_.date_synced = base::Time(); |
363 form_google_.date_created = base::Time(); | 371 form_google_.date_created = base::Time(); |
364 form_isc_.date_created = base::Time(); | 372 form_isc_.date_created = base::Time(); |
365 base::Time now = base::Time::Now(); | 373 base::Time now = base::Time::Now(); |
366 base::Time next_day = now + base::TimeDelta::FromDays(1); | 374 base::Time next_day = now + base::TimeDelta::FromDays(1); |
367 if (date_to_test == CREATED) { | 375 if (date_to_test == CREATED) { |
368 // crbug/374132. Remove the next line once it's fixed. | |
369 next_day = base::Time::FromTimeT(next_day.ToTimeT()); | |
370 form_google_.date_created = now; | 376 form_google_.date_created = now; |
371 form_isc_.date_created = next_day; | 377 form_isc_.date_created = next_day; |
372 } else { | 378 } else { |
373 form_google_.date_synced = now; | 379 form_google_.date_synced = now; |
374 form_isc_.date_synced = next_day; | 380 form_isc_.date_synced = next_day; |
375 } | 381 } |
376 | 382 |
377 BrowserThread::PostTask( | 383 BrowserThread::PostTask( |
378 BrowserThread::DB, | 384 BrowserThread::DB, |
379 FROM_HERE, | 385 FROM_HERE, |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
597 for (size_t i = 0; i < entries.size() && i < sorted_expected.size(); ++i) { | 603 for (size_t i = 0; i < entries.size() && i < sorted_expected.size(); ++i) { |
598 EXPECT_EQ(sorted_expected[i].first, entries[i]); | 604 EXPECT_EQ(sorted_expected[i].first, entries[i]); |
599 TestKWallet::Blob value; | 605 TestKWallet::Blob value; |
600 EXPECT_TRUE(wallet_.readEntry(folder, entries[i], &value)); | 606 EXPECT_TRUE(wallet_.readEntry(folder, entries[i], &value)); |
601 Pickle pickle(reinterpret_cast<const char*>(value.data()), value.size()); | 607 Pickle pickle(reinterpret_cast<const char*>(value.data()), value.size()); |
602 ScopedVector<autofill::PasswordForm> forms; | 608 ScopedVector<autofill::PasswordForm> forms; |
603 NativeBackendKWalletStub::DeserializeValue(entries[i], pickle, &forms); | 609 NativeBackendKWalletStub::DeserializeValue(entries[i], pickle, &forms); |
604 const std::vector<const PasswordForm*>& expect = sorted_expected[i].second; | 610 const std::vector<const PasswordForm*>& expect = sorted_expected[i].second; |
605 EXPECT_EQ(expect.size(), forms.size()); | 611 EXPECT_EQ(expect.size(), forms.size()); |
606 for (size_t j = 0; j < forms.size() && j < expect.size(); ++j) | 612 for (size_t j = 0; j < forms.size() && j < expect.size(); ++j) |
607 CheckPasswordForm(*expect[j], *forms[j]); | 613 CheckPasswordForm(*expect[j], *forms[j], true); |
608 } | 614 } |
609 } | 615 } |
610 | 616 |
611 TEST_F(NativeBackendKWalletTest, NotEnabled) { | 617 TEST_F(NativeBackendKWalletTest, NotEnabled) { |
612 NativeBackendKWalletStub kwallet(42); | 618 NativeBackendKWalletStub kwallet(42); |
613 kwallet_enabled_ = false; | 619 kwallet_enabled_ = false; |
614 EXPECT_FALSE(kwallet.InitWithBus(mock_session_bus_)); | 620 EXPECT_FALSE(kwallet.InitWithBus(mock_session_bus_)); |
615 EXPECT_FALSE(klauncher_contacted_); | 621 EXPECT_FALSE(klauncher_contacted_); |
616 } | 622 } |
617 | 623 |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
916 | 922 |
917 TEST_F(NativeBackendKWalletTest, RemoveLoginsSyncedBetween) { | 923 TEST_F(NativeBackendKWalletTest, RemoveLoginsSyncedBetween) { |
918 TestRemoveLoginsBetween(SYNCED); | 924 TestRemoveLoginsBetween(SYNCED); |
919 } | 925 } |
920 | 926 |
921 // TODO(mdm): add more basic tests here at some point. | 927 // TODO(mdm): add more basic tests here at some point. |
922 // (For example tests for storing >1 password per realm pickle.) | 928 // (For example tests for storing >1 password per realm pickle.) |
923 | 929 |
924 class NativeBackendKWalletPickleTest : public NativeBackendKWalletTestBase { | 930 class NativeBackendKWalletPickleTest : public NativeBackendKWalletTestBase { |
925 protected: | 931 protected: |
| 932 void CreateVersion5Pickle(const PasswordForm& form, Pickle* pickle); |
926 void CreateVersion3Pickle(const PasswordForm& form, Pickle* pickle); | 933 void CreateVersion3Pickle(const PasswordForm& form, Pickle* pickle); |
927 void CreateVersion2Pickle(const PasswordForm& form, Pickle* pickle); | 934 void CreateVersion2Pickle(const PasswordForm& form, Pickle* pickle); |
928 void CreateVersion1Pickle(const PasswordForm& form, Pickle* pickle); | 935 void CreateVersion1Pickle(const PasswordForm& form, Pickle* pickle); |
929 void CreateVersion0Pickle(bool size_32, | 936 void CreateVersion0Pickle(bool size_32, |
930 const PasswordForm& form, | 937 const PasswordForm& form, |
931 Pickle* pickle); | 938 Pickle* pickle); |
| 939 void CheckVersion5Pickle(); |
932 void CheckVersion3Pickle(); | 940 void CheckVersion3Pickle(); |
933 void CheckVersion2Pickle(); | 941 void CheckVersion2Pickle(); |
934 void CheckVersion1Pickle(); | 942 void CheckVersion1Pickle(); |
935 void CheckVersion0Pickle(bool size_32, PasswordForm::Scheme scheme); | 943 void CheckVersion0Pickle(bool size_32, PasswordForm::Scheme scheme); |
936 | 944 |
937 private: | 945 private: |
938 void CreatePickle(bool size_32, const PasswordForm& form, Pickle* pickle); | 946 // Creates a Pickle from |form|. If |size_32| is true, stores the number of |
| 947 // forms in the pickle as a 32bit uint, otherwise as 64 bit size_t. The latter |
| 948 // should be the case for versions > 0. If |date_created_internal| is true, |
| 949 // stores |date_created| as base::Time's internal value, otherwise as time_t. |
| 950 void CreatePickle(bool size_32, |
| 951 bool date_created_internal, |
| 952 const PasswordForm& form, |
| 953 Pickle* pickle); |
939 }; | 954 }; |
940 | 955 |
| 956 void NativeBackendKWalletPickleTest::CreateVersion5Pickle( |
| 957 const PasswordForm& form, |
| 958 Pickle* pickle) { |
| 959 pickle->WriteInt(5); |
| 960 CreatePickle(false, true, form, pickle); |
| 961 pickle->WriteInt(form.type); |
| 962 pickle->WriteInt(form.times_used); |
| 963 autofill::SerializeFormData(form.form_data, pickle); |
| 964 pickle->WriteInt64(form.date_synced.ToInternalValue()); |
| 965 pickle->WriteString16(form.display_name); |
| 966 pickle->WriteString(form.avatar_url.spec()); |
| 967 pickle->WriteString(form.federation_url.spec()); |
| 968 pickle->WriteBool(form.skip_zero_click); |
| 969 } |
| 970 |
941 void NativeBackendKWalletPickleTest::CreateVersion3Pickle( | 971 void NativeBackendKWalletPickleTest::CreateVersion3Pickle( |
942 const PasswordForm& form, Pickle* pickle) { | 972 const PasswordForm& form, Pickle* pickle) { |
943 pickle->WriteInt(3); | 973 pickle->WriteInt(3); |
944 CreatePickle(false, form, pickle); | 974 CreatePickle(false, false, form, pickle); |
945 pickle->WriteInt(form.type); | 975 pickle->WriteInt(form.type); |
946 pickle->WriteInt(form.times_used); | 976 pickle->WriteInt(form.times_used); |
947 autofill::SerializeFormData(form.form_data, pickle); | 977 autofill::SerializeFormData(form.form_data, pickle); |
948 pickle->WriteInt64(form.date_synced.ToInternalValue()); | 978 pickle->WriteInt64(form.date_synced.ToInternalValue()); |
949 } | 979 } |
950 | 980 |
951 void NativeBackendKWalletPickleTest::CreateVersion2Pickle( | 981 void NativeBackendKWalletPickleTest::CreateVersion2Pickle( |
952 const PasswordForm& form, Pickle* pickle) { | 982 const PasswordForm& form, Pickle* pickle) { |
953 pickle->WriteInt(2); | 983 pickle->WriteInt(2); |
954 CreatePickle(false, form, pickle); | 984 CreatePickle(false, false, form, pickle); |
955 pickle->WriteInt(form.type); | 985 pickle->WriteInt(form.type); |
956 pickle->WriteInt(form.times_used); | 986 pickle->WriteInt(form.times_used); |
957 autofill::SerializeFormData(form.form_data, pickle); | 987 autofill::SerializeFormData(form.form_data, pickle); |
958 } | 988 } |
959 | 989 |
960 void NativeBackendKWalletPickleTest::CreateVersion1Pickle( | 990 void NativeBackendKWalletPickleTest::CreateVersion1Pickle( |
961 const PasswordForm& form, Pickle* pickle) { | 991 const PasswordForm& form, Pickle* pickle) { |
962 pickle->WriteInt(1); | 992 pickle->WriteInt(1); |
963 CreatePickle(false, form, pickle); | 993 CreatePickle(false, false, form, pickle); |
964 } | 994 } |
965 | 995 |
966 void NativeBackendKWalletPickleTest::CreateVersion0Pickle( | 996 void NativeBackendKWalletPickleTest::CreateVersion0Pickle( |
967 bool size_32, const PasswordForm& form, Pickle* pickle) { | 997 bool size_32, const PasswordForm& form, Pickle* pickle) { |
968 pickle->WriteInt(0); | 998 pickle->WriteInt(0); |
969 CreatePickle(size_32, form, pickle); | 999 CreatePickle(size_32, false, form, pickle); |
970 } | 1000 } |
971 | 1001 |
972 void NativeBackendKWalletPickleTest::CreatePickle( | 1002 void NativeBackendKWalletPickleTest::CreatePickle(bool size_32, |
973 bool size_32, const PasswordForm& form, Pickle* pickle) { | 1003 bool date_created_internal, |
| 1004 const PasswordForm& form, |
| 1005 Pickle* pickle) { |
974 if (size_32) | 1006 if (size_32) |
975 pickle->WriteUInt32(1); // Size of form list. 32 bits. | 1007 pickle->WriteUInt32(1); // Size of form list. 32 bits. |
976 else | 1008 else |
977 pickle->WriteSizeT(1); // Size of form list. 64 bits. | 1009 pickle->WriteSizeT(1); // Size of form list. 64 bits. |
978 pickle->WriteInt(form.scheme); | 1010 pickle->WriteInt(form.scheme); |
979 pickle->WriteString(form.origin.spec()); | 1011 pickle->WriteString(form.origin.spec()); |
980 pickle->WriteString(form.action.spec()); | 1012 pickle->WriteString(form.action.spec()); |
981 pickle->WriteString16(form.username_element); | 1013 pickle->WriteString16(form.username_element); |
982 pickle->WriteString16(form.username_value); | 1014 pickle->WriteString16(form.username_value); |
983 pickle->WriteString16(form.password_element); | 1015 pickle->WriteString16(form.password_element); |
984 pickle->WriteString16(form.password_value); | 1016 pickle->WriteString16(form.password_value); |
985 pickle->WriteString16(form.submit_element); | 1017 pickle->WriteString16(form.submit_element); |
986 pickle->WriteBool(form.ssl_valid); | 1018 pickle->WriteBool(form.ssl_valid); |
987 pickle->WriteBool(form.preferred); | 1019 pickle->WriteBool(form.preferred); |
988 pickle->WriteBool(form.blacklisted_by_user); | 1020 pickle->WriteBool(form.blacklisted_by_user); |
989 pickle->WriteInt64(form.date_created.ToTimeT()); | 1021 if (date_created_internal) |
| 1022 pickle->WriteInt64(form.date_created.ToInternalValue()); |
| 1023 else |
| 1024 pickle->WriteInt64(form.date_created.ToTimeT()); |
| 1025 } |
| 1026 |
| 1027 void NativeBackendKWalletPickleTest::CheckVersion5Pickle() { |
| 1028 Pickle pickle; |
| 1029 PasswordForm form = form_google_; |
| 1030 CreateVersion5Pickle(form, &pickle); |
| 1031 |
| 1032 ScopedVector<PasswordForm> form_list; |
| 1033 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, |
| 1034 &form_list); |
| 1035 |
| 1036 EXPECT_EQ(1u, form_list.size()); |
| 1037 if (form_list.size() > 0) |
| 1038 CheckPasswordForm(form, *form_list[0], true); |
990 } | 1039 } |
991 | 1040 |
992 void NativeBackendKWalletPickleTest::CheckVersion3Pickle() { | 1041 void NativeBackendKWalletPickleTest::CheckVersion3Pickle() { |
993 Pickle pickle; | 1042 Pickle pickle; |
994 PasswordForm form = form_google_; | 1043 PasswordForm form = form_google_; |
995 // Remove the fields which were not present in version #3. | 1044 // Remove the fields which were not present in version #3. |
996 form.display_name.clear(); | 1045 form.display_name.clear(); |
997 form.avatar_url = GURL(); | 1046 form.avatar_url = GURL(); |
998 form.federation_url = GURL(); | 1047 form.federation_url = GURL(); |
999 form.skip_zero_click = false; | 1048 form.skip_zero_click = false; |
1000 CreateVersion3Pickle(form, &pickle); | 1049 CreateVersion3Pickle(form, &pickle); |
1001 | 1050 |
1002 ScopedVector<PasswordForm> form_list; | 1051 ScopedVector<PasswordForm> form_list; |
1003 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, | 1052 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, |
1004 &form_list); | 1053 &form_list); |
1005 | 1054 |
1006 EXPECT_EQ(1u, form_list.size()); | 1055 EXPECT_EQ(1u, form_list.size()); |
1007 if (form_list.size() > 0) | 1056 if (form_list.size() > 0) |
1008 CheckPasswordForm(form, *form_list[0]); | 1057 CheckPasswordForm(form, *form_list[0], false); |
1009 } | 1058 } |
1010 | 1059 |
1011 void NativeBackendKWalletPickleTest::CheckVersion2Pickle() { | 1060 void NativeBackendKWalletPickleTest::CheckVersion2Pickle() { |
1012 Pickle pickle; | 1061 Pickle pickle; |
1013 PasswordForm form = old_form_google_; | 1062 PasswordForm form = old_form_google_; |
1014 form.times_used = form_google_.times_used; | 1063 form.times_used = form_google_.times_used; |
1015 form.type = form_google_.type; | 1064 form.type = form_google_.type; |
1016 form.form_data = form_google_.form_data; | 1065 form.form_data = form_google_.form_data; |
1017 CreateVersion2Pickle(form, &pickle); | 1066 CreateVersion2Pickle(form, &pickle); |
1018 | 1067 |
1019 ScopedVector<PasswordForm> form_list; | 1068 ScopedVector<PasswordForm> form_list; |
1020 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, | 1069 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, |
1021 &form_list); | 1070 &form_list); |
1022 | 1071 |
1023 EXPECT_EQ(1u, form_list.size()); | 1072 EXPECT_EQ(1u, form_list.size()); |
1024 if (form_list.size() > 0) | 1073 if (form_list.size() > 0) |
1025 CheckPasswordForm(form, *form_list[0]); | 1074 CheckPasswordForm(form, *form_list[0], false); |
1026 } | 1075 } |
1027 | 1076 |
1028 // Make sure that we can still read version 1 pickles. | 1077 // Make sure that we can still read version 1 pickles. |
1029 void NativeBackendKWalletPickleTest::CheckVersion1Pickle() { | 1078 void NativeBackendKWalletPickleTest::CheckVersion1Pickle() { |
1030 Pickle pickle; | 1079 Pickle pickle; |
1031 PasswordForm form = form_google_; | 1080 PasswordForm form = form_google_; |
1032 CreateVersion1Pickle(form, &pickle); | 1081 CreateVersion1Pickle(form, &pickle); |
1033 | 1082 |
1034 ScopedVector<autofill::PasswordForm> form_list; | 1083 ScopedVector<autofill::PasswordForm> form_list; |
1035 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, | 1084 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, |
1036 pickle, &form_list); | 1085 pickle, &form_list); |
1037 | 1086 |
1038 // This will match |old_form_google_| because not all the fields present in | 1087 // This will match |old_form_google_| because not all the fields present in |
1039 // |form_google_| will be deserialized. | 1088 // |form_google_| will be deserialized. |
1040 EXPECT_EQ(1u, form_list.size()); | 1089 EXPECT_EQ(1u, form_list.size()); |
1041 if (form_list.size() > 0) | 1090 if (form_list.size() > 0) |
1042 CheckPasswordForm(old_form_google_, *form_list[0]); | 1091 CheckPasswordForm(old_form_google_, *form_list[0], false); |
1043 } | 1092 } |
1044 | 1093 |
1045 void NativeBackendKWalletPickleTest::CheckVersion0Pickle( | 1094 void NativeBackendKWalletPickleTest::CheckVersion0Pickle( |
1046 bool size_32, PasswordForm::Scheme scheme) { | 1095 bool size_32, PasswordForm::Scheme scheme) { |
1047 Pickle pickle; | 1096 Pickle pickle; |
1048 PasswordForm form = old_form_google_; | 1097 PasswordForm form = old_form_google_; |
1049 form.scheme = scheme; | 1098 form.scheme = scheme; |
1050 CreateVersion0Pickle(size_32, form, &pickle); | 1099 CreateVersion0Pickle(size_32, form, &pickle); |
1051 ScopedVector<autofill::PasswordForm> form_list; | 1100 ScopedVector<autofill::PasswordForm> form_list; |
1052 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, | 1101 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, |
1053 pickle, &form_list); | 1102 pickle, &form_list); |
1054 EXPECT_EQ(1u, form_list.size()); | 1103 EXPECT_EQ(1u, form_list.size()); |
1055 if (form_list.size() > 0) | 1104 if (form_list.size() > 0) |
1056 CheckPasswordForm(form, *form_list[0]); | 1105 CheckPasswordForm(form, *form_list[0], false); |
1057 } | 1106 } |
1058 | 1107 |
1059 // Check that if KWallet fails to respond, the backend propagates the error. | 1108 // Check that if KWallet fails to respond, the backend propagates the error. |
1060 TEST_F(NativeBackendKWalletTest, GetAllLoginsErrorHandling) { | 1109 TEST_F(NativeBackendKWalletTest, GetAllLoginsErrorHandling) { |
1061 NativeBackendKWalletStub backend(42); | 1110 NativeBackendKWalletStub backend(42); |
1062 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 1111 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
1063 // Make KWallet fail on calling readEntry. | 1112 // Make KWallet fail on calling readEntry. |
1064 failing_methods_.insert("readEntry"); | 1113 failing_methods_.insert("readEntry"); |
1065 | 1114 |
1066 // Store some non-blacklisted logins to be potentially returned. | 1115 // Store some non-blacklisted logins to be potentially returned. |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1106 CheckVersion1Pickle(); | 1155 CheckVersion1Pickle(); |
1107 } | 1156 } |
1108 | 1157 |
1109 TEST_F(NativeBackendKWalletPickleTest, CheckVersion2Pickle) { | 1158 TEST_F(NativeBackendKWalletPickleTest, CheckVersion2Pickle) { |
1110 CheckVersion2Pickle(); | 1159 CheckVersion2Pickle(); |
1111 } | 1160 } |
1112 | 1161 |
1113 TEST_F(NativeBackendKWalletPickleTest, CheckVersion3Pickle) { | 1162 TEST_F(NativeBackendKWalletPickleTest, CheckVersion3Pickle) { |
1114 CheckVersion3Pickle(); | 1163 CheckVersion3Pickle(); |
1115 } | 1164 } |
| 1165 |
| 1166 TEST_F(NativeBackendKWalletPickleTest, CheckVersion5Pickle) { |
| 1167 CheckVersion5Pickle(); |
| 1168 } |
OLD | NEW |