• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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 
17 package com.android.unit_tests.accounts;
18 
19 import android.test.AndroidTestCase;
20 import android.test.RenamingDelegatingContext;
21 import android.test.IsolatedContext;
22 import android.test.mock.MockContext;
23 import android.test.mock.MockContentResolver;
24 import android.content.*;
25 import android.accounts.Account;
26 import android.accounts.AccountManagerService;
27 import android.os.Bundle;
28 
29 import java.util.Arrays;
30 import java.util.Comparator;
31 
32 public class AccountManagerServiceTest extends AndroidTestCase {
33     @Override
setUp()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> {
compare(Account object1, Account object2)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;
50             int result = object1.type.compareTo(object2.type);
51             if (result != 0) return result;
52             return object1.name.compareTo(object2.name);
53         }
54     }
55 
testCheckAddAccount()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");
64         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);
70 
71         Account[] accounts = ams.getAccounts(null);
72         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 
81         accounts = ams.getAccountsByType("type1" );
82         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 
88         ams.removeAccount(null, a21);
89 
90         accounts = ams.getAccountsByType("type1" );
91         Arrays.sort(accounts, new AccountSorter());
92         assertEquals(2, accounts.length);
93         assertEquals(a11, accounts[0]);
94         assertEquals(a31, accounts[1]);
95     }
96 
testPasswords()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");
101         ams.addAccount(a11, "p11", null);
102         ams.addAccount(a12, "p12", null);
103 
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 
testUserdata()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");
125         ams.addAccount(a11, "p11", u11);
126         ams.addAccount(a12, "p12", u12);
127 
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 
testAuthtokens()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");
149         ams.addAccount(a11, "p11", null);
150         ams.addAccount(a12, "p12", null);
151 
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");
167         ams.invalidateAuthToken(a12.type, "a12_att2");
168 
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 
176         assertNull(ams.readAuthTokenFromDatabase(a12, "att2"));
177     }
178 }