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 <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 old_form_google_.password_value = UTF8ToUTF16("seekrit"); | 148 old_form_google_.password_value = UTF8ToUTF16("seekrit"); |
149 old_form_google_.submit_element = UTF8ToUTF16("submit"); | 149 old_form_google_.submit_element = UTF8ToUTF16("submit"); |
150 old_form_google_.signon_realm = "Google"; | 150 old_form_google_.signon_realm = "Google"; |
151 | 151 |
152 form_google_ = old_form_google_; | 152 form_google_ = old_form_google_; |
153 form_google_.times_used = 3; | 153 form_google_.times_used = 3; |
154 form_google_.type = PasswordForm::TYPE_GENERATED; | 154 form_google_.type = PasswordForm::TYPE_GENERATED; |
155 form_google_.form_data.name = UTF8ToUTF16("form_name"); | 155 form_google_.form_data.name = UTF8ToUTF16("form_name"); |
156 form_google_.form_data.user_submitted = true; | 156 form_google_.form_data.user_submitted = true; |
157 form_google_.date_synced = base::Time::Now(); | 157 form_google_.date_synced = base::Time::Now(); |
| 158 form_google_.display_name = UTF8ToUTF16("Joe Schmoe"); |
| 159 form_google_.avatar_url = GURL("http://www.google.com/avatar"); |
| 160 form_google_.federation_url = GURL("http://www.google.com/federation_url"); |
| 161 form_google_.is_zero_click = true; |
158 | 162 |
159 form_isc_.origin = GURL("http://www.isc.org/"); | 163 form_isc_.origin = GURL("http://www.isc.org/"); |
160 form_isc_.action = GURL("http://www.isc.org/auth"); | 164 form_isc_.action = GURL("http://www.isc.org/auth"); |
161 form_isc_.username_element = UTF8ToUTF16("id"); | 165 form_isc_.username_element = UTF8ToUTF16("id"); |
162 form_isc_.username_value = UTF8ToUTF16("janedoe"); | 166 form_isc_.username_value = UTF8ToUTF16("janedoe"); |
163 form_isc_.password_element = UTF8ToUTF16("passwd"); | 167 form_isc_.password_element = UTF8ToUTF16("passwd"); |
164 form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); | 168 form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); |
165 form_isc_.submit_element = UTF8ToUTF16("login"); | 169 form_isc_.submit_element = UTF8ToUTF16("login"); |
166 form_isc_.signon_realm = "ISC"; | 170 form_isc_.signon_realm = "ISC"; |
167 form_isc_.date_synced = base::Time::Now(); | 171 form_isc_.date_synced = base::Time::Now(); |
(...skipping 25 matching lines...) Expand all Loading... |
193 EXPECT_EQ(expected.submit_element, actual.submit_element); | 197 EXPECT_EQ(expected.submit_element, actual.submit_element); |
194 EXPECT_EQ(expected.signon_realm, actual.signon_realm); | 198 EXPECT_EQ(expected.signon_realm, actual.signon_realm); |
195 EXPECT_EQ(expected.ssl_valid, actual.ssl_valid); | 199 EXPECT_EQ(expected.ssl_valid, actual.ssl_valid); |
196 EXPECT_EQ(expected.preferred, actual.preferred); | 200 EXPECT_EQ(expected.preferred, actual.preferred); |
197 // We don't check the date created. It varies. | 201 // We don't check the date created. It varies. |
198 EXPECT_EQ(expected.blacklisted_by_user, actual.blacklisted_by_user); | 202 EXPECT_EQ(expected.blacklisted_by_user, actual.blacklisted_by_user); |
199 EXPECT_EQ(expected.type, actual.type); | 203 EXPECT_EQ(expected.type, actual.type); |
200 EXPECT_EQ(expected.times_used, actual.times_used); | 204 EXPECT_EQ(expected.times_used, actual.times_used); |
201 EXPECT_EQ(expected.scheme, actual.scheme); | 205 EXPECT_EQ(expected.scheme, actual.scheme); |
202 EXPECT_EQ(expected.date_synced, actual.date_synced); | 206 EXPECT_EQ(expected.date_synced, actual.date_synced); |
| 207 EXPECT_EQ(expected.display_name, actual.display_name); |
| 208 EXPECT_EQ(expected.avatar_url, actual.avatar_url); |
| 209 EXPECT_EQ(expected.federation_url, actual.federation_url); |
| 210 EXPECT_EQ(expected.is_zero_click, actual.is_zero_click); |
203 } | 211 } |
204 | 212 |
205 // static | 213 // static |
206 void NativeBackendKWalletTestBase::CheckPasswordChanges( | 214 void NativeBackendKWalletTestBase::CheckPasswordChanges( |
207 const PasswordStoreChangeList& expected, | 215 const PasswordStoreChangeList& expected, |
208 const PasswordStoreChangeList& actual) { | 216 const PasswordStoreChangeList& actual) { |
209 ASSERT_EQ(expected.size(), actual.size()); | 217 ASSERT_EQ(expected.size(), actual.size()); |
210 for (size_t i = 0; i < expected.size(); ++i) { | 218 for (size_t i = 0; i < expected.size(); ++i) { |
211 EXPECT_EQ(expected[i].type(), actual[i].type()); | 219 EXPECT_EQ(expected[i].type(), actual[i].type()); |
212 CheckPasswordForm(expected[i].form(), actual[i].form()); | 220 CheckPasswordForm(expected[i].form(), actual[i].form()); |
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
897 | 905 |
898 TEST_F(NativeBackendKWalletTest, RemoveLoginsSyncedBetween) { | 906 TEST_F(NativeBackendKWalletTest, RemoveLoginsSyncedBetween) { |
899 TestRemoveLoginsBetween(SYNCED); | 907 TestRemoveLoginsBetween(SYNCED); |
900 } | 908 } |
901 | 909 |
902 // TODO(mdm): add more basic tests here at some point. | 910 // TODO(mdm): add more basic tests here at some point. |
903 // (For example tests for storing >1 password per realm pickle.) | 911 // (For example tests for storing >1 password per realm pickle.) |
904 | 912 |
905 class NativeBackendKWalletPickleTest : public NativeBackendKWalletTestBase { | 913 class NativeBackendKWalletPickleTest : public NativeBackendKWalletTestBase { |
906 protected: | 914 protected: |
| 915 void CreateVersion3Pickle(const PasswordForm& form, Pickle* pickle); |
907 void CreateVersion2Pickle(const PasswordForm& form, Pickle* pickle); | 916 void CreateVersion2Pickle(const PasswordForm& form, Pickle* pickle); |
908 void CreateVersion1Pickle(const PasswordForm& form, Pickle* pickle); | 917 void CreateVersion1Pickle(const PasswordForm& form, Pickle* pickle); |
909 void CreateVersion0Pickle(bool size_32, | 918 void CreateVersion0Pickle(bool size_32, |
910 const PasswordForm& form, | 919 const PasswordForm& form, |
911 Pickle* pickle); | 920 Pickle* pickle); |
| 921 void CheckVersion3Pickle(); |
912 void CheckVersion2Pickle(); | 922 void CheckVersion2Pickle(); |
913 void CheckVersion1Pickle(); | 923 void CheckVersion1Pickle(); |
914 void CheckVersion0Pickle(bool size_32, PasswordForm::Scheme scheme); | 924 void CheckVersion0Pickle(bool size_32, PasswordForm::Scheme scheme); |
915 | 925 |
916 private: | 926 private: |
917 void CreatePickle(bool size_32, const PasswordForm& form, Pickle* pickle); | 927 void CreatePickle(bool size_32, const PasswordForm& form, Pickle* pickle); |
918 }; | 928 }; |
919 | 929 |
| 930 void NativeBackendKWalletPickleTest::CreateVersion3Pickle( |
| 931 const PasswordForm& form, Pickle* pickle) { |
| 932 pickle->WriteInt(3); |
| 933 CreatePickle(false, form, pickle); |
| 934 pickle->WriteInt(form.type); |
| 935 pickle->WriteInt(form.times_used); |
| 936 autofill::SerializeFormData(form.form_data, pickle); |
| 937 pickle->WriteInt64(form.date_synced.ToInternalValue()); |
| 938 } |
| 939 |
920 void NativeBackendKWalletPickleTest::CreateVersion2Pickle( | 940 void NativeBackendKWalletPickleTest::CreateVersion2Pickle( |
921 const PasswordForm& form, Pickle* pickle) { | 941 const PasswordForm& form, Pickle* pickle) { |
922 pickle->WriteInt(2); | 942 pickle->WriteInt(2); |
923 CreatePickle(false, form, pickle); | 943 CreatePickle(false, form, pickle); |
924 pickle->WriteInt(form.type); | 944 pickle->WriteInt(form.type); |
925 pickle->WriteInt(form.times_used); | 945 pickle->WriteInt(form.times_used); |
926 autofill::SerializeFormData(form.form_data, pickle); | 946 autofill::SerializeFormData(form.form_data, pickle); |
927 } | 947 } |
928 | 948 |
929 void NativeBackendKWalletPickleTest::CreateVersion1Pickle( | 949 void NativeBackendKWalletPickleTest::CreateVersion1Pickle( |
(...skipping 21 matching lines...) Expand all Loading... |
951 pickle->WriteString16(form.username_value); | 971 pickle->WriteString16(form.username_value); |
952 pickle->WriteString16(form.password_element); | 972 pickle->WriteString16(form.password_element); |
953 pickle->WriteString16(form.password_value); | 973 pickle->WriteString16(form.password_value); |
954 pickle->WriteString16(form.submit_element); | 974 pickle->WriteString16(form.submit_element); |
955 pickle->WriteBool(form.ssl_valid); | 975 pickle->WriteBool(form.ssl_valid); |
956 pickle->WriteBool(form.preferred); | 976 pickle->WriteBool(form.preferred); |
957 pickle->WriteBool(form.blacklisted_by_user); | 977 pickle->WriteBool(form.blacklisted_by_user); |
958 pickle->WriteInt64(form.date_created.ToTimeT()); | 978 pickle->WriteInt64(form.date_created.ToTimeT()); |
959 } | 979 } |
960 | 980 |
| 981 void NativeBackendKWalletPickleTest::CheckVersion3Pickle() { |
| 982 Pickle pickle; |
| 983 PasswordForm form = form_google_; |
| 984 // Remove the fields which were not present in version #3. |
| 985 form.display_name.clear(); |
| 986 form.avatar_url = GURL(); |
| 987 form.federation_url = GURL(); |
| 988 form.is_zero_click = false; |
| 989 CreateVersion3Pickle(form, &pickle); |
| 990 |
| 991 ScopedVector<PasswordForm> form_list; |
| 992 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, |
| 993 pickle, &form_list.get()); |
| 994 |
| 995 EXPECT_EQ(1u, form_list.size()); |
| 996 if (form_list.size() > 0) |
| 997 CheckPasswordForm(form, *form_list[0]); |
| 998 } |
| 999 |
961 void NativeBackendKWalletPickleTest::CheckVersion2Pickle() { | 1000 void NativeBackendKWalletPickleTest::CheckVersion2Pickle() { |
962 Pickle pickle; | 1001 Pickle pickle; |
963 PasswordForm form = form_google_; | 1002 PasswordForm form = old_form_google_; |
964 form.date_synced = base::Time(); | 1003 form.times_used = form_google_.times_used; |
| 1004 form.type = form_google_.type; |
| 1005 form.form_data = form_google_.form_data; |
965 CreateVersion2Pickle(form, &pickle); | 1006 CreateVersion2Pickle(form, &pickle); |
966 | 1007 |
967 std::vector<PasswordForm*> form_list; | 1008 ScopedVector<PasswordForm> form_list; |
968 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, | 1009 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, |
969 pickle, &form_list); | 1010 pickle, &form_list.get()); |
970 | 1011 |
971 // This will match |old_form_google_| because not all the fields present in | |
972 // |form_google_| will be deserialized. | |
973 EXPECT_EQ(1u, form_list.size()); | 1012 EXPECT_EQ(1u, form_list.size()); |
974 if (form_list.size() > 0) | 1013 if (form_list.size() > 0) |
975 CheckPasswordForm(form, *form_list[0]); | 1014 CheckPasswordForm(form, *form_list[0]); |
976 STLDeleteElements(&form_list); | |
977 } | 1015 } |
978 | 1016 |
979 // Make sure that we can still read version 1 pickles. | 1017 // Make sure that we can still read version 1 pickles. |
980 void NativeBackendKWalletPickleTest::CheckVersion1Pickle() { | 1018 void NativeBackendKWalletPickleTest::CheckVersion1Pickle() { |
981 Pickle pickle; | 1019 Pickle pickle; |
982 PasswordForm form = form_google_; | 1020 PasswordForm form = form_google_; |
983 CreateVersion1Pickle(form, &pickle); | 1021 CreateVersion1Pickle(form, &pickle); |
984 | 1022 |
985 std::vector<PasswordForm*> form_list; | 1023 std::vector<PasswordForm*> form_list; |
986 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, | 1024 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1033 CheckVersion0Pickle(false, PasswordForm::SCHEME_BASIC); | 1071 CheckVersion0Pickle(false, PasswordForm::SCHEME_BASIC); |
1034 } | 1072 } |
1035 | 1073 |
1036 TEST_F(NativeBackendKWalletPickleTest, CheckVersion1Pickle) { | 1074 TEST_F(NativeBackendKWalletPickleTest, CheckVersion1Pickle) { |
1037 CheckVersion1Pickle(); | 1075 CheckVersion1Pickle(); |
1038 } | 1076 } |
1039 | 1077 |
1040 TEST_F(NativeBackendKWalletPickleTest, CheckVersion2Pickle) { | 1078 TEST_F(NativeBackendKWalletPickleTest, CheckVersion2Pickle) { |
1041 CheckVersion2Pickle(); | 1079 CheckVersion2Pickle(); |
1042 } | 1080 } |
| 1081 |
| 1082 TEST_F(NativeBackendKWalletPickleTest, CheckVersion3Pickle) { |
| 1083 CheckVersion3Pickle(); |
| 1084 } |
OLD | NEW |