Package org.damour.base.server.hibernate

Source Code of org.damour.base.server.hibernate.SecurityHelperTest

package org.damour.base.server.hibernate;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;

import java.util.List;

import org.damour.base.client.objects.Folder;
import org.damour.base.client.objects.GroupMembership;
import org.damour.base.client.objects.User;
import org.damour.base.client.objects.UserGroup;
import org.damour.base.server.hibernate.helpers.SecurityHelper;
import org.damour.base.server.hibernate.helpers.UserHelper;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.exception.ConstraintViolationException;
import org.junit.Test;

import com.twmacinta.util.MD5;

public class SecurityHelperTest {

  @Test
  public void createUserTest() {
    String username = "testuser";
    User user = new User();
    user.setUsername(username);
    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    session.save(user);
    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    user = UserHelper.getUser(session, username);
    session.close();
    assertEquals(username, user.getUsername());
  }

  @Test
  public void createDuplicateUserTest() {
    try {
      String username = "testuser";
      User user1 = new User();
      user1.setUsername(username);
      User user2 = new User();
      user2.setUsername(username);
      Session session = HibernateUtil.getInstance().getSession();
      Transaction tx = session.beginTransaction();
      session.save(user1);
      session.save(user2);
      tx.commit();
      session.close();
      throw new AssertionError("Created duplicate users!");
    } catch (ConstraintViolationException e) {
      // perfect!
    }
  }

  @Test
  public void getUsersTest() {
    // create some users
    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    int NUM_USERS = 100;
    for (int i = 0; i < NUM_USERS; i++) {
      User user = new User();
      user.setUsername("username" + i);
      session.save(user);
    }
    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    List<User> users = SecurityHelper.getUsers(session);
    assertNotNull(users);
    assertEquals(users.size(), NUM_USERS);
    session.close();
  }

  @Test
  public void getUsernamesTest() {
    // create some users
    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    int NUM_USERS = 100;
    for (int i = 0; i < NUM_USERS; i++) {
      User user = new User();
      user.setUsername("username" + i);
      session.save(user);
    }
    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    List<String> users = SecurityHelper.getUsernames(session);
    assertNotNull(users);
    assertEquals(users.size(), NUM_USERS);
    session.close();

    HibernateUtil.getInstance().printStatistics();
  }

  @Test
  public void getGroupMembershipsTest() {
    // create some users and groups
    // create some users
    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    int NUM_USERS = 100;
    for (int i = 0; i < NUM_USERS; i++) {
      User user = new User();
      user.setUsername("username" + i);
      session.save(user);
    }
    int NUM_GROUPS = 100;
    List<User> users = SecurityHelper.getUsers(session);
    for (int i = 0; i < NUM_GROUPS; i++) {
      UserGroup group = new UserGroup();
      group.setName("group" + i);
      session.save(group);
      for (User user : users) {
        GroupMembership groupMembership = new GroupMembership();
        groupMembership.setUser(user);
        groupMembership.setUserGroup(group);
        session.save(groupMembership);
      }
    }
    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    users = SecurityHelper.getUsers(session);
    for (User user : users) {
      List<GroupMembership> groupMemberships = SecurityHelper.getGroupMemberships(session, user);
      assertNotNull(groupMemberships);
      assertEquals(groupMemberships.size(), NUM_GROUPS);
    }
    session.close();
    HibernateUtil.getInstance().printStatistics();
  }

  @Test
  public void getUsersInUserGroupTest() {
    // create some users and groups
    // create some users
    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    int NUM_USERS = 10;
    for (int i = 0; i < NUM_USERS; i++) {
      User user = new User();
      user.setUsername("username" + i);
      session.save(user);
    }
    int NUM_GROUPS = 10;
    List<User> users = SecurityHelper.getUsers(session);
    for (int i = 0; i < NUM_GROUPS; i++) {
      UserGroup group = new UserGroup();
      group.setName("group" + i);
      session.save(group);
      for (User user : users) {
        GroupMembership groupMembership = new GroupMembership();
        groupMembership.setUser(user);
        groupMembership.setUserGroup(group);
        session.save(groupMembership);
      }
    }
    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    List<UserGroup> groups = SecurityHelper.getUserGroups(session);
    for (UserGroup group : groups) {
      users = SecurityHelper.getUsersInUserGroup(session, group);
      assertNotNull(users);
      assertEquals(users.size(), NUM_GROUPS);
    }
    session.close();
    HibernateUtil.getInstance().printStatistics();
  }

  @Test
  public void getUserGroupForUserTest() {
    // create some users and groups
    // create some users
    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    int NUM_USERS = 10;
    for (int i = 0; i < NUM_USERS; i++) {
      User user = new User();
      user.setUsername("username" + i);
      session.save(user);
    }
    int NUM_GROUPS = 10;
    List<User> users = SecurityHelper.getUsers(session);
    for (int i = 0; i < NUM_GROUPS; i++) {
      UserGroup group = new UserGroup();
      group.setName("group" + i);
      session.save(group);
      for (User user : users) {
        GroupMembership groupMembership = new GroupMembership();
        groupMembership.setUser(user);
        groupMembership.setUserGroup(group);
        session.save(groupMembership);
      }
    }
    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    for (int i = 0; i < 100; i++) {
      for (User user : users) {
        List<UserGroup> groups = SecurityHelper.getUserGroups(session, user);
        assertNotNull(groups);
        assertEquals(groups.size(), NUM_GROUPS);
      }
    }
    session.close();

    HibernateUtil.getInstance().printStatistics();
  }

  @Test
  public void createDuplicateUserInGroupTest() {
    try {
      Session session = HibernateUtil.getInstance().getSession();
      Transaction tx = session.beginTransaction();
      User user = new User();
      user.setUsername("username");
      session.save(user);
      UserGroup group = new UserGroup();
      group.setName("group");
      session.save(group);
      tx.commit();
      session.close();
      for (int i = 0; i < 2; i++) {
        session = HibernateUtil.getInstance().getSession();
        tx = session.beginTransaction();
        GroupMembership groupMembership = new GroupMembership();
        groupMembership.setUser(user);
        groupMembership.setUserGroup(group);
        session.save(groupMembership);
        tx.commit();
        session.close();
      }
      throw new AssertionError("Created duplicate users!");
    } catch (ConstraintViolationException e) {
      // perfect!
      e.printStackTrace();
    }
  }

  @Test
  public void createDuplicateGroupTest() {
    try {
      Session session = HibernateUtil.getInstance().getSession();
      Transaction tx = session.beginTransaction();
      UserGroup group1 = new UserGroup();
      group1.setName("group");
      session.save(group1);
      UserGroup group2 = new UserGroup();
      group2.setName("group");
      session.save(group2);
      tx.commit();
      session.close();
      throw new AssertionError("Created duplicate users!");
    } catch (ConstraintViolationException e) {
      // perfect!
      e.printStackTrace();
    }
  }

  @Test
  public void removeUserFromUserGroupTest() {
    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    String username = "testuser";
    User user = new User();
    user.setUsername(username);
    session.save(user);

    UserGroup group = new UserGroup();
    group.setName("group");
    session.save(group);

    GroupMembership membership = new GroupMembership();
    membership.setUser(user);
    membership.setUserGroup(group);
    session.save(membership);

    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    tx = session.beginTransaction();
    membership = SecurityHelper.getGroupMembership(session, user, group);
    session.delete(membership);
    tx.commit();
    session.close();
    assertNotNull(membership);

    session = HibernateUtil.getInstance().getSession();
    membership = SecurityHelper.getGroupMembership(session, user, group);
    session.close();
    assertNull(membership);
  }

  @Test
  public void removeUserGroupTest() {
    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    String username = "testuser";
    User user = new User();
    user.setUsername(username);
    session.save(user);

    UserGroup group = new UserGroup();
    group.setName("group");
    session.save(group);

    GroupMembership membership = new GroupMembership();
    membership.setUser(user);
    membership.setUserGroup(group);
    session.save(membership);

    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    tx = session.beginTransaction();
    group = SecurityHelper.getUserGroup(session, "group");
    SecurityHelper.deleteUserGroup(session, group);
    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    membership = SecurityHelper.getGroupMembership(session, user, group);
    session.close();
    assertNull(membership);
  }

  @Test
  public void createFolderTest() {
    String name = "test-folder-name";
    String descrption = "test-folder-description";
    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    Folder folder = new Folder();
    folder.setName(name);
    folder.setDescription(descrption);
    session.save(folder);
    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    folder = SecurityHelper.getFolder(session, null, name);
    session.close();
    assertEquals(folder.getName(), name);
    assertEquals(folder.getDescription(), descrption);
  }

  @Test
  public void createSubFolderTest() {
    String parentName = "parent-folder-name";
    String parentDescription = "parent-folder-description";
    String childFolderName = "child-folder-name";
    String childFolderDescription = "child-folder-description";

    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    Folder parentFolder = new Folder();
    parentFolder.setName(parentName);
    parentFolder.setDescription(parentDescription);
    session.save(parentFolder);
    Folder childFolder = new Folder();
    childFolder.setParent(parentFolder);
    childFolder.setName(childFolderName);
    childFolder.setDescription(childFolderDescription);
    session.save(childFolder);
    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    childFolder = SecurityHelper.getFolder(session, parentFolder, childFolderName);
    session.close();
    assertEquals(childFolder.getName(), childFolderName);
    assertEquals(childFolder.getDescription(), childFolderDescription);
  }

  @Test
  public void deleteFolderTest() {
    String name = "test-folder-name";
    String descrption = "test-folder-description";
    Session session = HibernateUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    Folder folder = new Folder();
    folder.setName(name);
    folder.setDescription(descrption);
    session.save(folder);
    tx.commit();
    session.close();

    session = HibernateUtil.getInstance().getSession();
    tx = session.beginTransaction();
    session.delete(folder);
    tx.commit();
    folder = SecurityHelper.getFolder(session, null, name);
    session.close();
    assertNull(folder);
  }

  @Test
  public void passwordHashTest() {
    String password = "t@k30ff";
    MD5 md5 = new MD5();
    md5.Update(password);
    String hash1 = md5.asHex();
    md5 = new MD5();
    md5.Update(password);
    String hash2 = md5.asHex();
    assertEquals(hash1, hash2);
    System.out.println(hash1);
  }

  public void after() {
    System.out.println("*********** after begin ***********");
    HibernateUtil.getInstance().getSessionFactory().close();
    HibernateUtil.getInstance().resetHibernate();
    System.out.println("*********** after end ***********");
  }

}
TOP

Related Classes of org.damour.base.server.hibernate.SecurityHelperTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.