/**
* Mad-Advertisement
* Copyright (C) 2011 Thorsten Marx <thmarx@gmx.net>
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.mad.ads.base.api.service.user;
import static org.junit.Assert.*;
import java.io.File;
import java.util.Date;
import java.util.List;
import net.mad.ads.base.api.BaseContext;
import net.mad.ads.base.api.model.ResultList;
import net.mad.ads.base.api.model.user.User;
import net.mad.ads.base.api.model.user.impl.AdminUser;
import net.mad.ads.base.api.service.*;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class HibernateUserServiceTest {
private static SessionFactory sessionFactory;
private static UserService users;
@BeforeClass
public static void before () throws Exception {
try {
File hibernateConfig = new File("src/etc/hibernate.cfg.xml");
sessionFactory = new Configuration().configure(hibernateConfig).buildSessionFactory();
users = new HibernateUserService();
BaseContext context = new BaseContext();
context.put(HibernateService.SESSION_FACTORY, sessionFactory);
users.open(context);
} catch (Exception e) {
e.printStackTrace();
}
}
private User createUser (User user) {
try {
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
return user;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@AfterClass
public static void after () {
sessionFactory.close();
}
@Test
public void testLogin() throws Exception {
AdminUser user = new AdminUser();
user.setActive(true);
user.setCreated(new Date());
user.setEmail("admin@adserver.org");
user.setPassword("password");
user.setUsername("admin1");
user = (AdminUser) createUser(user);
User temp = users.login("admin", "password");
assertNotNull("could not login user by username and password", user);
}
@Test
public void testGet() throws Exception {
AdminUser user = new AdminUser();
user.setActive(true);
user.setCreated(new Date());
user.setEmail("admin@adserver.org");
user.setPassword("password");
user.setUsername("admin2");
user = (AdminUser) createUser(user);
user = (AdminUser) users.get(user.getId());
assertNotNull("could not get user by id", user);
}
@Test
public void testUpdate() throws Exception {
AdminUser user = new AdminUser();
user.setActive(true);
user.setCreated(new Date());
user.setEmail("admin@adserver.org");
user.setPassword("password");
user.setUsername("admin3");
user = (AdminUser) createUser(user);
user = (AdminUser) users.get(user.getId());
user.setEmail("admin2@adserver.org");
users.update(user);
user = (AdminUser) users.get(user.getId());
assertEquals("email address not changed", "admin2@adserver.org", user.getEmail());
}
@Test
public void testCreate() throws Exception {
User user = new AdminUser();
user.setActive(false);
user.setCreated(new Date());
user.setEmail("admin3@adserver.org");
user.setPassword("password");
user.setUsername("admin4");
user = users.create(user);
user = users.login("admin4", "password");
assertNotNull("user not created", user);
}
@Test
public void testActivate() throws Exception {
AdminUser user = new AdminUser();
user.setActive(false);
user.setCreated(new Date());
user.setEmail("admin@adserver.org");
user.setPassword("password");
user.setUsername("admin5");
user = (AdminUser) createUser(user);
users.activate(user.getId());
user = (AdminUser) users.get(user.getId());
assertTrue("user not active", user.isActive());
}
@Test
public void testDeactivate() throws Exception {
AdminUser user = new AdminUser();
user.setActive(true);
user.setCreated(new Date());
user.setEmail("admin@adserver.org");
user.setPassword("password");
user.setUsername("admin6");
user = (AdminUser) createUser(user);
users.deactivate(user.getId());
user = (AdminUser) users.get(user.getId());
assertFalse("user is active", user.isActive());
}
@Test
public void testCheckUsername() throws Exception {
AdminUser user = new AdminUser();
user.setActive(true);
user.setCreated(new Date());
user.setEmail("admin@adserver.org");
user.setPassword("password");
user.setUsername("admin7");
user = (AdminUser) createUser(user);
assertFalse("admin is free", users.checkUsername("admin7"));
}
@Test
public void testCheckMail() throws Exception {
AdminUser user = new AdminUser();
user.setActive(true);
user.setCreated(new Date());
user.setEmail("admin8@adserver.org");
user.setPassword("password");
user.setUsername("admin8");
user = (AdminUser) createUser(user);
assertFalse("admin8@adserver.org is free", users.checkMail("admin8@adserver.org"));
}
@Test
public void testChangePassword() throws Exception {
AdminUser user = new AdminUser();
user.setActive(true);
user.setCreated(new Date());
user.setEmail("admin8@adserver.org");
user.setPassword("password");
user.setUsername("admin8");
user = (AdminUser) createUser(user);
users.changePassword(user.getId(), "passwordola");
user = (AdminUser) users.get(user.getId());
assertEquals("password not changed", "passwordola", user.getPassword());
}
@Test
public void testList() throws Exception {
ResultList<User> result = users.list(1, 10, null);
assertTrue("user list empty", result.size() > 0);
}
@Test
public void testCount() throws Exception {
AdminUser user = new AdminUser();
user.setActive(true);
user.setCreated(new Date());
user.setEmail("admin8@adserver.org");
user.setPassword("password");
user.setUsername("admin9");
user = (AdminUser) createUser(user);
long count = users.count();
assertTrue("wrong number of users found", count > 0L);
}
}