package com.pugh.sockso.web; import com.pugh.sockso.db.Database; import com.pugh.sockso.tests.SocksoTestCase; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import static org.easymock.EasyMock.*; public class SessionTest extends SocksoTestCase { public void testGetCurrentUser() throws SQLException { Request req = createMock( Request.class ); expect( req.getCookie(Session.SESS_ID_COOKIE) ).andReturn( "1" ); expect( req.getArgument(Session.SESS_ID_COOKIE) ).andReturn( "" ); expect( req.getCookie(Session.SESS_CODE_COOKIE) ).andReturn( "ABCDEFGHIJ" ); expect( req.getArgument(Session.SESS_CODE_COOKIE) ).andReturn( "" ); replay( req ); final ResultSet rs = createNiceMock( ResultSet.class ); expect( rs.next() ).andReturn( true ); expect( rs.getInt("id") ).andReturn( 1 ); expect( rs.getString("name") ).andReturn( "foo" ); expect( rs.getString("email") ).andReturn( "me@you.com" ); rs.close(); replay( rs ); final PreparedStatement st = createNiceMock( PreparedStatement.class ); expect( st.executeQuery() ).andReturn( rs ); st.close(); replay( st ); final Database db = createMock( Database.class ); expect( db.prepare((String)anyObject()) ).andReturn( st ).times( 1 ); replay( db ); final Session sess = new Session( db, req, null ); User user = sess.getCurrentUser(); assertEquals( 1, user.getId() ); assertEquals( "foo", user.getName() ); assertEquals( "me@you.com", user.getEmail() ); assertEquals( 1, user.getSessionId() ); assertEquals( "ABCDEFGHIJ", user.getSessionCode() ); verify( req ); verify( db ); } public void testSessionInfo() { final int sessionId = 12344; final String sessionCode = "HGASJDGAJ"; final User u = new User( 1, "", "", "", sessionId, sessionCode, true ); assertEquals( sessionId, u.getSessionId() ); assertEquals( sessionCode, u.getSessionCode() ); } public void testFetchSessionIdFromCookie() { final Session sess = new Session( null, null, null ); final Request req = createMock( Request.class ); expect( req.getCookie(Session.SESS_ID_COOKIE) ).andReturn( "123" ).times( 1 ); expect( req.getArgument(Session.SESS_ID_COOKIE) ).andReturn( "" ).times( 1 ); replay( req ); assertEquals( 123, sess.fetchSessionId(req) ); verify( req ); } public void testFetchSessionIdFromArgument() { final Session sess = new Session( null, null, null ); final Request req = createMock( Request.class ); expect( req.getCookie(Session.SESS_ID_COOKIE) ).andReturn( "" ).times( 1 ); expect( req.getArgument(Session.SESS_ID_COOKIE) ).andReturn( "456" ).times( 1 ); replay( req ); assertEquals( 456, sess.fetchSessionId(req) ); verify( req ); } public void testFetchSessionIdInvalid() { final Session sess = new Session( null, null, null ); final Request req = createMock( Request.class ); expect( req.getCookie(Session.SESS_ID_COOKIE) ).andReturn( "GHASD" ).times( 1 ); expect( req.getArgument(Session.SESS_ID_COOKIE) ).andReturn( "ASDJK" ).times( 1 ); replay( req ); assertEquals( -1, sess.fetchSessionId(req) ); verify( req ); } public void testFetchSessionCodeFromCookie() { final Session sess = new Session( null, null, null ); final Request req = createMock( Request.class ); expect( req.getCookie(Session.SESS_CODE_COOKIE) ).andReturn( "GHASD" ).times( 1 ); expect( req.getArgument(Session.SESS_CODE_COOKIE) ).andReturn( "ASDJK" ).times( 1 ); replay( req ); assertEquals( "GHASD", sess.fetchSessionCode(req) ); verify( req ); } public void testFetchSessionCodeFromArgument() { final Session sess = new Session( null, null, null ); final Request req = createMock( Request.class ); expect( req.getCookie(Session.SESS_CODE_COOKIE) ).andReturn( "" ).times( 1 ); expect( req.getArgument(Session.SESS_CODE_COOKIE) ).andReturn( "ASDJK" ).times( 1 ); replay( req ); assertEquals( "ASDJK", sess.fetchSessionCode(req) ); verify( req ); } public void testFetchSessionCodeBlank() { final Session sess = new Session( null, null, null ); final Request req = createMock( Request.class ); expect( req.getCookie(Session.SESS_CODE_COOKIE) ).andReturn( "" ).times( 1 ); expect( req.getArgument(Session.SESS_CODE_COOKIE) ).andReturn( "" ).times( 1 ); replay( req ); assertEquals( "", sess.fetchSessionCode(req) ); verify( req ); } }