+++ /dev/null
-package org.opendaylight.controller.clustersession;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInput;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutput;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.catalina.authenticator.Constants;
-import org.apache.catalina.authenticator.SavedRequest;
-import org.apache.catalina.realm.GenericPrincipal;
-import org.junit.Test;
-import org.opendaylight.controller.clustersession.impl.ClusterSessionServiceImpl;
-import org.opendaylight.controller.clustersession.service.ClusterSessionService;
-
-
-public class ClusterSessionUtilTest {
-
- final String AUTH_TYPE = "FORM";
- final String ADMIN = "admin";
- final String REQUEST_URI = "/test";
- final String BLANK = "";
- final String HEADER_NAME = "ContentType";
- final String HEADER_VALUE = "JSON";
- final long creationTime = 54545454L;
- final int interval = 0;
- ClusterSessionManager manager = new ClusterSessionManager();
- ClusterSessionService sessionService = new ClusterSessionServiceImpl(manager);
-
- @Test
- public void testNullSerializableClusterSession() {
- ClusterSessionData sessionData = ClusterSessionUtil.getSerializableSession(null);
- assertEquals("Session data should be null for null session", null, sessionData);
- }
-
- @Test
- public void testSerializableClusterSession() {
- ClusterSession customSession = createClusterSesion();
- ClusterSessionData sessionData = ClusterSessionUtil.getSerializableSession(customSession);
- assertEquals("Session authentication type not valid", AUTH_TYPE, sessionData.getAuthType());
- assertEquals("Session username does not match", ADMIN, sessionData.getUserName());
- assertEquals("Session password does not match", ADMIN, sessionData.getPassword());
- assertEquals("Session prinicpal does not match", ADMIN, sessionData.getSession().getPrincipal().getName());
- }
-
- @Test
- public void testNullDeserialzableclusterSession() {
- ClusterSession session = ClusterSessionUtil.getDeserializedSession(null, sessionService, manager);
- assertEquals("Session should be null for null session data", null, session);
- }
-
- @Test
- public void testDeserializableClusterSesion() {
- ClusterSession customSession = createClusterSesion();
- ClusterSessionData sessionData = ClusterSessionUtil.getSerializableSession(customSession);
- customSession = sessionData.getSession();
- customSession.setAuthType(AUTH_TYPE);
- customSession.setNote(Constants.FORM_PRINCIPAL_NOTE, BLANK);
- customSession.setNote(Constants.FORM_REQUEST_NOTE, BLANK);
- ClusterSession session = ClusterSessionUtil.getDeserializedSession(sessionData, sessionService, manager);
- assertEquals("Session authentication type not valid", AUTH_TYPE, session.getAuthType());
- assertEquals("prinicpal name is not valid", ADMIN, session.getPrincipal().getName());
- SavedRequest savedRequest = (SavedRequest)session.getNote(Constants.FORM_REQUEST_NOTE);
- assertEquals("saved request uri does not match", REQUEST_URI, savedRequest.getRequestURI());
- assertEquals("saved request header does not match", HEADER_VALUE, savedRequest.getHeaderValues(HEADER_NAME).next());
- assertEquals("saved request header does not match", Locale.ENGLISH, savedRequest.getLocales().next());
- String username = (String)session.getNote(Constants.FORM_USERNAME);
- assertEquals("username does not match", ADMIN, username);
- String password = (String)session.getNote(Constants.FORM_PASSWORD);
- assertEquals("password does not match", ADMIN, password);
- assertEquals("session manager does not match", manager, session.getManager());
- assertEquals("session creation time does not match", creationTime, session.getCreationTime());
- assertEquals("session man inactive interval does not match", interval, session.getMaxInactiveInterval());
- assertEquals("is session new does not match", true, session.isNew());
- assertEquals("is session valid does not match", true, session.isValid());
- }
-
- @Test
- public void testSerializationtoFile(){
- ClusterSession customSession = createClusterSesion();
- ClusterSessionData sessionData = ClusterSessionUtil.getSerializableSession(customSession);
- try(
- OutputStream file = new FileOutputStream("sessionData.ser");
- OutputStream buffer = new BufferedOutputStream(file);
- ObjectOutput output = new ObjectOutputStream(buffer);
- ){
- output.writeObject(sessionData);
- }
- catch(IOException ex){
- fail("IO exception while serializing object to a file.");
- }
- try(
- InputStream file = new FileInputStream("sessionData.ser");
- InputStream buffer = new BufferedInputStream(file);
- ObjectInput input = new ObjectInputStream (buffer);
- ){
- //deserialize the session
- ClusterSessionData recovedSession = (ClusterSessionData)input.readObject();
- //display its data
- ClusterSession session = ClusterSessionUtil.getDeserializedSession(recovedSession, sessionService, manager);
- assertEquals("Session authentication type not valid", AUTH_TYPE, session.getAuthType());
- assertEquals("prinicpal name is not valid", ADMIN, session.getPrincipal().getName());
- SavedRequest savedRequest = (SavedRequest)session.getNote(Constants.FORM_REQUEST_NOTE);
- assertEquals("saved request uri is not valid", REQUEST_URI, savedRequest.getRequestURI());
- assertEquals("saved request header does not match", HEADER_VALUE, savedRequest.getHeaderValues(HEADER_NAME).next());
- assertEquals("saved request header does not match", Locale.ENGLISH, savedRequest.getLocales().next());
- String username = (String)session.getNote(Constants.FORM_USERNAME);
- assertEquals("username does not match", ADMIN, username);
- String password = (String)session.getNote(Constants.FORM_PASSWORD);
- assertEquals("password does not match", ADMIN, password);
- }
- catch(ClassNotFoundException ex){
- fail("Exception in object deserialization from file");
- }
- catch(IOException ex){
- fail("Exception in object deserialization from file");
- }
- File serializedFile = new File("sessionData.ser");
- serializedFile.delete();
- }
-
- private ClusterSession createClusterSesion(){
- ClusterSession clusterSession = new ClusterSession(manager, sessionService);
- clusterSession.setAuthType(AUTH_TYPE);
- clusterSession.setCreationTime(creationTime);
- clusterSession.setMaxInactiveInterval(interval);
- clusterSession.setNew(true);
- clusterSession.setValid(true);
- List<String> roles = new ArrayList<String>();
- roles.add(ADMIN);
- GenericPrincipal principal = new GenericPrincipal(ADMIN, ADMIN, roles);
- clusterSession.setPrincipal(principal);
- clusterSession.setNote(Constants.FORM_PRINCIPAL_NOTE, principal);
- SavedRequest savedRequest = new SavedRequest();
- savedRequest.setRequestURI(REQUEST_URI);
- savedRequest.addHeader(HEADER_NAME, HEADER_VALUE);
- savedRequest.addLocale(Locale.ENGLISH);
- clusterSession.setNote(Constants.FORM_REQUEST_NOTE, savedRequest);
- clusterSession.setNote(Constants.FORM_USERNAME, ADMIN);
- clusterSession.setNote(Constants.FORM_PASSWORD, ADMIN);
- return clusterSession;
- }
-}