blob: e0b044e2272981a4ad2cf5fb0d92aa5bf2b35cfd [file] [log] [blame]
Chanhee Lee94010482017-01-23 23:06:18 -08001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2017-present Open Networking Foundation
Chanhee Lee94010482017-01-23 23:06:18 -08003 *
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 org.onosproject.security.impl;
18
19import static org.junit.Assert.assertEquals;
20import static org.junit.Assert.assertNotNull;
21import static org.junit.Assert.assertTrue;
22
23import java.security.Permission;
24import java.util.HashSet;
25import java.util.List;
26import java.util.Set;
27
28import org.junit.Before;
29import org.junit.Test;
30import org.onosproject.app.ApplicationAdminService;
31import org.onosproject.security.AppPermission;
32import org.onosproject.security.SecurityAdminService;
33import org.osgi.framework.AdaptPermission;
34import org.osgi.framework.AdminPermission;
35import org.osgi.framework.PackagePermission;
36import org.osgi.framework.ServicePermission;
37import org.osgi.service.cm.ConfigurationPermission;
38
39import com.google.common.collect.Lists;
40
41/**
42 * Unit Test on DefaultPolicyBuilder.
43 */
44public class DefaultPolicyBuilderTest {
45
46 private List<Permission> defaultPermissions;
47 private List<Permission> adminServicePermissions;
48
49 private org.onosproject.security.Permission testPermission;
50 private Set<org.onosproject.security.Permission> testPermissions;
51
52 private Permission testJavaPerm;
53 private Set<Permission> testJavaPerms;
54
55 @Before
56 public void setUp() throws Exception {
57 List<Permission> permSet = Lists.newArrayList();
58 permSet.add(new PackagePermission("*", PackagePermission.EXPORTONLY));
59 permSet.add(new PackagePermission("*", PackagePermission.IMPORT));
60 permSet.add(new AdaptPermission("*", AdaptPermission.ADAPT));
61 permSet.add(new ConfigurationPermission("*", ConfigurationPermission.CONFIGURE));
62 permSet.add(new AdminPermission("*", AdminPermission.METADATA));
63 defaultPermissions = permSet;
64
65 List<Permission> adminPermSet = Lists.newArrayList();
66 adminPermSet.add(new ServicePermission(ApplicationAdminService.class.getName(), ServicePermission.GET));
67 adminServicePermissions = adminPermSet;
68
69 testPermission = new org.onosproject.security.Permission("testClass", "APP_READ", "testActions");
70 testPermissions = new HashSet<org.onosproject.security.Permission>();
71 testPermissions.add(testPermission);
72
73 testJavaPerm = new AppPermission("testName");
74 testJavaPerms = new HashSet<Permission>();
75 testJavaPerms.add(testJavaPerm);
76 }
77
78 @Test
79 public void testGetUserApplicationPermissions() {
80 List<Permission> perms = Lists.newArrayList();
81 perms.addAll(defaultPermissions);
82 assertEquals(5, defaultPermissions.size());
83 perms.addAll(testJavaPerms);
84 assertEquals(1, testJavaPerms.size());
85 assertEquals(6, perms.size());
86 assertTrue(perms.contains(testJavaPerm));
87 }
88
89 @Test
90 public void testGetAdminApplicationPermissions() {
91 List<Permission> perms = Lists.newArrayList();
92 perms.addAll(defaultPermissions);
93 perms.addAll(adminServicePermissions);
94 perms.addAll(testJavaPerms);
95 assertEquals(7, perms.size());
96 assertTrue(perms.contains(testJavaPerm));
97 }
98
99 @Test
100 public void testConvertToJavaPermissions() {
101 List<Permission> result = Lists.newArrayList();
102 for (org.onosproject.security.Permission perm : testPermissions) {
103 Permission javaPerm = new AppPermission(perm.getName());
104 if (javaPerm != null) {
105 if (javaPerm instanceof AppPermission) {
106 if (((AppPermission) javaPerm).getType() != null) {
107 AppPermission ap = (AppPermission) javaPerm;
108 result.add(ap);
109 }
110 } else if (javaPerm instanceof ServicePermission) {
111 if (!javaPerm.getName().contains(SecurityAdminService.class.getName())) {
112 result.add(javaPerm);
113 }
114 } else {
115 result.add(javaPerm);
116 }
117
118 }
119 }
120 assertTrue(!result.isEmpty());
121 assertEquals("APP_READ", result.get(0).getName());
122 }
123
124 @Test
125 public void testConvertToOnosPermissions() {
126 Permission testJavaPerm = new AppPermission("testName");
127
128 List<org.onosproject.security.Permission> result = Lists.newArrayList();
129 org.onosproject.security.Permission onosPerm =
130 new org.onosproject.security.Permission(AppPermission.class.getName(), testJavaPerm.getName(), "");
131 result.add(onosPerm);
132
133 assertTrue(!result.isEmpty());
134 assertEquals("TESTNAME", result.get(0).getName());
135 }
136
137 @Test
138 public void testGetDefaultPerms() {
139 List<Permission> permSet = Lists.newArrayList();
140 assertTrue(permSet.isEmpty());
141 permSet.add(new PackagePermission("*", PackagePermission.EXPORTONLY));
142 permSet.add(new PackagePermission("*", PackagePermission.IMPORT));
143 permSet.add(new AdaptPermission("*", AdaptPermission.ADAPT));
144 permSet.add(new ConfigurationPermission("*", ConfigurationPermission.CONFIGURE));
145 permSet.add(new AdminPermission("*", AdminPermission.METADATA));
146 assertEquals(5, permSet.size());
147 }
148
149 @Test
150 public void testGetNBServiceList() {
151 Set<String> permString = new HashSet<>();
152 permString.add(new ServicePermission(ApplicationAdminService.class.getName(), ServicePermission.GET).getName());
153 assertEquals(1, permString.size());
154 assertEquals("org.onosproject.app.ApplicationAdminService", permString.toArray()[0]);
155 }
156
157 @Test
158 public void testGetOnosPermission() {
159 org.onosproject.security.Permission result = null;
160 if (testJavaPerm instanceof AppPermission) {
161 result = new org.onosproject.security.Permission(AppPermission.class.getName(), testJavaPerm.getName(), "");
162 }
163 assertNotNull(result);
164 assertEquals("TESTNAME", result.getName());
165 }
166
167}