blob: 7f3c53f2894d0cee2c4669957e2e6a56d7c585ed [file] [log] [blame]
Eric Jeong0120c9b2020-05-04 11:55:40 -07001/*
2 * Copyright (C) 2020 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 */
16package com.android.car.user;
17
18import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
19
20import static com.google.common.truth.Truth.assertThat;
21
22import static org.mockito.ArgumentMatchers.anyBoolean;
23import static org.mockito.ArgumentMatchers.eq;
24
25import android.car.Car;
26import android.car.ICarUserService;
27import android.car.test.mocks.AbstractExtendedMockitoTestCase;
28import android.car.test.util.UserTestingHelper;
29import android.car.user.CarUserManager;
30import android.car.user.ExperimentalCarUserManager;
31import android.content.pm.UserInfo;
32import android.os.UserHandle;
33import android.os.UserManager;
34
35import org.junit.Before;
36import org.junit.Test;
37import org.mockito.Mock;
38
39import java.util.Arrays;
40import java.util.List;
41
42public final class ExperimentalCarUserManagerUnitTest extends AbstractExtendedMockitoTestCase {
43
44 @Mock
45 private Car mCar;
46 @Mock
47 private UserManager mUserManager;
48 @Mock
49 private ICarUserService mService;
50
51 private ExperimentalCarUserManager mManager;
52
53 @Before public void setFixtures() {
54 mManager =
55 ExperimentalCarUserManager.from(new CarUserManager(mCar, mService, mUserManager));
56 }
57
58 @Test
59 public void testCreateDriver_Success_Admin() throws Exception {
60 expectCreateDriverSucceed();
61 int userId = mManager.createDriver("test driver", true);
62 assertThat(userId).isNotEqualTo(UserHandle.USER_NULL);
63 }
64
65 @Test
66 public void testCreateDriver_Success_NonAdmin() throws Exception {
67 expectCreateDriverSucceed();
68 int userId = mManager.createDriver("test driver", false);
69 assertThat(userId).isNotEqualTo(UserHandle.USER_NULL);
70 }
71
72 @Test
73 public void testCreateDriver_Error() throws Exception {
74 expectCreateDriverFail();
75 int userId = mManager.createDriver("test driver", false);
76 assertThat(userId).isEqualTo(UserHandle.USER_NULL);
77 }
78
79 @Test
80 public void testCreatePassenger_Success() throws Exception {
81 expectCreatePassengerSucceed();
82 int userId = mManager.createPassenger("test passenger", 10);
83 assertThat(userId).isNotEqualTo(UserHandle.USER_NULL);
84 }
85
86 @Test
87 public void testCreatePassenger_Error() throws Exception {
88 expectCreatePassengerFail();
89 int userId = mManager.createPassenger("test passenger", 20);
90 assertThat(userId).isEqualTo(UserHandle.USER_NULL);
91 }
92
93 @Test
94 public void testSwitchDriver_Success() throws Exception {
95 expectSwitchDriverSucceed();
96 boolean success = mManager.switchDriver(10);
97 assertThat(success).isTrue();
98 }
99
100 @Test
101 public void testSwitchDriver_Error() throws Exception {
102 expectSwitchDriverFail();
103 boolean success = mManager.switchDriver(20);
104 assertThat(success).isFalse();
105 }
106
107 @Test
108 public void testGetAllDrivers() throws Exception {
109 List<UserInfo> userInfos = UserTestingHelper.newUsers(10, 20, 30);
110 doReturn(userInfos).when(mService).getAllDrivers();
111 List<Integer> drivers = mManager.getAllDrivers();
112 assertThat(drivers.equals(Arrays.asList(10, 20, 30))).isTrue();
113 }
114
115 @Test
116 public void testGetAllPassengers() throws Exception {
117 List<UserInfo> userInfos = UserTestingHelper.newUsers(100, 101, 102);
118 doReturn(userInfos).when(mService).getPassengers(10);
119 doReturn(Arrays.asList()).when(mService).getPassengers(20);
120
121 List<Integer> passengers = mManager.getPassengers(10);
122 assertThat(passengers.equals(Arrays.asList(100, 101, 102))).isTrue();
123
124 passengers = mManager.getPassengers(20);
125 assertThat(passengers.size()).isEqualTo(0);
126 }
127
128 @Test
129 public void testStartPassenger_Success() throws Exception {
130 expectStartPassengerSucceed();
131 boolean success = mManager.startPassenger(100, /* zoneId = */ 1);
132 assertThat(success).isTrue();
133 }
134
135 @Test
136 public void testStartPassenger_Error() throws Exception {
137 expectStartPassengerFail();
138 boolean success = mManager.startPassenger(200, /* zoneId = */ 1);
139 assertThat(success).isFalse();
140 }
141
142 @Test
143 public void testStopPassenger_Success() throws Exception {
144 expectStopPassengerSucceed();
145 boolean success = mManager.stopPassenger(100);
146 assertThat(success).isTrue();
147 }
148
149 @Test
150 public void testStopPassenger_Error() throws Exception {
151 expectStopPassengerFail();
152 boolean success = mManager.stopPassenger(200);
153 assertThat(success).isFalse();
154 }
155
156 private void expectCreateDriverSucceed() throws Exception {
157 UserInfo userInfo = UserTestingHelper.newUser(10);
158 doReturn(userInfo).when(mService).createDriver(eq("test driver"), anyBoolean());
159 }
160
161 private void expectCreateDriverFail() throws Exception {
162 doReturn(null).when(mService).createDriver(eq("test driver"), anyBoolean());
163 }
164
165 private void expectCreatePassengerSucceed() throws Exception {
166 UserInfo userInfo = UserTestingHelper.newUser(100);
167 doReturn(userInfo).when(mService).createPassenger("test passenger", 10);
168 }
169
170 private void expectCreatePassengerFail() throws Exception {
171 doReturn(null).when(mService).createPassenger("test passenger", 10);
172 }
173
174 private void expectSwitchDriverSucceed() throws Exception {
175 doReturn(true).when(mService).switchDriver(10);
176 }
177
178 private void expectSwitchDriverFail() throws Exception {
179 doReturn(false).when(mService).switchDriver(20);
180 }
181
182 private void expectStartPassengerSucceed() throws Exception {
183 doReturn(true).when(mService).startPassenger(100, 1);
184 }
185
186 private void expectStartPassengerFail() throws Exception {
187 doReturn(false).when(mService).startPassenger(200, 1);
188 }
189
190 private void expectStopPassengerSucceed() throws Exception {
191 doReturn(true).when(mService).stopPassenger(100);
192 }
193
194 private void expectStopPassengerFail() throws Exception {
195 doReturn(false).when(mService).stopPassenger(200);
196 }
197}