You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Ryan McGuinness (JIRA)" <ji...@apache.org> on 2015/01/08 23:20:35 UTC
[jira] [Comment Edited] (TOMEE-1490) Arquillian Test and Local
context.xml file not loading correctly
[ https://issues.apache.org/jira/browse/TOMEE-1490?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14270136#comment-14270136 ]
Ryan McGuinness edited comment on TOMEE-1490 at 1/8/15 10:20 PM:
-----------------------------------------------------------------
Absolutely, this is based on work I have been doing with [~jlmonteiro]. It works fine in a normal deployment, just not in the arquillian test.
The injected AccountService is a singleton, and the Login is a SessionScoped bean.
@RequestScoped
public class SecurityRealm {
@Inject
private AccountService accountService;
@Inject
private Login login;
public Principal authenticate(final String username, String password) {
if (! login.isValid()) {
Account account = accountService.findAccountByUsernameAndPassword(username, password);
if (account != null) {
login.setAccount(account);
login.setLoginTime(new Date());
if (login.isValid()) {
return login;
}
}
} else if (login!=null && login.isValid()) {
return login;
}
return null;
}
public boolean hasRole(Principal principal, String role) {
if (principal instanceof Login) {
return ((Login)principal).isUserInRole(role);
}
return false;
}
}
was (Author: rmcguinness):
Absolutely, this is based on work I have been doing with [~jlmonteiro]. It works fine in a normal deployment, just not in the arquillian test.
The injected AccountService is a singleton, and the Login is a SessionScoped bean.
@RequestScoped
public class SecurityRealm {
@Inject
private AccountService accountService;
@Inject
private Login login;
public Principal authenticate(final String username, String password) {
if (login == null || ! login.isValid()) {
Account account = accountService.findAccountByUsernameAndPassword(username, password);
if (account != null) {
login.setAccount(account);
login.setLoginTime(new Date());
if (login.isValid()) {
return login;
}
}
} else if (login!=null && login.isValid()) {
return login;
}
return null;
}
public boolean hasRole(Principal principal, String role) {
if (principal instanceof Login) {
return ((Login)principal).isUserInRole(role);
}
return false;
}
}
> Arquillian Test and Local context.xml file not loading correctly
> ----------------------------------------------------------------
>
> Key: TOMEE-1490
> URL: https://issues.apache.org/jira/browse/TOMEE-1490
> Project: TomEE
> Issue Type: Bug
> Components: TomEE Arquillian Adapters
> Affects Versions: 1.7.1
> Reporter: Ryan McGuinness
> Labels: arquillian, test
>
> When using a custom "webapp/META-INF/context.xml
> <Context>
> <Realm className="org.apache.catalina.realm.LockOutRealm">
> <Realm
> cdi="true"
> className="org.apache.tomee.catalina.realm.LazyRealm"
> realmClass="example.service.SecurityRealm" />
> </Realm>
> </Context>
> Then build the shrink wrap to include it in deployment:
> @Deployment(testable = true)
> public static WebArchive createDeployment() {
> WebAppDescriptor descriptor = Descriptors.create(WebAppDescriptor.class)
> .version("3.0");
> File[] files = new File("src/main/resources/META-INF").listFiles();
> WebArchive war = ShrinkWrap.create(WebArchive.class, "example.war")
> .setWebXML(new StringAsset(descriptor.exportAsString()))
> .addPackages(true, "example")
> .addAsManifestResource(new File("src/main/webapp/META-INF/context.xml"))
> .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"));
> for (File f : files) {
> war.addAsManifestResource(f);
> }
> System.out.println(war.toString(true));
> return war;
> }
> The following error is thrown (regardless the realm definition):
> Caused by: org.apache.catalina.LifecycleException: Failed to start component [Realm[LockOutRealm]]
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
> at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5373)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> ... 99 more
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)