package org.robolectric.shadows;
import android.content.Context;
import android.os.*;
import android.os.Process;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.TestRunners;
import org.robolectric.annotation.Config;
import java.util.List;
import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR2;
import static android.os.Build.VERSION_CODES.LOLLIPOP;
import static android.os.Build.VERSION_CODES.N;
import static org.assertj.core.api.Assertions.assertThat;
import static org.robolectric.Shadows.shadowOf;
@RunWith(TestRunners.MultiApiSelfTest.class)
public class ShadowUserManagerTest {
private UserManager userManager;
@Before
public void setUp() {
userManager = (UserManager) RuntimeEnvironment.application.getSystemService(Context.USER_SERVICE);
}
@Test
@Config(minSdk = LOLLIPOP)
public void shouldGetUserProfiles() {
List<UserHandle> userProfiles = userManager.getUserProfiles();
assertThat(userProfiles).isNotNull();
}
@Test
@Config(minSdk = JELLY_BEAN_MR2)
public void shouldGetApplicationRestrictions() {
Bundle userProfiles = userManager.getApplicationRestrictions("somepackage");
// Should not NPE
}
@Test
@Config(minSdk = N)
public void isUserUnlocked() {
assertThat(userManager.isUserUnlocked()).isTrue();
shadowOf(userManager).setUserUnlocked(false);
assertThat(userManager.isUserUnlocked()).isFalse();
}
@Test
@Config(minSdk = LOLLIPOP)
public void hasUserRestriction() {
assertThat(userManager.hasUserRestriction(UserManager.ENSURE_VERIFY_APPS)).isFalse();
shadowOf(userManager).setUserRestriction(Process.myUserHandle(), UserManager.ENSURE_VERIFY_APPS, true);
assertThat(userManager.hasUserRestriction(UserManager.ENSURE_VERIFY_APPS)).isTrue();
}
@Test
@Config(minSdk = JELLY_BEAN_MR2)
public void getUserRestrictions() {
assertThat(userManager.getUserRestrictions().size()).isEqualTo(0);
shadowOf(userManager).setUserRestriction(Process.myUserHandle(), UserManager.ENSURE_VERIFY_APPS, true);
assertThat(userManager.getUserRestrictions().size()).isEqualTo(1);
assertThat(userManager.getUserRestrictions().getBoolean(UserManager.ENSURE_VERIFY_APPS)).isTrue();
shadowOf(userManager).setUserRestriction(newUserHandle(10), UserManager.DISALLOW_CAMERA, true);
assertThat(userManager.hasUserRestriction(UserManager.DISALLOW_CAMERA)).isFalse();
}
// Create user handle from parcel since UserHandle.of() was only added in later APIs.
private static UserHandle newUserHandle(int uid) {
Parcel userParcel = Parcel.obtain();
userParcel.writeInt(uid);
userParcel.setDataPosition(0);
return new UserHandle(userParcel);
}
}