Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 67c5d9c

Browse files
authored
Merge pull request javaee-samples#355 from arjantijms/master
Added JASPIC test for CDI bean called from SAM using injected request
2 parents e6200f8 + d25a239 commit 67c5d9c

File tree

3 files changed

+50
-6
lines changed

3 files changed

+50
-6
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
package org.javaee7.jaspic.invoke.bean;
22

33
import javax.enterprise.context.RequestScoped;
4+
import javax.inject.Inject;
45
import javax.inject.Named;
6+
import javax.servlet.http.HttpServletRequest;
57

68
@Named
79
@RequestScoped
810
public class CDIBean {
11+
12+
@Inject
13+
private HttpServletRequest request;
914

1015
public String getText() {
1116
return "Called from CDI";
1217
}
1318

19+
public void setTextViaInjectedRequest() {
20+
request.setAttribute("text", "Called from CDI via injected request");
21+
}
22+
1423
}

jaspic/invoke-ejb-cdi/src/main/java/org/javaee7/jaspic/invoke/sam/TestServerAuthModule.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject
5454
HttpServletResponse response = (HttpServletResponse) messageInfo.getResponseMessage();
5555

5656
if ("cdi".equals(request.getParameter("tech"))) {
57-
callCDIBean(response, "validateRequest");
57+
callCDIBean(request, response, "validateRequest");
5858
} else if ("ejb".equals(request.getParameter("tech"))) {
5959
callEJBBean(response, "validateRequest");
6060
}
@@ -84,7 +84,7 @@ public AuthStatus secureResponse(MessageInfo messageInfo, Subject serviceSubject
8484
HttpServletResponse response = (HttpServletResponse) messageInfo.getResponseMessage();
8585

8686
if ("cdi".equals(request.getParameter("tech"))) {
87-
callCDIBean(response, "secureResponse");
87+
callCDIBean(request, response, "secureResponse");
8888
} else if ("ejb".equals(request.getParameter("tech"))) {
8989
callEJBBean(response, "secureResponse");
9090
}
@@ -99,16 +99,21 @@ public void cleanSubject(MessageInfo messageInfo, Subject subject) throws AuthEx
9999
HttpServletResponse response = (HttpServletResponse) messageInfo.getResponseMessage();
100100

101101
if ("cdi".equals(request.getParameter("tech"))) {
102-
callCDIBean(response, "cleanSubject");
102+
callCDIBean(request, response, "cleanSubject");
103103
} else if ("ejb".equals(request.getParameter("tech"))) {
104104
callEJBBean(response, "cleanSubject");
105105
}
106106
}
107107

108-
private void callCDIBean(HttpServletResponse response, String phase) {
108+
private void callCDIBean(HttpServletRequest request, HttpServletResponse response, String phase) {
109109
try {
110110
CDIBean cdiBean = CDI.current().select(CDIBean.class).get();
111-
response.getWriter().write(phase + ": " + cdiBean.getText());
111+
response.getWriter().write(phase + ": " + cdiBean.getText() + "\n");
112+
113+
cdiBean.setTextViaInjectedRequest();
114+
115+
response.getWriter().write(phase + ": " + request.getAttribute("text")+ "\n");
116+
112117
} catch (Exception e) {
113118
logger.log(SEVERE, "", e);
114119
}
@@ -117,7 +122,7 @@ private void callCDIBean(HttpServletResponse response, String phase) {
117122
private void callEJBBean(HttpServletResponse response, String phase) {
118123
try {
119124
EJBBean ejbBean = (EJBBean) new InitialContext().lookup("java:module/EJBBean");
120-
response.getWriter().write(phase + ": " + ejbBean.getText());
125+
response.getWriter().write(phase + ": " + ejbBean.getText() + "\n");
121126
} catch (Exception e) {
122127
logger.log(SEVERE, "", e);
123128
}

jaspic/invoke-ejb-cdi/src/test/java/org/javaee7/jaspictest/invoke/InvokeCDIBeanPublicTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,35 @@ public void publicInvokeCDIFromSecureResponse() {
5656
response.contains("secureResponse: Called from CDI")
5757
);
5858
}
59+
60+
@Test
61+
public void publicInvokeCDIUseInjectedRequestFromValidateRequest() {
62+
String response = getFromServerPath("public/servlet?tech=cdi");
63+
64+
assertTrue(
65+
"Response did not contain output from CDI bean using an inject request for validateRequest for public resource. (note: this is not required by the spec)",
66+
response.contains("validateRequest: Called from CDI via injected request")
67+
);
68+
}
69+
70+
@Test
71+
public void publicInvokeCDIUseInjectedRequestFromCleanSubject() {
72+
String response = getFromServerPath("public/servlet?tech=cdi");
73+
74+
assertTrue(
75+
"Response did not contain output from CDI bean using an inject request for cleanSubject for public resource. (note: this is not required by the spec)",
76+
response.contains("cleanSubject: Called from CDI via injected request")
77+
);
78+
}
79+
80+
@Test
81+
public void publicInvokeCDIUseInjectedRequestFromSecureResponse() {
82+
String response = getFromServerPath("public/servlet?tech=cdi");
83+
84+
assertTrue(
85+
"Response did not contain output from CDI bean using an inject request for secureResponse for public resource. (note: this is not required by the spec)",
86+
response.contains("secureResponse: Called from CDI via injected request")
87+
);
88+
}
5989

6090
}

0 commit comments

Comments
 (0)