/** * 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")); } }