Author: coheigea
Date: Tue Apr 21 13:33:46 2009
New Revision: 767142
URL: http://svn.apache.org/viewvc?rev=767142&view=rev
Log:
[WSS-147] - Added a "checkReceiverResultsAnyOrder" method to WSHandler.
- Applications can use this instead of checkReceiverResults if they want...I'm
not changing the Axis Handlers to use it though.
Added:
webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java (with
props)
Modified:
webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
webservices/wss4j/trunk/test/wssec/PackageTests.java
Modified:
webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
URL:
http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java?rev=767142&r1=767141&r2=767142&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
(original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
Tue Apr 21 13:33:46 2009
@@ -302,6 +302,33 @@
return true;
}
+
+ protected boolean checkReceiverResultsAnyOrder(Vector wsResult, Vector
actions) {
+ int resultActions = wsResult.size();
+ Vector actionsClone = (Vector)actions.clone();
+
+ for (int i = 0; i < resultActions; i++) {
+ final Integer actInt = (Integer) ((WSSecurityEngineResult) wsResult
+ .get(i)).get(WSSecurityEngineResult.TAG_ACTION);
+ int act = actInt.intValue();
+ if (act == WSConstants.SC || act == WSConstants.BST) {
+ continue;
+ }
+
+ int foundIndex = actionsClone.indexOf(actInt);
+ if (foundIndex == -1) {
+ return false;
+ } else {
+ actionsClone.remove(foundIndex);
+ }
+ }
+
+ if (!actionsClone.isEmpty()) {
+ return false;
+ }
+
+ return true;
+ }
protected void checkSignatureConfirmation(RequestData reqData,
Vector wsResult) throws WSSecurityException{
Modified: webservices/wss4j/trunk/test/wssec/PackageTests.java
URL:
http://svn.apache.org/viewvc/webservices/wss4j/trunk/test/wssec/PackageTests.java?rev=767142&r1=767141&r2=767142&view=diff
==============================================================================
--- webservices/wss4j/trunk/test/wssec/PackageTests.java (original)
+++ webservices/wss4j/trunk/test/wssec/PackageTests.java Tue Apr 21 13:33:46
2009
@@ -71,6 +71,7 @@
suite.addTestSuite(TestWSSecurityKerberosTokenProfile.class);
suite.addTestSuite(TestWSSecurityTimestamp.class);
suite.addTestSuite(SignatureKeyValueTest.class);
+ suite.addTestSuite(TestWSSecurityResultsOrder.class);
return suite;
}
Added: webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java
URL:
http://svn.apache.org/viewvc/webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java?rev=767142&view=auto
==============================================================================
--- webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java (added)
+++ webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java Tue Apr
21 13:33:46 2009
@@ -0,0 +1,306 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 wssec;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.handler.WSHandler;
+
+
+/**
+ * This is a test for WSS-147. A "checkReceiverResultsAnyOrder" method is
added to WSHandler
+ * which applications can use if they want.
+ */
+public class TestWSSecurityResultsOrder extends TestCase {
+
+ /**
+ * TestWSSecurity constructor
+ * <p/>
+ *
+ * @param name name of the test
+ */
+ public TestWSSecurityResultsOrder(String name) {
+ super(name);
+ }
+
+ /**
+ * JUnit suite
+ * <p/>
+ *
+ * @return a junit test suite
+ */
+ public static Test suite() {
+ return new TestSuite(TestWSSecurityResultsOrder.class);
+ }
+
+ /**
+ */
+ public void
+ testOrder() throws Exception {
+ MyHandler handler = new MyHandler();
+
+ java.util.Vector results = new java.util.Vector();
+ results.add(
+ new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SIGN, (Object)null)
+ );
+
+ java.util.Vector actions = new java.util.Vector();
+ actions.add(new Integer(WSConstants.UT));
+ actions.add(new Integer(WSConstants.TS));
+ actions.add(new Integer(WSConstants.SIGN));
+
+ assertTrue (handler.checkResults(results, actions));
+ assertTrue (handler.checkResultsAnyOrder(results, actions));
+ }
+
+ /**
+ */
+ public void
+ testReverseOrder() throws Exception {
+ MyHandler handler = new MyHandler();
+
+ java.util.Vector results = new java.util.Vector();
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SIGN, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+ );
+
+ java.util.Vector actions = new java.util.Vector();
+ actions.add(new Integer(WSConstants.UT));
+ actions.add(new Integer(WSConstants.TS));
+ actions.add(new Integer(WSConstants.SIGN));
+
+ assertFalse (handler.checkResults(results, actions));
+ assertTrue (handler.checkResultsAnyOrder(results, actions));
+ }
+
+ /**
+ */
+ public void
+ testMixedOrder() throws Exception {
+ MyHandler handler = new MyHandler();
+
+ java.util.Vector results = new java.util.Vector();
+ results.add(
+ new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SIGN, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+ );
+
+ java.util.Vector actions = new java.util.Vector();
+ actions.add(new Integer(WSConstants.UT));
+ actions.add(new Integer(WSConstants.TS));
+ actions.add(new Integer(WSConstants.SIGN));
+
+ assertFalse (handler.checkResults(results, actions));
+ assertTrue (handler.checkResultsAnyOrder(results, actions));
+ assertFalse (actions.isEmpty());
+ }
+
+ /**
+ */
+ public void
+ testMixedOrder2() throws Exception {
+ MyHandler handler = new MyHandler();
+
+ java.util.Vector results = new java.util.Vector();
+ results.add(
+ new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SIGN, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+ );
+
+ java.util.Vector actions = new java.util.Vector();
+ actions.add(new Integer(WSConstants.SIGN));
+ actions.add(new Integer(WSConstants.UT));
+ actions.add(new Integer(WSConstants.TS));
+
+ assertFalse (handler.checkResults(results, actions));
+ assertTrue (handler.checkResultsAnyOrder(results, actions));
+ }
+
+ /**
+ */
+ public void
+ testMissingResult() throws Exception {
+ MyHandler handler = new MyHandler();
+
+ java.util.Vector results = new java.util.Vector();
+ results.add(
+ new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+ );
+
+ java.util.Vector actions = new java.util.Vector();
+ actions.add(new Integer(WSConstants.TS));
+ actions.add(new Integer(WSConstants.UT));
+ actions.add(new Integer(WSConstants.SIGN));
+
+ assertFalse (handler.checkResults(results, actions));
+ assertFalse (handler.checkResultsAnyOrder(results, actions));
+ }
+
+ /**
+ */
+ public void
+ testMissingAction() throws Exception {
+ MyHandler handler = new MyHandler();
+
+ java.util.Vector results = new java.util.Vector();
+ results.add(
+ new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SIGN, (Object)null)
+ );
+ results.add(
+ new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+ );
+
+ java.util.Vector actions = new java.util.Vector();
+ actions.add(new Integer(WSConstants.TS));
+ actions.add(new Integer(WSConstants.UT));
+
+ assertFalse (handler.checkResults(results, actions));
+ assertFalse (handler.checkResultsAnyOrder(results, actions));
+ }
+
+ /**
+ */
+ public void
+ testNoResult() throws Exception {
+ MyHandler handler = new MyHandler();
+
+ java.util.Vector results = new java.util.Vector();
+
+ java.util.Vector actions = new java.util.Vector();
+ actions.add(new Integer(WSConstants.TS));
+
+ assertFalse (handler.checkResults(results, actions));
+ assertFalse (handler.checkResultsAnyOrder(results, actions));
+ }
+
+ /**
+ */
+ public void
+ testNoAction() throws Exception {
+ MyHandler handler = new MyHandler();
+
+ java.util.Vector results = new java.util.Vector();
+ results.add(
+ new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+ );
+
+ java.util.Vector actions = new java.util.Vector();
+
+ assertFalse (handler.checkResults(results, actions));
+ assertFalse (handler.checkResultsAnyOrder(results, actions));
+ }
+
+ /**
+ * a trivial extension of the WSHandler type
+ */
+ public static class MyHandler extends WSHandler {
+
+ public Object
+ getOption(String key) {
+ return null;
+ }
+
+ public void
+ setProperty(
+ Object msgContext,
+ String key,
+ Object value
+ ) {
+ }
+
+ public Object
+ getProperty(Object ctx, String key) {
+ return null;
+ }
+
+ public void
+ setPassword(Object msgContext, String password) {
+ }
+
+ public String
+ getPassword(Object msgContext) {
+ return null;
+ }
+
+ boolean checkResults(
+ java.util.Vector results,
+ java.util.Vector actions
+ ) throws org.apache.ws.security.WSSecurityException {
+ return checkReceiverResults(results, actions);
+ }
+
+ boolean checkResultsAnyOrder(
+ java.util.Vector results,
+ java.util.Vector actions
+ ) throws org.apache.ws.security.WSSecurityException {
+ return checkReceiverResultsAnyOrder(results, actions);
+ }
+ }
+
+}
Propchange: webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]