-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[JBWS-3912]:Add throttling feature support test case using user defin…
…ed ThrottlingManager
- Loading branch information
Showing
10 changed files
with
276 additions
and
13 deletions.
There are no files selected for viewing
2 changes: 1 addition & 1 deletion
2
...in/java/org/jboss/wsf/stack/cxf/features/throttling/EndpointMetricsThrottlingManager.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...r/src/main/java/org/jboss/wsf/stack/cxf/features/throttling/JBossWSThrottlingFeature.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 9 additions & 0 deletions
9
modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/throttling/Hello.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package org.jboss.test.ws.jaxws.cxf.throttling; | ||
|
||
import jakarta.jws.WebService; | ||
|
||
@WebService(targetNamespace = "http://org.jboss.ws/jaxws/cxf/throttling/hello") | ||
public interface Hello | ||
{ | ||
String sayHello(String input); | ||
} |
19 changes: 19 additions & 0 deletions
19
...s/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/throttling/HelloImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package org.jboss.test.ws.jaxws.cxf.throttling; | ||
import jakarta.jws.WebService; | ||
import jakarta.xml.ws.WebServiceException; | ||
|
||
@WebService | ||
( | ||
serviceName = "HelloService", | ||
endpointInterface = "org.jboss.test.ws.jaxws.cxf.throttling.Hello", | ||
targetNamespace = "http://org.jboss.ws/jaxws/cxf/throttling/hello" | ||
) | ||
public class HelloImpl implements Hello | ||
{ | ||
public String sayHello(String input) { | ||
if (input.equals("error")) { | ||
throw new WebServiceException("Error input"); | ||
} | ||
return input; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
29 changes: 29 additions & 0 deletions
29
...cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/throttling/TestThrottlingManager.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package org.jboss.test.ws.jaxws.cxf.throttling; | ||
|
||
import java.util.Collections; | ||
import java.util.List; | ||
import org.apache.cxf.message.Message; | ||
import org.apache.cxf.phase.Phase; | ||
import org.apache.cxf.throttling.ThrottleResponse; | ||
import org.apache.cxf.throttling.ThrottlingManager; | ||
import org.jboss.wsf.spi.deployment.Endpoint; | ||
|
||
public class TestThrottlingManager extends ThrottleResponse implements ThrottlingManager { | ||
@Override | ||
public List<String> getDecisionPhases() { | ||
return Collections.singletonList(Phase.PRE_STREAM); | ||
} | ||
|
||
@Override | ||
public ThrottleResponse getThrottleResponse(String phase, Message m) { | ||
Endpoint endpoint = m.getExchange().get(Endpoint.class); | ||
if (endpoint != null) { | ||
if (endpoint.getEndpointMetrics().getFaultCount() >= 3) { | ||
this.setResponseCode(429); | ||
this.setDelay(200); | ||
return this; | ||
} | ||
} | ||
return null; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
137 changes: 137 additions & 0 deletions
137
...t/java/org/jboss/test/ws/jaxws/samples/wsse/policy/jaas/UsernameAuthorizationTestCase.bak
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
/* | ||
* JBoss, Home of Professional Open Source. | ||
* Copyright 2014, Red Hat Middleware LLC, and individual contributors | ||
* as indicated by the @author tags. See the copyright.txt file in the | ||
* distribution for a full listing of individual contributors. | ||
* | ||
* This is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU Lesser General Public License as | ||
* published by the Free Software Foundation; either version 2.1 of | ||
* the License, or (at your option) any later version. | ||
* | ||
* This software is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
* Lesser General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU Lesser General Public | ||
* License along with this software; if not, write to the Free | ||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | ||
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. | ||
*/ | ||
package org.jboss.test.ws.jaxws.samples.wsse.policy.jaas; | ||
|
||
import java.io.File; | ||
import java.net.URL; | ||
|
||
import javax.xml.namespace.QName; | ||
import javax.xml.ws.BindingProvider; | ||
import javax.xml.ws.Service; | ||
|
||
import org.apache.cxf.ws.security.SecurityConstants; | ||
import org.jboss.arquillian.container.test.api.Deployment; | ||
import org.jboss.arquillian.container.test.api.RunAsClient; | ||
import org.jboss.arquillian.junit.Arquillian; | ||
import org.jboss.arquillian.test.api.ArquillianResource; | ||
import org.jboss.shrinkwrap.api.ShrinkWrap; | ||
import org.jboss.shrinkwrap.api.asset.StringAsset; | ||
import org.jboss.shrinkwrap.api.exporter.ZipExporter; | ||
import org.jboss.shrinkwrap.api.spec.WebArchive; | ||
import org.jboss.wsf.test.JBossWSTest; | ||
import org.jboss.wsf.test.JBossWSTestHelper; | ||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
|
||
/** | ||
* WS-Security Policy username test case leveraging JAAS container integration. | ||
* WS-SecurityPolicy 1.2 used for policies in the included wsdl contract . | ||
* | ||
* @author alessio.soldano@jboss.com | ||
* @since 26-May-2011 | ||
*/ | ||
@RunWith(Arquillian.class) | ||
public final class UsernameAuthorizationTestCase extends JBossWSTest | ||
{ | ||
@ArquillianResource | ||
private URL baseURL; | ||
|
||
@Deployment(testable = false) | ||
public static WebArchive createDeployment() { | ||
WebArchive archive = ShrinkWrap.create(WebArchive.class, "jaxws-samples-wsse-policy-username-jaas.war"); | ||
archive | ||
.setManifest(new StringAsset("Manifest-Version: 1.0\n" | ||
+ "Dependencies: org.jboss.ws.cxf.jbossws-cxf-client\n")) | ||
.addClass(org.jboss.test.ws.jaxws.samples.wsse.policy.jaas.POJOEndpointAuthorizationInterceptor.class) | ||
.addClass(org.jboss.test.ws.jaxws.samples.wsse.policy.jaas.ServiceIface.class) | ||
.addClass(org.jboss.test.ws.jaxws.samples.wsse.policy.jaas.ServiceImpl.class) | ||
.addClass(org.jboss.test.ws.jaxws.samples.wsse.policy.jaxws.GreetMe.class) | ||
.addClass(org.jboss.test.ws.jaxws.samples.wsse.policy.jaxws.GreetMeResponse.class) | ||
.addClass(org.jboss.test.ws.jaxws.samples.wsse.policy.jaxws.SayHello.class) | ||
.addClass(org.jboss.test.ws.jaxws.samples.wsse.policy.jaxws.SayHelloResponse.class) | ||
.addAsWebInfResource(new File(JBossWSTestHelper.getTestResourcesDir() + "/jaxws/samples/wsse/policy/jaas/auth/WEB-INF/jaxws-endpoint-config.xml"), "jaxws-endpoint-config.xml") | ||
.addAsWebInfResource(new File(JBossWSTestHelper.getTestResourcesDir() + "/jaxws/samples/wsse/policy/jaas/auth/WEB-INF/jboss-web.xml"), "jboss-web.xml") | ||
.addAsWebInfResource(new File(JBossWSTestHelper.getTestResourcesDir() + "/jaxws/samples/wsse/policy/jaas/auth/WEB-INF/wsdl/SecurityService.wsdl"), "wsdl/SecurityService.wsdl") | ||
.addAsWebInfResource(new File(JBossWSTestHelper.getTestResourcesDir() + "/jaxws/samples/wsse/policy/jaas/auth/WEB-INF/wsdl/SecurityService_schema1.xsd"), "wsdl/SecurityService_schema1.xsd") | ||
.setWebXML(new File(JBossWSTestHelper.getTestResourcesDir() + "/jaxws/samples/wsse/policy/jaas/auth/WEB-INF/web.xml")); | ||
archive.as(ZipExporter.class).exportTo(new java.io.File("/home/jimma/tmp/jaxws-samples-wsse-policy-username-jaas.war"), true); | ||
return archive; | ||
} | ||
|
||
@Test | ||
@RunAsClient | ||
public void test() throws Exception | ||
{ | ||
QName serviceName = new QName("http://www.jboss.org/jbossws/ws-extensions/wssecuritypolicy", "SecurityService"); | ||
URL wsdlURL = new URL(baseURL + "/jaxws-samples-wsse-policy-username-jaas?wsdl"); | ||
Service service = Service.create(wsdlURL, serviceName); | ||
ServiceIface proxy = (ServiceIface)service.getPort(ServiceIface.class); | ||
setupWsse(proxy, "kermit"); | ||
assertEquals("Secure Hello World!", proxy.sayHello()); | ||
} | ||
|
||
@Test | ||
@RunAsClient | ||
public void testUnauthenticated() throws Exception | ||
{ | ||
QName serviceName = new QName("http://www.jboss.org/jbossws/ws-extensions/wssecuritypolicy", "SecurityService"); | ||
URL wsdlURL = new URL(baseURL + "/jaxws-samples-wsse-policy-username-jaas?wsdl"); | ||
Service service = Service.create(wsdlURL, serviceName); | ||
ServiceIface proxy = (ServiceIface)service.getPort(ServiceIface.class); | ||
setupWsse(proxy, "snoopy"); | ||
try | ||
{ | ||
proxy.sayHello(); | ||
fail("User snoopy shouldn't be authenticated."); | ||
} | ||
catch (Exception e) | ||
{ | ||
//OK | ||
} | ||
} | ||
|
||
@Test | ||
@RunAsClient | ||
public void testUnauthorized() throws Exception | ||
{ | ||
QName serviceName = new QName("http://www.jboss.org/jbossws/ws-extensions/wssecuritypolicy", "SecurityService"); | ||
URL wsdlURL = new URL(baseURL + "/jaxws-samples-wsse-policy-username-jaas?wsdl"); | ||
Service service = Service.create(wsdlURL, serviceName); | ||
ServiceIface proxy = (ServiceIface)service.getPort(ServiceIface.class); | ||
setupWsse(proxy, "kermit"); | ||
try | ||
{ | ||
proxy.greetMe(); | ||
fail("User kermit shouldn't be authorized to call greetMe()."); | ||
} | ||
catch (Exception e) | ||
{ | ||
assertEquals("Unauthorized", e.getMessage()); | ||
} | ||
} | ||
|
||
private void setupWsse(ServiceIface proxy, String username) | ||
{ | ||
((BindingProvider)proxy).getRequestContext().put(SecurityConstants.USERNAME, username); | ||
((BindingProvider)proxy).getRequestContext().put(SecurityConstants.CALLBACK_HANDLER, "org.jboss.test.ws.jaxws.samples.wsse.policy.jaas.UsernamePasswordCallback"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters