Package org.apache.openejb.config

Source Code of org.apache.openejb.config.AppInfoBuilderTest

/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.openejb.config;

import junit.framework.TestCase;
import org.apache.openejb.assembler.classic.EjbJarInfo;
import org.apache.openejb.assembler.classic.PortInfo;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.SessionBean;
import org.apache.openejb.jee.oejb2.AuthMethodType;
import org.apache.openejb.jee.oejb2.TransportGuaranteeType;
import org.apache.openejb.jee.oejb3.EjbDeployment;
import org.apache.openejb.jee.oejb3.OpenejbJar;

import java.util.List;
import java.util.Properties;

public class AppInfoBuilderTest extends TestCase {

    public void testShouldAddSecurityDetailsToPortInfo() throws Exception {
        final EjbJar ejbJar = new EjbJar();
        final SessionBean sessionBean = new SessionBean();
        sessionBean.setEjbName("MySessionBean");
        sessionBean.setEjbClass("org.superbiz.MySessionBean");
        sessionBean.setRemote("org.superbiz.MySession");
        ejbJar.addEnterpriseBean(sessionBean);

        final OpenejbJar openejbJar = new OpenejbJar();
        final EjbDeployment ejbDeployment = new EjbDeployment();
        openejbJar.addEjbDeployment(ejbDeployment);

        ejbDeployment.setEjbName("MySessionBean");
        ejbDeployment.addProperty("webservice.security.realm", "MyRealm");
        ejbDeployment.addProperty("webservice.security.securityRealm", "MySecurityRealm");
        ejbDeployment.addProperty("webservice.security.transportGarantee", TransportGuaranteeType.NONE.value());
        ejbDeployment.addProperty("webservice.security.authMethod", AuthMethodType.BASIC.value());
        ejbDeployment.addProperty("wss4j.in.action", "Timestamp");
        ejbDeployment.addProperty("wss4j.out.action", "Timestamp");

        final EjbModule ejbModule = new EjbModule(ejbJar, openejbJar);

        final EjbJarInfo ejbJarInfo = new EjbJarInfo();
        final PortInfo portInfo = new PortInfo();
        portInfo.serviceLink = "MySessionBean";
        ejbJarInfo.portInfos.add(portInfo);

        new AppInfoBuilder(null).configureWebserviceSecurity(ejbJarInfo, ejbModule);

        final List<PortInfo> portInfoList = ejbJarInfo.portInfos;
        assertEquals(1, portInfoList.size());
        final PortInfo info = portInfoList.get(0);
        assertEquals("MyRealm", info.realmName);
        assertEquals("MySecurityRealm", info.securityRealmName);
        assertEquals("BASIC", info.authMethod);
        assertEquals("NONE", info.transportGuarantee);
        assertEquals("Timestamp", portInfo.properties.getProperty("wss4j.in.action"));
        assertEquals("Timestamp", portInfo.properties.getProperty("wss4j.out.action"));
    }

    public void testShouldUseDefaultsIfSettingIsNull() throws Exception {
        final EjbJar ejbJar = new EjbJar();
        final SessionBean sessionBean = new SessionBean();
        sessionBean.setEjbName("MySessionBean");
        sessionBean.setEjbClass("org.superbiz.MySessionBean");
        sessionBean.setRemote("org.superbiz.MySession");
        ejbJar.addEnterpriseBean(sessionBean);

        final OpenejbJar openejbJar = new OpenejbJar();
        final EjbDeployment ejbDeployment = new EjbDeployment();
        openejbJar.addEjbDeployment(ejbDeployment);

        ejbDeployment.setEjbName("MySessionBean");

        final EjbModule ejbModule = new EjbModule(ejbJar, openejbJar);

        final EjbJarInfo ejbJarInfo = new EjbJarInfo();
        final PortInfo portInfo = new PortInfo();
        portInfo.serviceLink = "MySessionBean";
        ejbJarInfo.portInfos.add(portInfo);

        new AppInfoBuilder(null).configureWebserviceSecurity(ejbJarInfo, ejbModule);

        final List<PortInfo> portInfoList = ejbJarInfo.portInfos;
        assertEquals(1, portInfoList.size());
        final PortInfo info = portInfoList.get(0);
        assertEquals(null, info.realmName);
        assertEquals(null, info.securityRealmName);
        assertEquals("NONE", info.authMethod);
        assertEquals("NONE", info.transportGuarantee);
        assertTrue(portInfo.properties.isEmpty());
    }

    public void testShouldIgnorePortInfoThatDontMatchTheEjb() throws Exception {
        final EjbJar ejbJar = new EjbJar();
        final SessionBean sessionBean = new SessionBean();
        sessionBean.setEjbName("MySessionBean");
        sessionBean.setEjbClass("org.superbiz.MySessionBean");
        sessionBean.setRemote("org.superbiz.MySession");
        ejbJar.addEnterpriseBean(sessionBean);

        final OpenejbJar openejbJar = new OpenejbJar();
        final EjbDeployment ejbDeployment = new EjbDeployment();
        openejbJar.addEjbDeployment(ejbDeployment);

        ejbDeployment.setEjbName("MySessionBean");

        final EjbModule ejbModule = new EjbModule(ejbJar, openejbJar);

        final EjbJarInfo ejbJarInfo = new EjbJarInfo();
        final PortInfo portInfo = new PortInfo();
        portInfo.authMethod = "DIGEST";
        portInfo.realmName = "";
        portInfo.securityRealmName = "";
        portInfo.transportGuarantee = "CONFIDENTIAL";
        portInfo.serviceLink = "DifferentInfo";
        final Properties props = new Properties();
        props.put("wss4j.in.action", "Timestamp");
        props.put("wss4j.out.action", "Timestamp");
        portInfo.properties = props;
        ejbJarInfo.portInfos.add(portInfo);

        new AppInfoBuilder(null).configureWebserviceSecurity(ejbJarInfo, ejbModule);

        final List<PortInfo> portInfoList = ejbJarInfo.portInfos;
        assertEquals(1, portInfoList.size());
        final PortInfo info = portInfoList.get(0);
        assertEquals("", info.realmName);
        assertEquals("", info.securityRealmName);
        assertEquals("DIGEST", info.authMethod);
        assertEquals("CONFIDENTIAL", info.transportGuarantee);
        assertEquals("Timestamp", portInfo.properties.getProperty("wss4j.in.action"));
        assertEquals("Timestamp", portInfo.properties.getProperty("wss4j.out.action"));
    }
}
TOP

Related Classes of org.apache.openejb.config.AppInfoBuilderTest

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.