blob: 9b09986f07c48b33b8971e07a0c494ba2605dd22 [file] [log] [blame]
/*
* Copyright 2017-present Open Networking Laboratory
*
* 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 org.onosproject.security.impl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.security.Permission;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.onosproject.app.ApplicationAdminService;
import org.onosproject.security.AppPermission;
import org.onosproject.security.SecurityAdminService;
import org.osgi.framework.AdaptPermission;
import org.osgi.framework.AdminPermission;
import org.osgi.framework.PackagePermission;
import org.osgi.framework.ServicePermission;
import org.osgi.service.cm.ConfigurationPermission;
import com.google.common.collect.Lists;
/**
* Unit Test on DefaultPolicyBuilder.
*/
public class DefaultPolicyBuilderTest {
private List<Permission> defaultPermissions;
private List<Permission> adminServicePermissions;
private org.onosproject.security.Permission testPermission;
private Set<org.onosproject.security.Permission> testPermissions;
private Permission testJavaPerm;
private Set<Permission> testJavaPerms;
@Before
public void setUp() throws Exception {
List<Permission> permSet = Lists.newArrayList();
permSet.add(new PackagePermission("*", PackagePermission.EXPORTONLY));
permSet.add(new PackagePermission("*", PackagePermission.IMPORT));
permSet.add(new AdaptPermission("*", AdaptPermission.ADAPT));
permSet.add(new ConfigurationPermission("*", ConfigurationPermission.CONFIGURE));
permSet.add(new AdminPermission("*", AdminPermission.METADATA));
defaultPermissions = permSet;
List<Permission> adminPermSet = Lists.newArrayList();
adminPermSet.add(new ServicePermission(ApplicationAdminService.class.getName(), ServicePermission.GET));
adminServicePermissions = adminPermSet;
testPermission = new org.onosproject.security.Permission("testClass", "APP_READ", "testActions");
testPermissions = new HashSet<org.onosproject.security.Permission>();
testPermissions.add(testPermission);
testJavaPerm = new AppPermission("testName");
testJavaPerms = new HashSet<Permission>();
testJavaPerms.add(testJavaPerm);
}
@Test
public void testGetUserApplicationPermissions() {
List<Permission> perms = Lists.newArrayList();
perms.addAll(defaultPermissions);
assertEquals(5, defaultPermissions.size());
perms.addAll(testJavaPerms);
assertEquals(1, testJavaPerms.size());
assertEquals(6, perms.size());
assertTrue(perms.contains(testJavaPerm));
}
@Test
public void testGetAdminApplicationPermissions() {
List<Permission> perms = Lists.newArrayList();
perms.addAll(defaultPermissions);
perms.addAll(adminServicePermissions);
perms.addAll(testJavaPerms);
assertEquals(7, perms.size());
assertTrue(perms.contains(testJavaPerm));
}
@Test
public void testConvertToJavaPermissions() {
List<Permission> result = Lists.newArrayList();
for (org.onosproject.security.Permission perm : testPermissions) {
Permission javaPerm = new AppPermission(perm.getName());
if (javaPerm != null) {
if (javaPerm instanceof AppPermission) {
if (((AppPermission) javaPerm).getType() != null) {
AppPermission ap = (AppPermission) javaPerm;
result.add(ap);
}
} else if (javaPerm instanceof ServicePermission) {
if (!javaPerm.getName().contains(SecurityAdminService.class.getName())) {
result.add(javaPerm);
}
} else {
result.add(javaPerm);
}
}
}
assertTrue(!result.isEmpty());
assertEquals("APP_READ", result.get(0).getName());
}
@Test
public void testConvertToOnosPermissions() {
Permission testJavaPerm = new AppPermission("testName");
List<org.onosproject.security.Permission> result = Lists.newArrayList();
org.onosproject.security.Permission onosPerm =
new org.onosproject.security.Permission(AppPermission.class.getName(), testJavaPerm.getName(), "");
result.add(onosPerm);
assertTrue(!result.isEmpty());
assertEquals("TESTNAME", result.get(0).getName());
}
@Test
public void testGetDefaultPerms() {
List<Permission> permSet = Lists.newArrayList();
assertTrue(permSet.isEmpty());
permSet.add(new PackagePermission("*", PackagePermission.EXPORTONLY));
permSet.add(new PackagePermission("*", PackagePermission.IMPORT));
permSet.add(new AdaptPermission("*", AdaptPermission.ADAPT));
permSet.add(new ConfigurationPermission("*", ConfigurationPermission.CONFIGURE));
permSet.add(new AdminPermission("*", AdminPermission.METADATA));
assertEquals(5, permSet.size());
}
@Test
public void testGetNBServiceList() {
Set<String> permString = new HashSet<>();
permString.add(new ServicePermission(ApplicationAdminService.class.getName(), ServicePermission.GET).getName());
assertEquals(1, permString.size());
assertEquals("org.onosproject.app.ApplicationAdminService", permString.toArray()[0]);
}
@Test
public void testGetOnosPermission() {
org.onosproject.security.Permission result = null;
if (testJavaPerm instanceof AppPermission) {
result = new org.onosproject.security.Permission(AppPermission.class.getName(), testJavaPerm.getName(), "");
}
assertNotNull(result);
assertEquals("TESTNAME", result.getName());
}
}