blob: bc2815099fdb8e5c833b8130d200c64e9470f914 [file] [log] [blame]
Jason Monkddb8a962018-01-30 13:27:33 -05001/*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5 * except in compliance with the License. You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the
10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11 * KIND, either express or implied. See the License for the specific language governing
12 * permissions and limitations under the License.
13 */
14
15package com.android.server.slice;
16
17import static org.junit.Assert.assertEquals;
18import static org.junit.Assert.assertFalse;
19import static org.junit.Assert.assertTrue;
20
Jason Monkb715b042018-02-01 15:00:05 -050021import android.os.UserHandle;
Jason Monkddb8a962018-01-30 13:27:33 -050022import android.support.test.filters.SmallTest;
23import android.util.Xml.Encoding;
24
25import com.android.server.UiServiceTestCase;
26
27import org.junit.Before;
28import org.junit.Test;
29import org.xmlpull.v1.XmlPullParser;
30import org.xmlpull.v1.XmlPullParserException;
31import org.xmlpull.v1.XmlPullParserFactory;
32import org.xmlpull.v1.XmlSerializer;
33
34import java.io.ByteArrayInputStream;
35import java.io.ByteArrayOutputStream;
36import java.io.IOException;
37
38@SmallTest
39public class SliceFullAccessListTest extends UiServiceTestCase {
40
41 private static final String TEST_XML = "<slice-access-list version=\"1\"><user "
42 + "user=\"0\"><pkg>pkg</pkg><pkg>pkg1</pkg></user><user "
43 + "user=\"1\"><pkg>pkg</pkg></user><user "
44 + "user=\"3\"><pkg>pkg2</pkg></user></slice-access-list>";
45
46 private SliceFullAccessList mAccessList;
47
48 @Before
49 public void setup() {
50 mAccessList = new SliceFullAccessList(mContext);
51 }
52
53 @Test
54 public void testNoDefaultAccess() {
55 assertFalse(mAccessList.hasFullAccess("pkg", 0));
56 }
57
58 @Test
59 public void testGrantAccess() {
60 mAccessList.grantFullAccess("pkg", 0);
61 assertTrue(mAccessList.hasFullAccess("pkg", 0));
62 }
63
64 @Test
65 public void testUserSeparation() {
66 mAccessList.grantFullAccess("pkg", 1);
67 assertFalse(mAccessList.hasFullAccess("pkg", 0));
68 }
69
70 @Test
Jason Monk68ff6aa2018-01-31 15:51:52 -050071 public void testRemoveAccess() {
72 mAccessList.grantFullAccess("pkg", 0);
73 assertTrue(mAccessList.hasFullAccess("pkg", 0));
74
75 mAccessList.removeGrant("pkg", 0);
76 assertFalse(mAccessList.hasFullAccess("pkg", 0));
77 }
78
79 @Test
Jason Monkddb8a962018-01-30 13:27:33 -050080 public void testSerialization() throws XmlPullParserException, IOException {
81 mAccessList.grantFullAccess("pkg", 0);
82 mAccessList.grantFullAccess("pkg1", 0);
83 mAccessList.grantFullAccess("pkg", 1);
84 mAccessList.grantFullAccess("pkg2", 3);
85
86 ByteArrayOutputStream output = new ByteArrayOutputStream();
87 XmlSerializer out = XmlPullParserFactory.newInstance().newSerializer();
88 out.setOutput(output, Encoding.UTF_8.name());
Jason Monkb715b042018-02-01 15:00:05 -050089 mAccessList.writeXml(out, UserHandle.USER_ALL);
Jason Monkddb8a962018-01-30 13:27:33 -050090 out.flush();
91
92 assertEquals(TEST_XML, output.toString(Encoding.UTF_8.name()));
93 }
94
95 @Test
96 public void testDeSerialization() throws XmlPullParserException, IOException {
97 ByteArrayInputStream input = new ByteArrayInputStream(TEST_XML.getBytes());
98 XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
99 parser.setInput(input, Encoding.UTF_8.name());
100
101 mAccessList.readXml(parser);
102
103 assertTrue(mAccessList.hasFullAccess("pkg", 0));
104 assertTrue(mAccessList.hasFullAccess("pkg1", 0));
105 assertTrue(mAccessList.hasFullAccess("pkg", 1));
106 assertTrue(mAccessList.hasFullAccess("pkg2", 3));
107
108 assertFalse(mAccessList.hasFullAccess("pkg3", 0));
109 assertFalse(mAccessList.hasFullAccess("pkg1", 1));
110 assertFalse(mAccessList.hasFullAccess("pkg", 3));
111 assertFalse(mAccessList.hasFullAccess("pkg", 2));
112 }
113}