Package org.knowhowlab.osgi.it.monitoradmin

Source Code of org.knowhowlab.osgi.it.monitoradmin.MonitorAdminSecurityTest

package org.knowhowlab.osgi.it.monitoradmin;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.knowhowlab.osgi.testing.commons.assertions.BundleAssert;
import org.knowhowlab.osgi.testing.commons.assertions.OSGiAssert;
import org.knowhowlab.osgi.testing.commons.assertions.ServiceAssert;
import org.knowhowlab.osgi.testing.commons.utils.BundleUtils;
import org.knowhowlab.osgi.testing.commons.utils.ServiceUtils;
import org.ops4j.pax.exam.Inject;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.service.condpermadmin.ConditionInfo;
import org.osgi.service.condpermadmin.ConditionalPermissionAdmin;
import org.osgi.service.condpermadmin.ConditionalPermissionInfo;
import org.osgi.service.condpermadmin.ConditionalPermissionUpdate;
import org.osgi.service.monitor.MonitorPermission;
import org.osgi.service.permissionadmin.PermissionAdmin;
import org.osgi.service.permissionadmin.PermissionInfo;

import java.util.List;

import static org.ops4j.pax.exam.CoreOptions.*;
import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.vmOptions;

/**
* @author dpishchukhin
*/
@RunWith(JUnit4TestRunner.class)
public class MonitorAdminSecurityTest {
    @Configuration
    public static Option[] configuration() {
        String basedir = System.getProperty("basedir");
        return options(
                // list of frameworks to test
                customFramework("felix", String.format("file:%s/felix-security-platform.xml", basedir), "felix"),
                // list of bundles that should be installed
                provision(
                        mavenBundle().groupId("org.knowhowlab.osgi.testing").artifactId("commons").version("1.0.1-SNAPSHOT"),
                        mavenBundle().groupId("org.knowhowlab.osgi").artifactId("monitoradmin").version("1.0.2-SNAPSHOT"),
                        mavenBundle().groupId("org.knowhowlab.osgi.manual-tests").artifactId("test-monitorable").version("1.0.0-SNAPSHOT")
                ),
                vmOptions(String.format("-Dorg.osgi.framework.security=\"osgi\" -Djava.security.policy=%s/all.policy", basedir))
        );
    }

    // injected BundleContext
    @Inject
    private BundleContext bc;

    @Before
    public void init() {
        OSGiAssert.init(bc);

        ServiceAssert.assertServiceAvailable(PermissionAdmin.class);
        permissionAdmin = ServiceUtils.getService(bc, PermissionAdmin.class);

        ServiceAssert.assertServiceAvailable(ConditionalPermissionAdmin.class);
        conditionalPermissionAdmin = ServiceUtils.getService(bc, ConditionalPermissionAdmin.class);

        BundleAssert.assertBundleAvailable("org.knowhowlab.osgi.manual-tests.test-monitorable");
        svProviderBundle = BundleUtils.findBundle(bc, "org.knowhowlab.osgi.manual-tests.test-monitorable");

        BundleAssert.assertBundleAvailable("pax-exam-probe");
        svConsumerBundle = BundleUtils.findBundle(bc, "pax-exam-probe");
    }

    private PermissionAdmin permissionAdmin;
    private ConditionalPermissionAdmin conditionalPermissionAdmin;

    private Bundle svProviderBundle;
    private Bundle svConsumerBundle;

    @Test
    @Ignore
    public void test() {
        ConditionalPermissionUpdate update = conditionalPermissionAdmin.newConditionalPermissionUpdate();
        List list = update.getConditionalPermissionInfos();
        for (Object o : list) {
            System.out.println(o);
        }

        ConditionInfo[] conditions = new ConditionInfo[]{new ConditionInfo("org.osgi.service.condpermadmin.BundleLocationCondition", new String[]{svProviderBundle.getLocation()})};
        PermissionInfo[] permissions = new PermissionInfo[] {new PermissionInfo("org.osgi.service.monitor.MonitorPermission", "test.monitorable\\*", MonitorPermission.PUBLISH)};

        ConditionalPermissionInfo conditionalPermissionInfo = conditionalPermissionAdmin.newConditionalPermissionInfo(null,
                conditions, permissions, ConditionalPermissionInfo.DENY);

        update.getConditionalPermissionInfos().add(conditionalPermissionInfo);
        update.commit();
    }
}
TOP

Related Classes of org.knowhowlab.osgi.it.monitoradmin.MonitorAdminSecurityTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.