[jboss-svn-commits] JBoss Common SVN: r4371 - arquillian/trunk/containers/openejb/src/test/java/org/jboss/arquillian/prototyping/context.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat May 8 13:09:33 EDT 2010
Author: ALRubinger
Date: 2010-05-08 13:09:33 -0400 (Sat, 08 May 2010)
New Revision: 4371
Added:
arquillian/trunk/containers/openejb/src/test/java/org/jboss/arquillian/prototyping/context/OpenEJBArquillianContextTestCase.java
Log:
[ARQ-125] Create test for OpenEJB-specific ArquillianContext
Added: arquillian/trunk/containers/openejb/src/test/java/org/jboss/arquillian/prototyping/context/OpenEJBArquillianContextTestCase.java
===================================================================
--- arquillian/trunk/containers/openejb/src/test/java/org/jboss/arquillian/prototyping/context/OpenEJBArquillianContextTestCase.java (rev 0)
+++ arquillian/trunk/containers/openejb/src/test/java/org/jboss/arquillian/prototyping/context/OpenEJBArquillianContextTestCase.java 2010-05-08 17:09:33 UTC (rev 4371)
@@ -0,0 +1,175 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * 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.jboss.arquillian.prototyping.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.inject.Inject;
+import javax.naming.Context;
+import javax.naming.NamingException;
+
+import org.jboss.arquillian.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.openejb.ejb.EchoBean;
+import org.jboss.arquillian.openejb.ejb.EchoLocalBusiness;
+import org.jboss.arquillian.prototyping.context.api.ArquillianContext;
+import org.jboss.arquillian.prototyping.context.api.openejb.OpenEJBArquillianContext;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Tests to ensure that we can use OpenEJB-specific grammars
+ * and features via the ArquillianContext
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+ at RunWith(Arquillian.class)
+public class OpenEJBArquillianContextTestCase
+{
+
+ //-------------------------------------------------------------------------------------||
+ // Class Members ----------------------------------------------------------------------||
+ //-------------------------------------------------------------------------------------||
+
+ /**
+ * Logger
+ */
+ private static final Logger log = Logger.getLogger(OpenEJBArquillianContextTestCase.class.getName());
+
+ /**
+ * JNDI Name that OpenEJB will assign to our deployment
+ */
+ private static final String JNDI_NAME = "EchoBeanLocal";
+
+ /**
+ * User who is in role "Administrator"
+ */
+ private static final String ADMIN_USER_NAME = "admin";
+
+ /**
+ * Password of an admin user
+ */
+ private static final String ADMIN_PASSWORD = "adminPassword";
+
+ //-------------------------------------------------------------------------------------||
+ // Instance Members -------------------------------------------------------------------||
+ //-------------------------------------------------------------------------------------||
+
+ /**
+ * TODO: We don't really need a deployment
+ */
+ @Deployment
+ public static JavaArchive createDeployment()
+ {
+ return ShrinkWrap.create("slsb.jar", JavaArchive.class).addClasses(EchoLocalBusiness.class, EchoBean.class);
+ }
+
+ /**
+ * The hook to the ARQ container, and by extension, OpenEJB
+ */
+ @Inject
+ private OpenEJBArquillianContext arquillianContext;
+
+ /**
+ * EJB Proxy obtained via unauthenticated Context
+ */
+ @EJB
+ private EchoLocalBusiness unauthenticatedBean;
+
+ //-------------------------------------------------------------------------------------||
+ // Tests ------------------------------------------------------------------------------||
+ //-------------------------------------------------------------------------------------||
+
+ /**
+ * Ensures that we may inject an {@link ArquillianContext}
+ * into the test
+ */
+ @Test
+ public void injectArquillianContext()
+ {
+ Assert.assertNotNull("Arquillian context should have been injected", arquillianContext);
+ }
+
+ /**
+ * Ensures we can get at OpenEJB deployment metadata
+ * from the {@link OpenEJBArquillianContext}
+ */
+ @Test
+ public void deploymentMetadata()
+ {
+ final String ejbName = arquillianContext.getDeploymentMetadata().ejbJars.get(0).enterpriseBeans.get(0).ejbName;
+ log.info("Got EJB Name: " + ejbName);
+ Assert.assertEquals("Did not obtain correct EJB name from deployment metadata", EchoBean.class.getSimpleName(),
+ ejbName);
+ }
+
+ /**
+ * Ensures we can create an OpenEJB-specific JNDI {@link Context} via the
+ * {@link OpenEJBArquillianContext}
+ */
+ @Test
+ public void programmaticNamingContext() throws NamingException
+ {
+ final Context context = arquillianContext.get(Context.class);
+ Assert.assertNotNull("Should be able to look up EJB via naming context obtained from Arquillian context", context
+ .lookup(JNDI_NAME));
+ }
+
+ /**
+ * Ensures we can create an OpenEJB-specific JNDI {@link Context} via the
+ * {@link OpenEJBArquillianContext} which supports/respects context properties
+ */
+ @Test
+ public void programmaticNamingContextWithProperties() throws NamingException
+ {
+ // Define login properties
+ final Map<String, Object> props = new HashMap<String, Object>();
+ props.put(Context.SECURITY_PRINCIPAL, ADMIN_USER_NAME);
+ props.put(Context.SECURITY_CREDENTIALS, ADMIN_PASSWORD);
+
+ // Get a naming context and log in
+ final Context context = arquillianContext.get(Context.class, props);
+
+ // Look up the EJB and request upon a secured action
+ final EchoLocalBusiness bean = (EchoLocalBusiness) context.lookup(JNDI_NAME);
+ final String expected = "Secured Action";
+ final String received = bean.securedEcho(expected);
+ Assert.assertSame("Should have been able to invoke upon a secured action using context lookup with props",
+ expected, received);
+
+ // Log out
+ context.close();
+ }
+
+ /**
+ * Ensures that unauthenticated access to a secured method fails
+ * as a control mechanism
+ */
+ @Test(expected = EJBAccessException.class)
+ public void securityControl() throws NamingException
+ {
+ unauthenticatedBean.securedEcho("This should fail");
+ }
+}
More information about the jboss-svn-commits
mailing list