blob: 0cc4398c9b7ec689b5748ddbd5d483d572390289 [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.bedstead.nene.users;
import static com.google.common.truth.Truth.assertThat;
import static org.testng.Assert.assertThrows;
import com.android.bedstead.nene.TestApis;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class UserTest {
private static final int NON_EXISTING_USER_ID = 10000;
private static final int USER_ID = NON_EXISTING_USER_ID;
private static final int SERIAL_NO = 1000;
private static final UserType USER_TYPE = new UserType(new UserType.MutableUserType());
private static final String USER_NAME = "userName";
private final TestApis mTestApis = new TestApis();
@Test
public void id_returnsId() {
User.MutableUser mutableUser = createValidMutableUser();
mutableUser.mId = USER_ID;
User user = new User(mTestApis, mutableUser);
assertThat(user.id()).isEqualTo(USER_ID);
}
@Test
public void construct_idNotSet_throwsNullPointerException() {
User.MutableUser mutableUser = createValidMutableUser();
mutableUser.mId = null;
assertThrows(NullPointerException.class, () -> new User(mTestApis, mutableUser));
}
@Test
public void serialNo_returnsSerialNo() {
User.MutableUser mutableUser = createValidMutableUser();
mutableUser.mSerialNo = SERIAL_NO;
User user = new User(mTestApis, mutableUser);
assertThat(user.serialNo()).isEqualTo(SERIAL_NO);
}
@Test
public void serialNo_notSet_returnsNull() {
User.MutableUser mutableUser = createValidMutableUser();
User user = new User(mTestApis, mutableUser);
assertThat(user.serialNo()).isNull();
}
@Test
public void name_returnsName() {
User.MutableUser mutableUser = createValidMutableUser();
mutableUser.mName = USER_NAME;
User user = new User(mTestApis, mutableUser);
assertThat(user.name()).isEqualTo(USER_NAME);
}
@Test
public void name_notSet_returnsNull() {
User.MutableUser mutableUser = createValidMutableUser();
User user = new User(mTestApis, mutableUser);
assertThat(user.name()).isNull();
}
@Test
public void type_returnsName() {
User.MutableUser mutableUser = createValidMutableUser();
mutableUser.mType = USER_TYPE;
User user = new User(mTestApis, mutableUser);
assertThat(user.type()).isEqualTo(USER_TYPE);
}
@Test
public void type_notSet_returnsNull() {
User.MutableUser mutableUser = createValidMutableUser();
User user = new User(mTestApis, mutableUser);
assertThat(user.type()).isNull();
}
@Test
public void hasProfileOwner_returnsHasProfileOwner() {
User.MutableUser mutableUser = createValidMutableUser();
mutableUser.mHasProfileOwner = true;
User user = new User(mTestApis, mutableUser);
assertThat(user.hasProfileOwner()).isTrue();
}
@Test
public void hasProfileOwner_notSet_returnsNull() {
User.MutableUser mutableUser = createValidMutableUser();
User user = new User(mTestApis, mutableUser);
assertThat(user.hasProfileOwner()).isNull();
}
@Test
public void isPrimary_returnsIsPrimary() {
User.MutableUser mutableUser = createValidMutableUser();
mutableUser.mIsPrimary = true;
User user = new User(mTestApis, mutableUser);
assertThat(user.isPrimary()).isTrue();
}
@Test
public void isPrimary_notSet_returnsNull() {
User.MutableUser mutableUser = createValidMutableUser();
User user = new User(mTestApis, mutableUser);
assertThat(user.isPrimary()).isNull();
}
@Test
public void state_userNotStarted_returnsState() {
UserReference user = mTestApis.users().createUser().create();
user.stop();
try {
assertThat(user.resolve().state()).isEqualTo(User.UserState.NOT_RUNNING);
} finally {
user.remove();
}
}
@Test
@Ignore("TODO: Ensure we can enter the user locked state")
public void state_userLocked_returnsState() {
UserReference user = mTestApis.users().createUser().createAndStart();
try {
assertThat(user.resolve().state()).isEqualTo(User.UserState.RUNNING_LOCKED);
} finally {
user.remove();
}
}
@Test
public void state_userUnlocked_returnsState() {
UserReference user = mTestApis.users().createUser().createAndStart();
try {
assertThat(user.resolve().state()).isEqualTo(User.UserState.RUNNING_UNLOCKED);
} finally {
user.remove();
}
}
@Test
public void parent_returnsParent() {
UserReference parentUser = new User(mTestApis, createValidMutableUser());
User.MutableUser mutableUser = createValidMutableUser();
mutableUser.mParent = parentUser;
User user = new User(mTestApis, mutableUser);
assertThat(user.parent()).isEqualTo(parentUser);
}
@Test
public void autoclose_removesUser() {
int numUsers = mTestApis.users().all().size();
try (UserReference user = mTestApis.users().createUser().create()) {
// We intentionally don't do anything here, just rely on the auto-close behaviour
}
assertThat(mTestApis.users().all()).hasSize(numUsers);
}
private User.MutableUser createValidMutableUser() {
User.MutableUser mutableUser = new User.MutableUser();
mutableUser.mId = 1;
return mutableUser;
}
}