Package org.hive2hive.core.api

Source Code of org.hive2hive.core.api.UserManagerTest

package org.hive2hive.core.api;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.nio.file.Path;
import java.util.List;
import java.util.Random;

import org.hive2hive.core.H2HJUnitTest;
import org.hive2hive.core.api.interfaces.IH2HNode;
import org.hive2hive.core.api.interfaces.IUserManager;
import org.hive2hive.core.exceptions.NoPeerConnectionException;
import org.hive2hive.core.exceptions.NoSessionException;
import org.hive2hive.core.file.FileTestUtil;
import org.hive2hive.core.network.NetworkTestUtil;
import org.hive2hive.core.security.UserCredentials;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class UserManagerTest extends H2HJUnitTest {

  private static List<IH2HNode> network;

  @BeforeClass
  public static void initTest() throws Exception {
    testClass = UserManagerTest.class;
    beforeClass();
  }

  @AfterClass
  public static void endTest() {
    afterClass();
  }
 
  @Before
  public void before() {
    network = NetworkTestUtil.createH2HNetwork(5);
  }

  @After
  public void after() {
    NetworkTestUtil.shutdownH2HNetwork(network);
  }

  @Test
  public void isRegisteredTest() throws NoPeerConnectionException, InterruptedException {
    UserCredentials userCredentials = NetworkTestUtil.generateRandomCredentials();
    String userId = userCredentials.getUserId();

    // all nodes must have same result: false
    for (int i = 0; i < network.size(); i++) {

      boolean isRegistered = network.get(i).getUserManager().isRegistered(userId);
      assertFalse(isRegistered);
    }

    // registering from random node (await)
    IUserManager userManager = network.get(new Random().nextInt(network.size())).getUserManager();
    userManager.configureAutostart(true);
    userManager.register(userCredentials).await();

    // all nodes must have same result: true
    for (int i = 0; i < network.size(); i++) {
      boolean isRegistered = network.get(i).getUserManager().isRegistered(userId);
      assertTrue(isRegistered);
    }

    // TODO test after unregistering
  }

  @Test
  public void isLoggedInTest() throws NoPeerConnectionException, InterruptedException, NoSessionException {
    UserCredentials userCredentials = NetworkTestUtil.generateRandomCredentials();
    String userId = userCredentials.getUserId();

    Path rootPah = FileTestUtil.getTempDirectory().toPath();

    // all nodes must have same result: false
    for (int i = 0; i < network.size(); i++) {
      boolean isLoggedIn = network.get(i).getUserManager().isLoggedIn(userId);
      assertFalse(isLoggedIn);
    }

    // before registering: login all nodes and check again
    for (int i = 0; i < network.size(); i++) {
      network.get(i).getUserManager().configureAutostart(true);
      network.get(i).getUserManager().login(userCredentials, rootPah).await();
      boolean isLoggedIn = network.get(i).getUserManager().isLoggedIn(userId);
      assertFalse(isLoggedIn);
    }

    // registering from random node (await)
    network.get(new Random().nextInt(network.size())).getUserManager().register(userCredentials).await();

    // after registering: login all nodes and check again
    for (int i = 0; i < network.size(); i++) {
      network.get(i).getUserManager().login(userCredentials, rootPah).await();
      boolean isLoggedIn = network.get(i).getUserManager().isLoggedIn(userId);
      assertTrue(isLoggedIn);
    }

    // logout
    for (int i = 0; i < network.size(); i++) {

      network.get(i).getUserManager().logout().await();
      boolean isLoggedIn = network.get(i).getUserManager().isLoggedIn(userId);
      assertFalse(isLoggedIn);
    }

    // TODO test after unregister
  }
}
TOP

Related Classes of org.hive2hive.core.api.UserManagerTest

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.