blob: a550b27a62a2dabbf06273261743966b1752f843 [file] [log] [blame]
atrostc3c2e4d2019-11-29 11:27:27 +00001/*
2 * Copyright (C) 2019 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
17package com.android.server.pm;
18
19import static org.hamcrest.MatcherAssert.assertThat;
20import static org.hamcrest.core.Is.is;
Winson655a5b92019-10-23 10:49:32 -070021import static org.mockito.ArgumentMatchers.argThat;
22import static org.mockito.ArgumentMatchers.eq;
atrostc3c2e4d2019-11-29 11:27:27 +000023import static org.mockito.Mockito.when;
24
Winson655a5b92019-10-23 10:49:32 -070025import android.os.Build;
atrostc3c2e4d2019-11-29 11:27:27 +000026import android.platform.test.annotations.Presubmit;
27
28import com.android.server.compat.PlatformCompat;
Winson33eacc62020-01-24 12:02:58 -080029import com.android.server.pm.parsing.pkg.AndroidPackage;
30import com.android.server.pm.parsing.pkg.PackageImpl;
31import com.android.server.pm.parsing.pkg.ParsedPackage;
atrostc3c2e4d2019-11-29 11:27:27 +000032
atrostc3c2e4d2019-11-29 11:27:27 +000033import org.junit.Test;
34import org.junit.runner.RunWith;
35import org.mockito.Mock;
36import org.mockito.junit.MockitoJUnitRunner;
37
38
39/**
40 * {@link SELinuxMMAC} tests.
41 */
42@RunWith(MockitoJUnitRunner.class)
43@Presubmit
44public class SELinuxMMACTest {
45
46 private static final String PACKAGE_NAME = "my.package";
Winson655a5b92019-10-23 10:49:32 -070047 private static final int OPT_IN_VERSION = Build.VERSION_CODES.R;
atrostc3c2e4d2019-11-29 11:27:27 +000048
49 @Mock
50 PlatformCompat mMockCompatibility;
51
atrostc3c2e4d2019-11-29 11:27:27 +000052 @Test
53 public void getSeInfoOptInToLatest() {
Winson655a5b92019-10-23 10:49:32 -070054 AndroidPackage pkg = makePackage(Build.VERSION_CODES.P);
Alex Buynytskyy6e3c5632020-06-08 15:12:25 -070055 when(mMockCompatibility.isChangeEnabledInternal(eq(SELinuxMMAC.SELINUX_LATEST_CHANGES),
Winson655a5b92019-10-23 10:49:32 -070056 argThat(argument -> argument.packageName.equals(pkg.getPackageName()))))
57 .thenReturn(true);
58 assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
atrostc3c2e4d2019-11-29 11:27:27 +000059 is("default:targetSdkVersion=" + OPT_IN_VERSION));
60 }
61
62 @Test
63 public void getSeInfoNoOptIn() {
Winson655a5b92019-10-23 10:49:32 -070064 AndroidPackage pkg = makePackage(Build.VERSION_CODES.P);
Alex Buynytskyy6e3c5632020-06-08 15:12:25 -070065 when(mMockCompatibility.isChangeEnabledInternal(eq(SELinuxMMAC.SELINUX_LATEST_CHANGES),
Winson655a5b92019-10-23 10:49:32 -070066 argThat(argument -> argument.packageName.equals(pkg.getPackageName()))))
67 .thenReturn(false);
68 assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
atrostc3c2e4d2019-11-29 11:27:27 +000069 is("default:targetSdkVersion=28"));
70 }
71
72 @Test
73 public void getSeInfoNoOptInButAlreadyR() {
Winson655a5b92019-10-23 10:49:32 -070074 AndroidPackage pkg = makePackage(OPT_IN_VERSION);
Alex Buynytskyy6e3c5632020-06-08 15:12:25 -070075 when(mMockCompatibility.isChangeEnabledInternal(eq(SELinuxMMAC.SELINUX_LATEST_CHANGES),
Winson655a5b92019-10-23 10:49:32 -070076 argThat(argument -> argument.packageName.equals(pkg.getPackageName()))))
77 .thenReturn(false);
78 assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
atrostc3c2e4d2019-11-29 11:27:27 +000079 is("default:targetSdkVersion=" + OPT_IN_VERSION));
80 }
Winson655a5b92019-10-23 10:49:32 -070081
82 private AndroidPackage makePackage(int targetSdkVersion) {
Winson33eacc62020-01-24 12:02:58 -080083 return ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME)
Winson655a5b92019-10-23 10:49:32 -070084 .setTargetSdkVersion(targetSdkVersion)
Winson33eacc62020-01-24 12:02:58 -080085 .hideAsParsed())
Winson655a5b92019-10-23 10:49:32 -070086 .hideAsFinal();
87 }
atrostc3c2e4d2019-11-29 11:27:27 +000088}