blob: 394b9f2a5041a74c311a076ace45128a947a3784 [file] [log] [blame]
Fred Quintana60307342009-03-24 22:48:12 -07001/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Neal Nguyen1a44d5d2010-01-13 10:42:43 -080017package android.accounts;
Fred Quintana60307342009-03-24 22:48:12 -070018
19import android.test.AndroidTestCase;
20import android.test.RenamingDelegatingContext;
21import android.test.IsolatedContext;
22import android.test.mock.MockContext;
23import android.test.mock.MockContentResolver;
24import android.content.*;
25import android.accounts.Account;
26import android.accounts.AccountManagerService;
27import android.os.Bundle;
28
29import java.util.Arrays;
30import java.util.Comparator;
Fred Quintana60307342009-03-24 22:48:12 -070031
32public class AccountManagerServiceTest extends AndroidTestCase {
33 @Override
34 protected void setUp() throws Exception {
35 final String filenamePrefix = "test.";
36 MockContentResolver resolver = new MockContentResolver();
37 RenamingDelegatingContext targetContextWrapper = new RenamingDelegatingContext(
38 new MockContext(), // The context that most methods are delegated to
39 getContext(), // The context that file methods are delegated to
40 filenamePrefix);
41 Context context = new IsolatedContext(resolver, targetContextWrapper);
42 setContext(context);
43 }
44
45 public class AccountSorter implements Comparator<Account> {
46 public int compare(Account object1, Account object2) {
47 if (object1 == object2) return 0;
48 if (object1 == null) return 1;
49 if (object2 == null) return -1;
Fred Quintana3710f392009-08-13 14:55:02 -070050 int result = object1.type.compareTo(object2.type);
Fred Quintana60307342009-03-24 22:48:12 -070051 if (result != 0) return result;
Fred Quintana3710f392009-08-13 14:55:02 -070052 return object1.name.compareTo(object2.name);
Fred Quintana60307342009-03-24 22:48:12 -070053 }
54 }
55
56 public void testCheckAddAccount() throws Exception {
57 AccountManagerService ams = new AccountManagerService(getContext());
58 Account a11 = new Account("account1", "type1");
59 Account a21 = new Account("account2", "type1");
60 Account a31 = new Account("account3", "type1");
61 Account a12 = new Account("account1", "type2");
62 Account a22 = new Account("account2", "type2");
63 Account a32 = new Account("account3", "type2");
Fred Quintana3710f392009-08-13 14:55:02 -070064 ams.addAccount(a11, "p11", null);
65 ams.addAccount(a12, "p12", null);
66 ams.addAccount(a21, "p21", null);
67 ams.addAccount(a22, "p22", null);
68 ams.addAccount(a31, "p31", null);
69 ams.addAccount(a32, "p32", null);
Fred Quintana60307342009-03-24 22:48:12 -070070
Fred Quintana3710f392009-08-13 14:55:02 -070071 Account[] accounts = ams.getAccounts(null);
Fred Quintana60307342009-03-24 22:48:12 -070072 Arrays.sort(accounts, new AccountSorter());
73 assertEquals(6, accounts.length);
74 assertEquals(a11, accounts[0]);
75 assertEquals(a21, accounts[1]);
76 assertEquals(a31, accounts[2]);
77 assertEquals(a12, accounts[3]);
78 assertEquals(a22, accounts[4]);
79 assertEquals(a32, accounts[5]);
80
Fred Quintana33269202009-04-20 16:05:10 -070081 accounts = ams.getAccountsByType("type1" );
Fred Quintana60307342009-03-24 22:48:12 -070082 Arrays.sort(accounts, new AccountSorter());
83 assertEquals(3, accounts.length);
84 assertEquals(a11, accounts[0]);
85 assertEquals(a21, accounts[1]);
86 assertEquals(a31, accounts[2]);
87
Fred Quintana3710f392009-08-13 14:55:02 -070088 ams.removeAccount(null, a21);
Fred Quintana60307342009-03-24 22:48:12 -070089
Fred Quintana33269202009-04-20 16:05:10 -070090 accounts = ams.getAccountsByType("type1" );
Fred Quintana60307342009-03-24 22:48:12 -070091 Arrays.sort(accounts, new AccountSorter());
92 assertEquals(2, accounts.length);
93 assertEquals(a11, accounts[0]);
94 assertEquals(a31, accounts[1]);
95 }
96
97 public void testPasswords() throws Exception {
98 AccountManagerService ams = new AccountManagerService(getContext());
99 Account a11 = new Account("account1", "type1");
100 Account a12 = new Account("account1", "type2");
Fred Quintana3710f392009-08-13 14:55:02 -0700101 ams.addAccount(a11, "p11", null);
102 ams.addAccount(a12, "p12", null);
Fred Quintana60307342009-03-24 22:48:12 -0700103
104 assertEquals("p11", ams.getPassword(a11));
105 assertEquals("p12", ams.getPassword(a12));
106
107 ams.setPassword(a11, "p11b");
108
109 assertEquals("p11b", ams.getPassword(a11));
110 assertEquals("p12", ams.getPassword(a12));
111 }
112
113 public void testUserdata() throws Exception {
114 AccountManagerService ams = new AccountManagerService(getContext());
115 Account a11 = new Account("account1", "type1");
116 Bundle u11 = new Bundle();
117 u11.putString("a", "a_a11");
118 u11.putString("b", "b_a11");
119 u11.putString("c", "c_a11");
120 Account a12 = new Account("account1", "type2");
121 Bundle u12 = new Bundle();
122 u12.putString("a", "a_a12");
123 u12.putString("b", "b_a12");
124 u12.putString("c", "c_a12");
Fred Quintana3710f392009-08-13 14:55:02 -0700125 ams.addAccount(a11, "p11", u11);
126 ams.addAccount(a12, "p12", u12);
Fred Quintana60307342009-03-24 22:48:12 -0700127
128 assertEquals("a_a11", ams.getUserData(a11, "a"));
129 assertEquals("b_a11", ams.getUserData(a11, "b"));
130 assertEquals("c_a11", ams.getUserData(a11, "c"));
131 assertEquals("a_a12", ams.getUserData(a12, "a"));
132 assertEquals("b_a12", ams.getUserData(a12, "b"));
133 assertEquals("c_a12", ams.getUserData(a12, "c"));
134
135 ams.setUserData(a11, "b", "b_a11b");
136
137 assertEquals("a_a11", ams.getUserData(a11, "a"));
138 assertEquals("b_a11b", ams.getUserData(a11, "b"));
139 assertEquals("c_a11", ams.getUserData(a11, "c"));
140 assertEquals("a_a12", ams.getUserData(a12, "a"));
141 assertEquals("b_a12", ams.getUserData(a12, "b"));
142 assertEquals("c_a12", ams.getUserData(a12, "c"));
143 }
144
145 public void testAuthtokens() throws Exception {
146 AccountManagerService ams = new AccountManagerService(getContext());
147 Account a11 = new Account("account1", "type1");
148 Account a12 = new Account("account1", "type2");
Fred Quintana3710f392009-08-13 14:55:02 -0700149 ams.addAccount(a11, "p11", null);
150 ams.addAccount(a12, "p12", null);
Fred Quintana60307342009-03-24 22:48:12 -0700151
152 ams.setAuthToken(a11, "att1", "a11_att1");
153 ams.setAuthToken(a11, "att2", "a11_att2");
154 ams.setAuthToken(a11, "att3", "a11_att3");
155 ams.setAuthToken(a12, "att1", "a12_att1");
156 ams.setAuthToken(a12, "att2", "a12_att2");
157 ams.setAuthToken(a12, "att3", "a12_att3");
158
159 assertEquals("a11_att1", ams.peekAuthToken(a11, "att1"));
160 assertEquals("a11_att2", ams.peekAuthToken(a11, "att2"));
161 assertEquals("a11_att3", ams.peekAuthToken(a11, "att3"));
162 assertEquals("a12_att1", ams.peekAuthToken(a12, "att1"));
163 assertEquals("a12_att2", ams.peekAuthToken(a12, "att2"));
164 assertEquals("a12_att3", ams.peekAuthToken(a12, "att3"));
165
166 ams.setAuthToken(a11, "att3", "a11_att3b");
Fred Quintana3710f392009-08-13 14:55:02 -0700167 ams.invalidateAuthToken(a12.type, "a12_att2");
Fred Quintana60307342009-03-24 22:48:12 -0700168
169 assertEquals("a11_att1", ams.peekAuthToken(a11, "att1"));
170 assertEquals("a11_att2", ams.peekAuthToken(a11, "att2"));
171 assertEquals("a11_att3b", ams.peekAuthToken(a11, "att3"));
172 assertEquals("a12_att1", ams.peekAuthToken(a12, "att1"));
173 assertNull(ams.peekAuthToken(a12, "att2"));
174 assertEquals("a12_att3", ams.peekAuthToken(a12, "att3"));
175
Fred Quintana60307342009-03-24 22:48:12 -0700176 assertNull(ams.readAuthTokenFromDatabase(a12, "att2"));
177 }
Neal Nguyen1a44d5d2010-01-13 10:42:43 -0800178}