package org.wahlzeit.testEnvironmentProvider; import com.googlecode.objectify.ObjectifyService; import com.googlecode.objectify.Work; import org.junit.rules.ExternalResource; import org.wahlzeit.model.EnglishModelConfig; import org.wahlzeit.model.GermanModelConfig; import org.wahlzeit.model.Guest; import org.wahlzeit.model.LanguageConfigs; import org.wahlzeit.model.UserSession; import org.wahlzeit.services.Language; import org.wahlzeit.services.SessionManager; import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.Map; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * Rule that provides a <code>UserSession</code> in the <code>SessionManager</code> */ public class UserSessionProvider extends ExternalResource { public static final String USER_SESSION_NAME = "testContext"; @Override protected void before() throws Throwable { // init language configs because they are used e.g. for AbstractWebPartHandler LanguageConfigs.put(Language.ENGLISH, new EnglishModelConfig()); LanguageConfigs.put(Language.GERMAN, new GermanModelConfig()); HttpSession httpSession = mock(HttpSession.class); when(httpSession.getAttribute(UserSession.INITIALIZED)).thenReturn(UserSession.INITIALIZED); String guestName = ObjectifyService.run(new Work<String>() { @Override public String run() { Guest guest = new Guest(); guest.setLanguage(Language.ENGLISH); return guest.getId(); } }); when(httpSession.getAttribute(UserSession.CLIENT_ID)).thenReturn(guestName); Map<String, Object> dummyMap = new HashMap<String, Object>(); dummyMap.put(UserSession.MESSAGE, "dummy Message"); when(httpSession.getAttribute(UserSession.SAVED_ARGS)).thenReturn(dummyMap); UserSession userSession = new UserSession(USER_SESSION_NAME, "", httpSession, "en"); SessionManager.setThreadLocalSession(userSession); } @Override protected void after() { SessionManager.setThreadLocalSession(null); } }