Dataimport in Seam tests
hispeedsurfer Dec 3, 2007 1:12 PMHi,
project is created with seam-gen v.2.0.0.GA
Production DB is MySQL
For testing purpose I filled import-test.sql with values
INSERT INTO Customer (id, version, userName, hashedPassword, email, memberName) VALUES (1, 1, 'feivel', 'd41d8cd98f00b204e9800998ecf8427e', 'a.franke@email.de', '00022')
Here the corresponding entity
@Entity @Name("user") @Table(name = "Customer") public class User implements java.io.Serializable { private Long id; private Long version; private String userName; private String memberName; private String email; private String hashedPassword; @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "id", unique = true, nullable = false) public Long getId() {return this.id;} public void setId(Long id) {this.id = id;} @Version @Column(name = "version") public Long getVersion() {return this.version;} public void setVersion(Long version) {this.version = version;} @Column(name = "userName", nullable = false) @NotNull public String getUserName() {return this.userName;} public void setUserName(String username) {this.userName = username;} ...... }
But when I run a login-test the values not in HSQLDB
@Test public void testLoginComponent() throws Exception { new ComponentTest() { @Override protected void testComponents() throws Exception { assert getValue("#{identity.loggedIn}").equals(false); setValue("#{identity.username}", "00022"); setValue("#{identity.password}", ""); invokeMethod("#{identity.login}"); assert getValue("#{identity.loggedIn}").equals(true); invokeMethod("#{identity.logout}"); assert getValue("#{identity.loggedIn}").equals(false); setValue("#{identity.username}", "gavin"); setValue("#{identity.password}", "tiger"); invokeMethod("#{identity.login}"); assert getValue("#{identity.loggedIn}").equals(false); } }.run(); }
@Stateless @Name("authenticator") public class AuthenticatorBean implements Authenticator { @Logger private Log log; @PersistenceContext private EntityManager entityManager; @In private Identity identity; @Out(required=false, scope=ScopeType.SESSION) private User currentUser; public boolean authenticate(){ log.info("authenticating #0", identity.getUsername()); try { List results = entityManager.createQuery("select u from User u where u.memberName =:username").setParameter("username", identity.getUsername()).getResultList(); if ( results.size()==0 ) { return false; } else { currentUser = (User) results.get(0); } } catch (PersistenceException e) { e.printStackTrace(); return false; } .....
In debug-modus I can see that the returned list from entityManager is empty, also I call "from User u" in sql statement.
I found nothing in docu or forum what I have done wrong. The persistence-test.xml is that one created automatically from Seam
<?xml version="1.0" encoding="UTF-8"?> <!-- Persistence deployment descriptor for tests --> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="datenvisualisierung"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/DefaultDS</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="create-drop"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.cache.use_second_level_cache" value="false"/> <property name="jboss.entity.manager.factory.jndi.name" value="java:/datenvisualisierungEntityManagerFactory"/> </properties> </persistence-unit> </persistence>