Uploaded another one. Accidentally left the spring dependencies of my project in the POM (like I mentioned it comes from my project).
Quintin Beukes On Mon, Sep 28, 2009 at 12:16 PM, Quintin Beukes <[email protected]> wrote: > I'm not sure how to remove files from JIRA, so both are still there. > Just check the upload times or the SNAPSHOT version number (which is a > date/time). > > Quintin Beukes > > > > On Mon, Sep 28, 2009 at 12:14 PM, Quintin Beukes <[email protected]> > wrote: >> OK. Stupid little bug. To fix it, change in the class >> 'src/main/org/apache/openejb/junit/context/OpenEjbTestContext.java >> line 125, change >> if (config.containsKey(REALM_PROPERTY_KEY)) >> { >> String loginConfig = >> OpenEjbTestContext.class.getResource(LOGIN_CONFIG_RESOURCE).toExternalForm(); >> System.out.println("Got the property : " + loginConfig); >> System.setProperty("java.security.auth.login.config", >> URLDecoder.decode(loginConfig)); >> } >> >> To: >> String loginConfig = >> OpenEjbTestContext.class.getResource(LOGIN_CONFIG_RESOURCE).toExternalForm(); >> System.setProperty("java.security.auth.login.config", >> URLDecoder.decode(loginConfig)); >> >> I uploaded a new one to the same JIRA which has this fix applied. So >> you could alternatively just download the new one. >> >> The problem was that the system property was not set when OpenEJB >> started up, due to some minor difference in ordering I suppose? I >> assume at the time the first InitialContext was created, the role >> wasn't specified yet. >> >> My bad. Curious that JDK6u11 runs it perfectly fine on both my machines. >> >> Though I still don't feel right doing it this way :/ >> >> Quintin Beukes >> >> >> >> On Mon, Sep 28, 2009 at 11:32 AM, Quintin Beukes <[email protected]> >> wrote: >>> Hey, >>> >>> I just download the tarball from the JIRA onto my office machine. Then >>> I extracted it and ran mvn install, this is what I got: >>> >>> quin...@quintin-desktop openejb-junit $ mvn install >>> [INFO] Scanning for projects... >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Building openejb-junit >>> [INFO] task-segment: [install] >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] [resources:resources {execution: default-resources}] >>> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered >>> resources, i.e. build is platform dependent! >>> [INFO] Copying 2 resources >>> [INFO] [compiler:compile {execution: default-compile}] >>> [INFO] Compiling 12 source files to >>> /home/quintin/dev/openejb/openejb-junit/target/classes >>> [INFO] [resources:testResources {execution: default-testResources}] >>> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered >>> resources, i.e. build is platform dependent! >>> [INFO] Copying 3 resources >>> [INFO] [compiler:testCompile {execution: default-testCompile}] >>> [INFO] Compiling 15 source files to >>> /home/quintin/dev/openejb/openejb-junit/target/test-classes >>> [INFO] [surefire:test {execution: default-test}] >>> [INFO] Surefire report directory: >>> /home/quintin/dev/openejb/openejb-junit/target/surefire-reports >>> >>> ------------------------------------------------------- >>> T E S T S >>> ------------------------------------------------------- >>> Running org.apache.openejb.junit.TestEjbSecurity >>> Apache OpenEJB 3.1.2-SNAPSHOT build: 20090827-09:05 >>> http://openejb.apache.org/ >>> INFO - openejb.home = /home/quintin/dev/openejb/openejb-junit >>> INFO - openejb.base = /home/quintin/dev/openejb/openejb-junit >>> INFO - Configuring Service(id=Default Security Service, >>> type=SecurityService, provider-id=Default Security Service) >>> INFO - Configuring Service(id=Default Transaction Manager, >>> type=TransactionManager, provider-id=Default Transaction Manager) >>> INFO - Found EjbModule in classpath: >>> /home/quintin/dev/openejb/openejb-junit/target/test-classes >>> INFO - Beginning load: >>> /home/quintin/dev/openejb/openejb-junit/target/test-classes >>> INFO - Configuring enterprise application: classpath.ear >>> INFO - Configuring Service(id=Default Stateless Container, >>> type=Container, provider-id=Default Stateless Container) >>> INFO - Auto-creating a container for bean SecuredEjb: >>> Container(type=STATELESS, id=Default Stateless Container) >>> INFO - Enterprise application "classpath.ear" loaded. >>> INFO - Assembling app: classpath.ear >>> INFO - Jndi(name=SecuredEjbLocal) --> Ejb(deployment-id=SecuredEjb) >>> INFO - Jndi(name=BasicEjbLocal) --> Ejb(deployment-id=BasicEjb) >>> INFO - Created Ejb(deployment-id=SecuredEjb, ejb-name=SecuredEjb, >>> container=Default Stateless Container) >>> INFO - Created Ejb(deployment-id=BasicEjb, ejb-name=BasicEjb, >>> container=Default Stateless Container) >>> INFO - Deployed Application(path=classpath.ear) >>> INFO - Logging in >>> INFO - Logging in >>> INFO - Logging in >>> Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.791 sec >>> Running org.apache.openejb.junit.context.ContextWrapperStatementTest >>> Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 sec >>> Running org.apache.openejb.junit.TestEjbBasic >>> Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 sec >>> Running org.apache.openejb.junit.TestMethodConfigProperties >>> Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 sec >>> Running org.apache.openejb.junit.TestClassConfigFileAndProperties >>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec >>> Running org.apache.openejb.junit.TestClassConfigFile >>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec >>> Running org.apache.openejb.junit.TestDualConfigOverride >>> Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec >>> Running org.apache.openejb.junit.TestRunner >>> Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec >>> Running org.apache.openejb.junit.TestMethodConfigFile >>> Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec >>> Running org.apache.openejb.junit.context.UtilTest >>> Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 sec >>> Running org.apache.openejb.junit.TestClassConfigProperties >>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec >>> >>> Results : >>> >>> Tests run: 33, Failures: 0, Errors: 0, Skipped: 0 >>> >>> [INFO] [jar:jar {execution: default-jar}] >>> [INFO] Building jar: >>> /home/quintin/dev/openejb/openejb-junit/target/openejb-junit-0.1-SNAPSHOT.jar >>> [INFO] [install:install {execution: default-install}] >>> [INFO] Installing >>> /home/quintin/dev/openejb/openejb-junit/target/openejb-junit-0.1-SNAPSHOT.jar >>> to >>> /home/quintin/.m2/repository/org/apache/openejb/openejb-junit/0.1-SNAPSHOT/openejb-junit-0.1-SNAPSHOT.jar >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] BUILD SUCCESSFUL >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Total time: 1 minute 9 seconds >>> [INFO] Finished at: Mon Sep 28 11:22:52 SAST 2009 >>> >>> Can you perhaps send me your full output. >>> >>> And, are you perhaps running in JDK5? I haven't tested it in JDK5. I >>> just did so an found I get the same error. I will be updating it for >>> JDK5 today, which should probably fix the error. Thanks for the input. >>> >>> Quintin Beukes >>> >>> >>> >>> On Mon, Sep 28, 2009 at 12:55 AM, Jonathan Gallimore >>> <[email protected]> wrote: >>>> Just had a quick play with this, it looks really nice. Thanks for a great >>>> contribution. I think it would be good to get this added to subversion and >>>> some info up on the website. I'm happy to get this in, anyone got any >>>> thoughts about where it goes (under openejb3 or somewhere else)? >>>> >>>> One problem I did run into was this error running the TestEjbSecurity test >>>> case: >>>> >>>> java.lang.RuntimeException: Failed to configure object. >>>> at >>>> org.apache.openejb.junit.context.OpenEjbTestContext.configureTest(OpenEjbTestContext.java:109) >>>> at >>>> org.apache.openejb.junit.context.ContextWrapperStatement.evaluate(ContextWrapperStatement.java:44) >>>> at >>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73) >>>> at >>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46) >>>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180) >>>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41) >>>> at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173) >>>> at >>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) >>>> at >>>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) >>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:220) >>>> at org.apache.openejb.junit.OpenEjbRunner.run(OpenEjbRunner.java:133) >>>> at >>>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) >>>> at >>>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >>>> at >>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) >>>> at >>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) >>>> at >>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) >>>> at >>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) >>>> Caused by: javax.naming.AuthenticationException: User could not be >>>> authenticated: RoleA [Root exception is >>>> javax.security.auth.login.LoginException: No LoginModules configured for >>>> OpenEjbJunitSecurityRealm] >>>> at >>>> org.apache.openejb.client.LocalInitialContext.login(LocalInitialContext.java:127) >>>> at >>>> org.apache.openejb.client.LocalInitialContext.<init>(LocalInitialContext.java:77) >>>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) >>>> at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) >>>> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown >>>> Source) >>>> at java.lang.reflect.Constructor.newInstance(Unknown Source) >>>> at >>>> org.apache.openejb.client.LocalInitialContextFactory.getLocalInitialContext(LocalInitialContextFactory.java:86) >>>> at >>>> org.apache.openejb.client.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:43) >>>> at javax.naming.spi.NamingManager.getInitialContext(Unknown Source) >>>> at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source) >>>> at javax.naming.InitialContext.init(Unknown Source) >>>> at javax.naming.InitialContext.<init>(Unknown Source) >>>> at >>>> org.apache.openejb.junit.context.OpenEjbTestContext.getInitialContext(OpenEjbTestContext.java:130) >>>> at >>>> org.apache.openejb.junit.context.OpenEjbTestContext.configureTest(OpenEjbTestContext.java:97) >>>> ... 16 more >>>> Caused by: javax.security.auth.login.LoginException: No LoginModules >>>> configured for OpenEjbJunitSecurityRealm >>>> at javax.security.auth.login.LoginContext.init(Unknown Source) >>>> at javax.security.auth.login.LoginContext.<init>(Unknown Source) >>>> at >>>> org.apache.openejb.core.security.SecurityServiceImpl.login(SecurityServiceImpl.java:74) >>>> at >>>> org.apache.openejb.core.security.SecurityServiceImpl.login(SecurityServiceImpl.java:35) >>>> at >>>> org.apache.openejb.client.LocalInitialContext.login(LocalInitialContext.java:123) >>>> ... 29 more >>>> >>>> >>>> I guess there's something extra I need in my setup, any thoughts? (I admit >>>> I >>>> haven't tried particularly hard to troubleshoot it yet - its getting late, >>>> but I'll have another go tomorrow!), >>>> >>>> Cheers >>>> >>>> Jon >>>> >>>> On Sun, Sep 27, 2009 at 8:16 PM, Quintin Beukes <[email protected]> >>>> wrote: >>>> >>>>> Hey, >>>>> >>>>> The previous runner I started modifying extensively to customize for >>>>> our company's tests. I already had a small testing framework for the >>>>> tests, which used Spring to initial OpenEJB and do the lookups. I >>>>> changed this to use the runner technique. >>>>> >>>>> Then over the weekend I decided to extract the runner code into an >>>>> openejb-junit project, and make it extensible so I could use the >>>>> library's code and only extend to give our tests the same >>>>> functionality. >>>>> >>>>> This is what I came up with: >>>>> https://issues.apache.org/jira/browse/OPENEJB-1078 >>>>> >>>>> The JUnit tests demonstrate it's behaviour. These 3 tests are the best >>>>> examples: >>>>> org.apache.openejb.junit.TestEjbBasic >>>>> org.apache.openejb.junit.TestEjbSecurity >>>>> org.apache.openejb.junit.TestDualConfigOverride >>>>> >>>>> It supports class level configuration of the InitialContext, and then >>>>> method specific configurations. You can configure the InitialContext >>>>> from a file, or by directly specifying properties. You can have >>>>> OpenEJB do any of it's supported injections, or you can have the >>>>> runner inject the InitialContext (or it's initialization Properties >>>>> object) and do your own lookups. You can specify as which role to load >>>>> the InitialContext (basically a RunAs). >>>>> >>>>> I'm planning on doing resource configurations, such as datasources. >>>>> Any other suggestions, please throw them my way. And please send me >>>>> feedback. So far it's working very well for my tests. I have yet to >>>>> complete the spring modification, but for those tests which don't >>>>> require it, it works very well. Especially the role tests. >>>>> >>>>> Not that it still doesn't support JUnit 3. If you require JUnit 3, let >>>>> me know and I'll prioritize implementing JUnit 3 support. >>>>> >>>>> An basic example would be the following: >>>>> @RunWith(OpenEjbRunner.class) >>>>> @ContextConfig( >>>>> properties={ >>>>> >>>>> �...@property("java.naming.factory.initial=org.apache.openejb.client.LocalInitialContextFactory") >>>>> } >>>>> ) >>>>> @LocalClient >>>>> public class TestEjbSecurity >>>>> { >>>>> �...@ejb >>>>> private MyBusinessBean myBean; >>>>> >>>>> �...@testresource >>>>> private InitialContext currentInitialContext; >>>>> >>>>> �...@test >>>>> �...@contextconfig( >>>>> securityRole="Admin" >>>>> ) >>>>> public void testAsAdmin() >>>>> { >>>>> myBean.someMethod(); >>>>> currentInitialContext.lookup("some/custom/lookup"); >>>>> } >>>>> >>>>> �...@test >>>>> �...@contextconfig( >>>>> propertiesFile="/META-INF/employee-context.properties", >>>>> securityRole="Employe" >>>>> ) >>>>> public void testAsEmployee() >>>>> { >>>>> myBean.someMethod(); >>>>> } >>>>> } >>>>> >>>>> Quintin Beukes >>>>> >>>> >>> >> >
