[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3918) org.jboss.seam.security.Identity needs to be decoupled from system for testing purposes
by Dan Hinojosa (JIRA)
org.jboss.seam.security.Identity needs to be decoupled from system for testing purposes
---------------------------------------------------------------------------------------
Key: JBSEAM-3918
URL: https://jira.jboss.org/jira/browse/JBSEAM-3918
Project: Seam
Issue Type: Feature Request
Components: Security
Affects Versions: 2.1.1.GA
Environment: JBoss Seam 2.1.1.GA
Reporter: Dan Hinojosa
org.jboss.seam.security.Identity cannot be used in unit testing. Unit testing being defined as an isolated (no db, no app server) test. If I provide an identity into a test, once I call assertTrue(identity.hasRole("xxx")); I get an understandable NullPointerException because there is no Seam Context available.
If I may recommend that org.jboss.seam.security.Identity be either an interface or a POJO with no dependencies as an API so TDD advocates can test their code easily. This would also fulfill Seam's idea that everything for the end user is testable.
Example Test
@Test(groups = "unit")
public void testAuthenticateSuccessWithRoles() {
Log log = createMock(Log.class);
EntityManager entityManager = createMock(EntityManager.class);
Query query = createMock(Query.class);
Calendar createdDate = Calendar.getInstance();
Calendar updatedDate = Calendar.getInstance();
User user = new User();
user.setCreatedDate(createdDate);
user.setEmail("ricardo(a)aol.com");
user.setFirstName("Ricardo");
user.setLastName("Montalban");
user.setName("rmontalban");
user.setNotes("userNotes2");
user.setPassword("passw0rd");
user.setId(220L);
user.setUpdatedDate(updatedDate);
Role role = new Role();
role.setName("mgmt");
role.setId(665L);
Calendar createdDate2 = Calendar.getInstance();
createdDate2.set(2009, 1, 15, 12, 14, 15);
role.setCreatedDate(createdDate2);
Calendar updatedDate2 = Calendar.getInstance();
updatedDate2.set(2009, 1, 17, 13, 16, 20);
role.setUpdatedDate(updatedDate2);
role.setNotes("notes");
user.addRole(role);
role.addUser(user);
Credentials credentials = new Credentials();
credentials.setUsername("rmontalban");
credentials.setPassword("passw0rd");
Identity identity = new Identity();
log.info("authenticating #0", "rmontalban");
expect(entityManager.createQuery("SELECT u from User u " +
"WHERE u.name = #{credentials.username} AND u.password = #{credentials.password}")).andReturn(query);
expect(query.getSingleResult()).andReturn(user);
replay(entityManager, query, log);
Authenticator authenticator = new Authenticator();
authenticator.setLog(log);
authenticator.setIdentity(identity);
authenticator.setEntityManager(entityManager);
authenticator.setCredentials(credentials);
assertTrue(authenticator.authenticate());
assertTrue(identity.hasRole("mgmt")); //NullPointerException here
verify(entityManager, query, log);
}
Output from the above test:
java.lang.NullPointerException
at org.jboss.seam.security.Identity.tryLogin(Identity.java:164)
at org.jboss.seam.security.Identity.hasRole(Identity.java:444)
at com.manning.mymanning.AuthenticatorTest.testAuthenticateSuccessWithRoles(AuthenticatorTest.java:128)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 12 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-2240) refactor for easier extensibility of seam identity: seam identiy interface + seam identity base impl
by koen handekyn (JIRA)
refactor for easier extensibility of seam identity: seam identiy interface + seam identity base impl
----------------------------------------------------------------------------------------------------
Key: JBSEAM-2240
URL: http://jira.jboss.com/jira/browse/JBSEAM-2240
Project: JBoss Seam
Issue Type: Feature Request
Components: Core
Affects Versions: 2.0.0.GA
Reporter: koen handekyn
Priority: Optional
to allow easier extensibility of the seam identity class it would be useful to have a clear seam identity interface with complementary base impl from (package org.jboss.seam.security)
use case: i'm trying to define my own seam identiy that contains as an extra parameter domain (login@domain/password).
to have a complete implementation (which also saves the domain into a cookie) i'm stuck as
1. i don't know have an interface that I should satisfy if I wanted to make an implementation from scratch
2. extending from seam idenity has some issues : i missing some protected accessors to some private members (that maybe could be protected?)
alternatively my question would be solved if i could have extension points within initFromCookie and at "setCookieValueIfEnabled( getUsername() ); from method postAuthenticate()" such that i could combine and split login and domain when saving/reading the cookie.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 12 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-2095) Multiple DataSources in same EAR, hib2ddl and import.sql run on all
by Ian Darwin (JIRA)
Multiple DataSources in same EAR, hib2ddl and import.sql run on all
-------------------------------------------------------------------
Key: JBSEAM-2095
URL: http://jira.jboss.com/jira/browse/JBSEAM-2095
Project: JBoss Seam
Issue Type: Feature Request
Components: Core
Affects Versions: 2.0.0.CR1
Environment: EAR deployment, POJO beans setup by Seam-Gen. OS not relevant; tried JDK1.6 and 1.7EA. DB is PostgreSQL 8.
Reporter: Ian Darwin
When using multiple DataSources in an EJB3 EAR, as suggested by Gavin the the URL referenced below, using Hibernate as the underlying persistence, it appears that the "schema export" and the /import.sql get applied to both.
It would be nice if there could be a more fine-grained mechanism for associating import.sql and hbm2ddl with particular entities.
I have two Datasources, call them "all" and "bugs" (the idea being that the bugs database will be shared by all developers and should be permanent, whereas the "all" database should be dropped and recreated/imported
each tim).
16:07:55,345 INFO [SchemaExport] Running hbm2ddl schema export
16:07:55,345 INFO [SchemaExport] exporting generated schema to database
16:07:55,504 INFO [SchemaExport] Executing import script: /import.sql
16:07:55,568 INFO [SchemaExport] schema export complete
...
16:07:55,710 INFO [SchemaExport] Running hbm2ddl schema export
16:07:55,711 INFO [SchemaExport] exporting generated schema to database
16:07:55,857 INFO [SchemaExport] Executing import script: /import.sql
16:07:55,911 INFO [SchemaExport] schema export complete
It would be most convenient if one could specify more precisely which entities go in which Schema.
I have added the @PersistenceContext annotation on the BugsHome class' EntityManager:
@PersistenceUnit(name="tcpseambug")
@In EntityManager bugEntityManager;
public EntityManager getEntityManager() { return bugEntityManager; }
Note that if I disable the hbm2ddl export on the "bugs" database, then schema setup quits when one of the tables in the "all" database shows up missing.
N.B. Will be happy to write up a complete example for the Reference Manual once this is working :-), as there are several related questions on the Forums.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 1 month