Skip to content

Commit

Permalink
WELD-1610 session availability test
Browse files Browse the repository at this point in the history
  • Loading branch information
tremes authored and jharting committed Apr 9, 2015
1 parent bb66ef8 commit 8503c42
Show file tree
Hide file tree
Showing 6 changed files with 208 additions and 1 deletion.
4 changes: 3 additions & 1 deletion tests-arquillian/pom.xml
Expand Up @@ -59,9 +59,11 @@
<scope>provided</scope>
</dependency>

<!-- TODO: use bom version once WELD-1913 is fixed -->
<dependency>
<groupId>org.jboss.spec.javax.servlet</groupId>
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
<artifactId>jboss-servlet-api_3.1_spec</artifactId>
<version>1.0.0.Final</version>
</dependency>

<dependency>
Expand Down
Expand Up @@ -42,6 +42,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpUpgradeHandler;
import javax.servlet.http.Part;

@Dependent
Expand Down Expand Up @@ -160,6 +161,11 @@ public HttpSession getSession() {
return null;
}

@Override
public String changeSessionId() {
return null;
}

@Override
public boolean isRequestedSessionIdValid() {
return false;
Expand Down Expand Up @@ -203,6 +209,11 @@ public Part getPart(String name) throws IOException, ServletException {
return null;
}

@Override
public <T extends HttpUpgradeHandler> T upgrade(Class<T> handlerClass) throws IOException, ServletException {
return null;
}

@Override
public Object getAttribute(String name) {
return null;
Expand All @@ -227,6 +238,11 @@ public int getContentLength() {
return 0;
}

@Override
public long getContentLengthLong() {
return 0;
}

@Override
public String getContentType() {
return null;
Expand Down
@@ -0,0 +1,36 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015, Red Hat, Inc., and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.weld.tests.contexts.session.availability;

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;

@RequestScoped
public class RequestScopedBean {

@Inject
SessionScopedBean sessionScopedBean;

public void increment(){
sessionScopedBean.increment();
}

public int getDataFromSession(){
return sessionScopedBean.getNumber();
}

}
@@ -0,0 +1,66 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015, Red Hat, Inc., and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.weld.tests.contexts.session.availability;

import java.io.IOException;
import java.net.URL;
import com.gargoylesoftware.htmlunit.WebClient;
import junit.framework.Assert;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.weld.tests.category.Integration;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;

/**
* @author Tomas Remes
*/
@RunWith(Arquillian.class)
@Category(Integration.class)
public class SessionAvailabilityTest {

@ArquillianResource
URL url;

private final WebClient client = new WebClient();

@Deployment(testable = false)
public static Archive<?> getDeployment() {
return ShrinkWrap.create(WebArchive.class).addPackage(SessionAvailabilityTest.class.getPackage()).addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
}

@Test
public void test() throws IOException {
// set data to session - increment int
String id1 = pageAsString("set=true");
//change session id
String id2 = pageAsString("change=true");
Assert.assertNotSame(id1, id2);
String p = pageAsString("print=true");
Assert.assertEquals(p, "1");
}

private String pageAsString(String param) throws IOException {
return client.getPage(url.toString() + "/test?" + param).getWebResponse().getContentAsString();
}
}
@@ -0,0 +1,34 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015, Red Hat, Inc., and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.weld.tests.contexts.session.availability;

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;

@SessionScoped
public class SessionScopedBean implements Serializable {

private int number = 0;

public void increment() {
number ++;
}

public int getNumber() {
return number;
}
}
@@ -0,0 +1,53 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015, Red Hat, Inc., and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.weld.tests.contexts.session.availability;

import java.io.IOException;
import javax.inject.Inject;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/test")
public class TestServlet extends HttpServlet {

@Inject
RequestScopedBean requestScopedBean;

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
boolean change = Boolean.valueOf(req.getParameter("change"));
boolean set = Boolean.valueOf(req.getParameter("set"));
boolean print = Boolean.valueOf(req.getParameter("print"));

if (set) {
requestScopedBean.increment();
resp.getWriter().print(req.getSession().getId());
}

if (change) {
resp.getWriter().print(req.changeSessionId());
}
if (print) {
resp.getWriter().print(requestScopedBean.getDataFromSession());
}
}

}



0 comments on commit 8503c42

Please sign in to comment.