package com.vaadin.tests.applicationcontext; import com.vaadin.server.VaadinService; import com.vaadin.tests.components.AbstractTestCase; import com.vaadin.tests.util.Log; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.LegacyWindow; public class ChangeSessionId extends AbstractTestCase { private Log log = new Log(5); Button loginButton = new Button("Change session"); boolean requestSessionSwitch = false; @Override public void init() { LegacyWindow mainWindow = new LegacyWindow("Sestest Application"); mainWindow.addComponent(log); mainWindow.addComponent(loginButton); mainWindow.addComponent( new Button("Show session id", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { logSessionId(); } })); setMainWindow(mainWindow); loginButton.addClickListener(new ClickListener() { @Override public void buttonClick(ClickEvent event) { String oldSessionId = getSessionId(); VaadinService .reinitializeSession(VaadinService.getCurrentRequest()); String newSessionId = getSessionId(); if (oldSessionId.equals(newSessionId)) { log.log("FAILED! Both old and new session id is " + newSessionId); } else { log.log("Session id changed successfully from " + oldSessionId + " to " + newSessionId); } } }); logSessionId(); } private void logSessionId() { log.log("Session id: " + getSessionId()); } protected String getSessionId() { return getContext().getSession().getId(); } @Override protected String getDescription() { return "Tests that the session id can be changed to prevent session fixation attacks"; } @Override protected Integer getTicketNumber() { return 6094; } }