You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by an...@apache.org on 2007/02/28 10:29:45 UTC

svn commit: r512674 [2/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/service/model/ api/src/main/java/org/apache/cxf/ws/policy/ rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/...

Added: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyInfoTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyInfoTest.java?view=auto&rev=512674
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyInfoTest.java (added)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyInfoTest.java Wed Feb 28 01:29:43 2007
@@ -0,0 +1,345 @@
+/**
+ * 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 org.apache.cxf.ws.policy;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.helpers.CastUtils;
+import org.apache.cxf.interceptor.Interceptor;
+import org.apache.cxf.service.model.BindingFaultInfo;
+import org.apache.cxf.service.model.BindingInfo;
+import org.apache.cxf.service.model.BindingMessageInfo;
+import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.neethi.All;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.ExactlyOne;
+import org.apache.neethi.Policy;
+import org.easymock.classextension.EasyMock;
+import org.easymock.classextension.IMocksControl;
+
+/**
+ * 
+ */
+public class EndpointPolicyInfoTest extends TestCase {
+
+    private IMocksControl control;
+    
+    public void setUp() {
+        control = EasyMock.createNiceControl();        
+    } 
+    
+    public void testAccessors() {
+        EndpointPolicyInfo epi = new EndpointPolicyInfo();
+        assertNull(epi.getPolicy());
+        assertNull(epi.getChosenAlternative());
+        assertNull(epi.getInInterceptors());
+        assertNull(epi.getInFaultInterceptors());
+        assertNull(epi.getVocabulary());
+        assertNull(epi.getFaultVocabulary());
+        
+        Policy p = control.createMock(Policy.class);
+        Assertion a = control.createMock(Assertion.class);
+        List<Assertion> la = Collections.singletonList(a);
+        Interceptor i = control.createMock(Interceptor.class);
+        List<Interceptor> li = Collections.singletonList(i);
+        control.replay();
+        epi.setPolicy(p);
+        assertSame(p, epi.getPolicy());
+        epi.setChosenAlternative(la);
+        assertSame(la, epi.getChosenAlternative());
+        epi.setInInterceptors(li);
+        assertSame(li, epi.getInInterceptors());
+        epi.setInFaultInterceptors(li);
+        assertSame(li, epi.getInFaultInterceptors());
+        epi.setVocabulary(la);
+        assertSame(la, epi.getVocabulary());
+        epi.setFaultVocabulary(la);
+        assertSame(la, epi.getFaultVocabulary());
+        control.verify();
+    }
+    
+    public void testInitialise() throws NoSuchMethodException {
+        Method m1 = EndpointPolicyInfo.class.getDeclaredMethod("initialisePolicy",
+            new Class[] {EndpointInfo.class, PolicyEngine.class});
+        Method m2 = EndpointPolicyInfo.class.getDeclaredMethod("chooseAlternative",
+            new Class[] {PolicyEngine.class, Assertor.class});
+        Method m3 = EndpointPolicyInfo.class.getDeclaredMethod("initialiseVocabulary",
+            new Class[] {EndpointInfo.class, boolean.class, PolicyEngine.class});
+        Method m4 = EndpointPolicyInfo.class.getDeclaredMethod("initialiseInterceptors",
+            new Class[] {EndpointInfo.class, boolean.class, PolicyEngine.class});
+        EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class, 
+                                                    new Method[] {m1, m2, m3, m4});
+        EndpointInfo ei = control.createMock(EndpointInfo.class);
+        boolean isServer = true;
+        PolicyEngine pe = control.createMock(PolicyEngine.class);
+        Assertor a = control.createMock(Assertor.class);
+         
+        epi.initialisePolicy(ei, pe);
+        EasyMock.expectLastCall();
+        epi.chooseAlternative(pe, a);
+        EasyMock.expectLastCall();
+        epi.initialiseInterceptors(ei, isServer, pe); 
+        EasyMock.expectLastCall();
+        
+        control.replay();
+        epi.initialise(ei, isServer, pe, a);
+        control.verify();        
+    }
+    
+    public void testInitialisePolicy() {        
+        EndpointInfo ei = control.createMock(EndpointInfo.class);
+        PolicyEngine engine = control.createMock(PolicyEngine.class);
+        ServiceInfo si = control.createMock(ServiceInfo.class);
+        EasyMock.expect(ei.getService()).andReturn(si);
+        Policy sp = control.createMock(Policy.class);
+        EasyMock.expect(engine.getAggregatedServicePolicy(si)).andReturn(sp);
+        Policy ep = control.createMock(Policy.class);
+        EasyMock.expect(engine.getAggregatedEndpointPolicy(ei)).andReturn(ep);
+        Policy merged = control.createMock(Policy.class);
+        EasyMock.expect(sp.merge(ep)).andReturn(merged);
+        EasyMock.expect(merged.normalize(true)).andReturn(merged);
+        
+        control.replay();
+        EndpointPolicyInfo epi = new EndpointPolicyInfo();
+        epi.initialisePolicy(ei, engine);
+        assertSame(merged, epi.getPolicy());
+        control.verify();
+    }
+       
+    public void testChooseAlternative() {
+        EndpointPolicyInfo cpi = new EndpointPolicyInfo();
+        cpi.setPolicy(new Policy());
+        
+        PolicyEngine engine = control.createMock(PolicyEngine.class);
+        Assertor assertor = control.createMock(Assertor.class);
+               
+        Policy policy = new Policy();
+        ExactlyOne ea = new ExactlyOne();
+        All all = new All();
+        Assertion a1 = new TestAssertion(); 
+        all.addAssertion(a1);
+        ea.addPolicyComponent(all);
+        List<Assertion> firstAlternative = CastUtils.cast(all.getPolicyComponents(), Assertion.class);
+        policy.addPolicyComponent(ea);
+        cpi.setPolicy(policy);
+        
+        EasyMock.expect(engine.supportsAlternative(firstAlternative, assertor)).andReturn(false);
+        control.replay();
+        try {
+            cpi.chooseAlternative(engine, assertor);  
+            fail("Expected PolicyException not thrown.");
+        } catch (PolicyException ex) {
+            // expected
+        }
+        control.verify();
+        
+        control.reset();        
+        EasyMock.expect(engine.supportsAlternative(firstAlternative, assertor)).andReturn(true);
+        control.replay();        
+        cpi.chooseAlternative(engine, assertor); 
+        
+        Collection<Assertion> chosen = cpi.getChosenAlternative();
+        assertSame(1, chosen.size());
+        assertSame(chosen.size(), firstAlternative.size());
+        assertSame(chosen.iterator().next(), firstAlternative.get(0));
+        
+        // assertSame(cpi.getChosenAlternative(), firstAlternative);
+        control.verify();
+        
+        control.reset();
+        All other = new All();
+        other.addAssertion(a1);
+        ea.addPolicyComponent(other);
+        List<Assertion> secondAlternative = CastUtils.cast(other.getPolicyComponents(), Assertion.class);
+        EasyMock.expect(engine.supportsAlternative(firstAlternative, assertor)).andReturn(false);
+        EasyMock.expect(engine.supportsAlternative(secondAlternative, assertor)).andReturn(true);
+        control.replay();        
+        cpi.chooseAlternative(engine, assertor); 
+        chosen = cpi.getChosenAlternative();
+        assertSame(1, chosen.size());
+        assertSame(chosen.size(), secondAlternative.size());
+        assertSame(chosen.iterator().next(), secondAlternative.get(0));
+        control.verify();
+    }
+    
+    public void testInitialiseVocabularyServer() {
+        dotestInitialiseVocabulary(false);
+    }
+    
+    public void testInitialiseVocabularyClient() {
+        dotestInitialiseVocabulary(true);
+    }
+    
+    private void dotestInitialiseVocabulary(boolean requestor) {
+        EndpointPolicyInfo epi = new EndpointPolicyInfo();   
+        List<Assertion> alternative = new ArrayList<Assertion>();
+        epi.setChosenAlternative(alternative);
+        Assertion ea = control.createMock(Assertion.class);        
+        alternative.add(ea);
+        EasyMock.expect(ea.isOptional()).andReturn(false);
+        Assertion eaOpt = control.createMock(Assertion.class);        
+        alternative.add(eaOpt);
+        EasyMock.expect(eaOpt.isOptional()).andReturn(true);
+        
+        EndpointInfo ei = control.createMock(EndpointInfo.class);
+        BindingInfo bi = control.createMock(BindingInfo.class);
+        EasyMock.expect(ei.getBinding()).andReturn(bi);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        EasyMock.expect(bi.getOperations()).andReturn(Collections.singletonList(boi));
+        PolicyEngine engine = control.createMock(PolicyEngine.class);
+        Policy op = control.createMock(Policy.class);
+        EasyMock.expect(engine.getAggregatedOperationPolicy(boi)).andReturn(op);
+        Assertion oa = control.createMock(Assertion.class);
+        EasyMock.expect(engine.getAssertions(op, false)).andReturn(Collections.singletonList(oa));
+        BindingMessageInfo bmi = control.createMock(BindingMessageInfo.class);
+        if (requestor) {
+            EasyMock.expect(boi.getOutput()).andReturn(bmi).times(2);
+        } else {
+            EasyMock.expect(boi.getInput()).andReturn(bmi);
+        }
+        Policy mp = control.createMock(Policy.class);
+        EasyMock.expect(engine.getAggregatedMessagePolicy(bmi)).andReturn(mp);
+        Assertion ma = control.createMock(Assertion.class);
+        EasyMock.expect(engine.getAssertions(mp, false)).andReturn(Collections.singletonList(ma));
+        Assertion fa = null;
+        if (requestor) {
+            BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
+            EasyMock.expect(boi.getFaults()).andReturn(Collections.singletonList(bfi));
+            Policy fp = control.createMock(Policy.class);
+            EasyMock.expect(engine.getAggregatedFaultPolicy(bfi)).andReturn(fp);
+            fa = control.createMock(Assertion.class);
+            EasyMock.expect(engine.getAssertions(fp, false)).andReturn(Collections.singletonList(fa));
+        }
+        
+        control.replay();
+        epi.initialiseVocabulary(ei, requestor, engine);
+        Collection<Assertion> expected = new ArrayList<Assertion>();
+        expected.add(ea);
+        expected.add(oa);
+        expected.add(ma);
+        verifyVocabulary(expected, epi.getVocabulary());
+        if (requestor) {
+            expected.remove(ma);
+            expected.add(fa);
+            verifyVocabulary(expected, epi.getFaultVocabulary());
+            // 
+        } else {
+            assertNull(epi.getFaultVocabulary());
+        }
+          
+        control.verify();          
+    }
+    
+    private void verifyVocabulary(Collection<Assertion> expected, Collection<Assertion> actual) {
+        
+        assertEquals(expected.size(), actual.size());
+        for (Iterator<Assertion> i = expected.iterator(); i.hasNext();) {
+            Assertion e = i.next();
+            Iterator<Assertion> j = actual.iterator();
+            boolean eFound = false;
+            while (j.hasNext()) {
+                if (e == j.next()) {
+                    eFound = true;
+                    break;
+                }              
+            }
+            assertTrue("Expected assertion not found.", eFound);
+        }
+    }
+    
+    public void testInitialiseInterceptorsServer() {
+        doTestInitialiseInterceptors(false);
+    }
+    
+    public void testInitialiseInterceptorsClient() {
+        doTestInitialiseInterceptors(true);
+    }
+    
+    private void doTestInitialiseInterceptors(boolean requestor) {
+        EndpointPolicyInfo epi = new EndpointPolicyInfo();        
+        Collection<Assertion> v = new ArrayList<Assertion>();
+        Collection<Assertion> fv = new ArrayList<Assertion>();
+        Assertion a = control.createMock(Assertion.class);        
+        v.add(a);
+        QName aqn = new QName("http://x.y.z", "a");
+        EasyMock.expect(a.getName()).andReturn(aqn).times(requestor ? 2 : 1);
+        Assertion aa = control.createMock(Assertion.class);        
+        v.add(aa);
+        EasyMock.expect(aa.getName()).andReturn(aqn).times(requestor ? 2 : 1);
+        fv.addAll(v);
+        epi.setVocabulary(v);
+        epi.setFaultVocabulary(fv);
+        
+        EndpointInfo ei = control.createMock(EndpointInfo.class);
+        PolicyEngine engine = control.createMock(PolicyEngine.class);
+        PolicyInterceptorProviderRegistry reg = control.createMock(PolicyInterceptorProviderRegistry.class);
+        setupPolicyInterceptorProviderRegistry(engine, reg);
+        
+        PolicyInterceptorProvider app = control.createMock(PolicyInterceptorProvider.class);               
+        EasyMock.expect(reg.get(aqn)).andReturn(app).times(requestor ? 2 : 1);
+        Interceptor api = control.createMock(Interceptor.class);
+        EasyMock.expect(app.getInInterceptors())
+            .andReturn(Collections.singletonList(api));
+        if (requestor) {
+            EasyMock.expect(app.getInFaultInterceptors())
+                .andReturn(Collections.singletonList(api));
+        }
+        
+        control.replay();
+        epi.initialiseInterceptors(ei, requestor, engine);
+        assertEquals(1, epi.getInInterceptors().size());
+        assertSame(api, epi.getInInterceptors().get(0));
+        if (requestor) {
+            assertEquals(1, epi.getInFaultInterceptors().size());
+            assertSame(api, epi.getInFaultInterceptors().get(0));
+        } else {
+            assertNull(epi.getInFaultInterceptors());
+        }
+        control.verify();          
+    }
+    
+    private void setupPolicyInterceptorProviderRegistry(PolicyEngine engine, 
+                                                        PolicyInterceptorProviderRegistry reg) {
+        Bus bus = control.createMock(Bus.class);        
+        EasyMock.expect(engine.getBus()).andReturn(bus);
+        EasyMock.expect(bus.getExtension(PolicyInterceptorProviderRegistry.class)).andReturn(reg);
+    }
+    
+    public void testCheckEffectivePolicy() {
+        
+    }
+    
+    public void testCheckeffectiveFaultPolicy() {
+        
+    }
+  
+}

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyInfoTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyInfoTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/OutPolicyInfoTest.java (from r510865, incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/ClientPolicyInfoTest.java)
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/OutPolicyInfoTest.java?view=diff&rev=512674&p1=incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/ClientPolicyInfoTest.java&r1=510865&p2=incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/OutPolicyInfoTest.java&r2=512674
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/ClientPolicyInfoTest.java (original)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/OutPolicyInfoTest.java Wed Feb 28 01:29:43 2007
@@ -19,7 +19,9 @@
 
 package org.apache.cxf.ws.policy;
 
+import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
@@ -28,12 +30,15 @@
 import junit.framework.TestCase;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.interceptor.Interceptor;
+import org.apache.cxf.service.model.BindingFaultInfo;
 import org.apache.cxf.service.model.BindingMessageInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
-import org.apache.cxf.service.model.EndpointInfo;
-import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.transport.Conduit;
+import org.apache.cxf.transport.Destination;
+import org.apache.cxf.ws.policy.builder.primitive.PrimitiveAssertion;
 import org.apache.neethi.All;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.ExactlyOne;
@@ -44,7 +49,7 @@
 /**
  * 
  */
-public class ClientPolicyInfoTest extends TestCase {
+public class OutPolicyInfoTest extends TestCase {
 
     private IMocksControl control;
     
@@ -53,55 +58,152 @@
     } 
     
     public void testAccessors() {
-        ClientRequestPolicyInfo crpi = new ClientRequestPolicyInfo();
+        OutPolicyInfo opi = new OutPolicyInfo();
+        assertNull(opi.getPolicy());
+        assertNull(opi.getChosenAlternative());
+        assertNull(opi.getInterceptors());
+        
         Policy p = control.createMock(Policy.class);
         Assertion a = control.createMock(Assertion.class);
         List<Assertion> la = Collections.singletonList(a);
         Interceptor i = control.createMock(Interceptor.class);
         List<Interceptor> li = Collections.singletonList(i);
         control.replay();
-        crpi.setRequestPolicy(p);
-        assertSame(p, crpi.getRequestPolicy());
-        crpi.setChosenAlternative(la);
-        assertSame(la, crpi.getChosenAlternative());
-        crpi.setOutInterceptors(li);
-        assertSame(li, crpi.getOutInterceptors());
+        opi.setPolicy(p);
+        assertSame(p, opi.getPolicy());
+        opi.setChosenAlternative(la);
+        assertSame(la, opi.getChosenAlternative());
+        opi.setInterceptors(li);
+        assertSame(li, opi.getInterceptors());
         control.verify();
     }
     
-    public void testInitialiseRequestPolicy() {
+    public void testInitialise() throws NoSuchMethodException {
+        Method m1 = OutPolicyInfo.class.getDeclaredMethod("initialisePolicy",
+            new Class[] {Endpoint.class, BindingOperationInfo.class, PolicyEngine.class, boolean.class});
+        Method m2 = OutPolicyInfo.class.getDeclaredMethod("chooseAlternative",
+            new Class[] {PolicyEngine.class, Assertor.class});
+        Method m3 = OutPolicyInfo.class.getDeclaredMethod("initialiseInterceptors",
+                                                          new Class[] {PolicyEngine.class});
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class, new Method[] {m1, m2, m3});
+        
+        Endpoint e = control.createMock(Endpoint.class);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        PolicyEngine pe = control.createMock(PolicyEngine.class);
+        Assertor a = control.createMock(Assertor.class);
+        boolean requestor = true;
+       
+        opi.initialisePolicy(e, boi, pe, requestor);
+        EasyMock.expectLastCall();
+        opi.chooseAlternative(pe, a);
+        EasyMock.expectLastCall();
+        opi.initialiseInterceptors(pe);
+        EasyMock.expectLastCall();
+        
+        control.replay();
+        opi.initialise(e, boi, pe, a, requestor);
+        control.verify();        
+    }
+    
+    public void testInitialiseFault() throws NoSuchMethodException {
+        Method m1 = OutPolicyInfo.class.getDeclaredMethod("initialisePolicy",
+            new Class[] {Endpoint.class, BindingFaultInfo.class, PolicyEngine.class});
+        Method m2 = OutPolicyInfo.class.getDeclaredMethod("chooseAlternative",
+            new Class[] {PolicyEngine.class, Assertor.class});
+        Method m3 = OutPolicyInfo.class.getDeclaredMethod("initialiseInterceptors",
+                                                          new Class[] {PolicyEngine.class});
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class, new Method[] {m1, m2, m3});
+        
+        Endpoint e = control.createMock(Endpoint.class);
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
+        PolicyEngine pe = control.createMock(PolicyEngine.class);
+        Assertor a = control.createMock(Assertor.class);
+       
+        opi.initialisePolicy(e, bfi, pe);
+        EasyMock.expectLastCall();
+        opi.chooseAlternative(pe, a);
+        EasyMock.expectLastCall();
+        opi.initialiseInterceptors(pe);
+        EasyMock.expectLastCall();
+        
+        control.replay();
+        opi.initialise(e, bfi, pe, a);
+        control.verify();        
+    }
+    
+    public void testInitialiseClientPolicy() {  
+        doTestInitialisePolicy(true);
+    }
+    
+    public void testInitialiseServerPolicy() {  
+        doTestInitialisePolicy(false);
+    }
+    
+    private void doTestInitialisePolicy(boolean requestor) {        
+        Endpoint e = control.createMock(Endpoint.class);
         BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
-        EndpointInfo ei = control.createMock(EndpointInfo.class);
-        ServiceInfo si = control.createMock(ServiceInfo.class);
-        BindingMessageInfo bmi = control.createMock(BindingMessageInfo.class);
         PolicyEngine engine = control.createMock(PolicyEngine.class);
-           
-        EasyMock.expect(boi.getInput()).andReturn(bmi);
+        BindingMessageInfo bmi = control.createMock(BindingMessageInfo.class);
+        if (requestor) {
+            EasyMock.expect(boi.getInput()).andReturn(bmi);
+        } else {
+            EasyMock.expect(boi.getOutput()).andReturn(bmi);
+        }
+                
+        EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class);
+        if (requestor) {
+            EasyMock.expect(engine.getEndpointPolicyInfo(e, (Conduit)null)).andReturn(epi);
+        } else {
+            EasyMock.expect(engine.getEndpointPolicyInfo(e, (Destination)null)).andReturn(epi);
+        }
+        Policy ep = control.createMock(Policy.class);
+        EasyMock.expect(epi.getPolicy()).andReturn(ep);        
+        Policy op = control.createMock(Policy.class);
+        EasyMock.expect(engine.getAggregatedOperationPolicy(boi)).andReturn(op);
+        Policy merged = control.createMock(Policy.class);
+        EasyMock.expect(ep.merge(op)).andReturn(merged);
         Policy mp = control.createMock(Policy.class);
         EasyMock.expect(engine.getAggregatedMessagePolicy(bmi)).andReturn(mp);
+        EasyMock.expect(merged.merge(mp)).andReturn(merged);
+        EasyMock.expect(merged.normalize(true)).andReturn(merged);
+        
+        control.replay();
+        OutPolicyInfo opi = new OutPolicyInfo();
+        opi.initialisePolicy(e, boi, engine, requestor);
+        assertSame(merged, opi.getPolicy());
+        control.verify();
+    }
+    
+    public void testInitialiseServerFaultPolicy() {        
+        Endpoint e = control.createMock(Endpoint.class);
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
+        PolicyEngine engine = control.createMock(PolicyEngine.class);
+        
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        EasyMock.expect(bfi.getBindingOperation()).andReturn(boi);               
+        EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class);        
+        EasyMock.expect(engine.getEndpointPolicyInfo(e, (Destination)null)).andReturn(epi);
+        Policy ep = control.createMock(Policy.class);
+        EasyMock.expect(epi.getPolicy()).andReturn(ep);        
         Policy op = control.createMock(Policy.class);
         EasyMock.expect(engine.getAggregatedOperationPolicy(boi)).andReturn(op);
         Policy merged = control.createMock(Policy.class);
-        EasyMock.expect(mp.merge(op)).andReturn(merged);
-        Policy ep = control.createMock(Policy.class);
-        EasyMock.expect(engine.getAggregatedEndpointPolicy(ei)).andReturn(ep);
-        EasyMock.expect(merged.merge(ep)).andReturn(merged);
-        EasyMock.expect(ei.getService()).andReturn(si);
-        Policy sp = control.createMock(Policy.class);
-        EasyMock.expect(engine.getAggregatedServicePolicy(si)).andReturn(sp);
-        EasyMock.expect(merged.merge(sp)).andReturn(merged);
+        EasyMock.expect(ep.merge(op)).andReturn(merged);
+        Policy fp = control.createMock(Policy.class);
+        EasyMock.expect(engine.getAggregatedFaultPolicy(bfi)).andReturn(fp);
+        EasyMock.expect(merged.merge(fp)).andReturn(merged);
         EasyMock.expect(merged.normalize(true)).andReturn(merged);
         
         control.replay();
-        ClientRequestPolicyInfo cpi = new ClientRequestPolicyInfo();
-        cpi.initialiseRequestPolicy(boi, ei, engine);
-        assertSame(merged, cpi.getRequestPolicy());
+        OutPolicyInfo opi = new OutPolicyInfo();
+        opi.initialisePolicy(e, bfi, engine);
+        assertSame(merged, opi.getPolicy());
         control.verify();
     }
     
     public void testChooseAlternative() {
-        ClientRequestPolicyInfo cpi = new ClientRequestPolicyInfo();
-        cpi.setRequestPolicy(new Policy());
+        OutPolicyInfo cpi = new OutPolicyInfo();
+        cpi.setPolicy(new Policy());
         
         PolicyEngine engine = control.createMock(PolicyEngine.class);
         Assertor assertor = control.createMock(Assertor.class);
@@ -114,7 +216,7 @@
         ea.addPolicyComponent(all);
         List<Assertion> firstAlternative = CastUtils.cast(all.getPolicyComponents(), Assertion.class);
         policy.addPolicyComponent(ea);
-        cpi.setRequestPolicy(policy);
+        cpi.setPolicy(policy);
         
         EasyMock.expect(engine.supportsAlternative(firstAlternative, assertor)).andReturn(false);
         control.replay();
@@ -131,10 +233,10 @@
         control.replay();        
         cpi.chooseAlternative(engine, assertor); 
         
-        List<Assertion> chosen = cpi.getChosenAlternative();
+        Collection<Assertion> chosen = cpi.getChosenAlternative();
         assertSame(1, chosen.size());
         assertSame(chosen.size(), firstAlternative.size());
-        assertSame(chosen.get(0), firstAlternative.get(0));
+        assertSame(chosen.iterator().next(), firstAlternative.get(0));
         
         // assertSame(cpi.getChosenAlternative(), firstAlternative);
         control.verify();
@@ -151,12 +253,12 @@
         chosen = cpi.getChosenAlternative();
         assertSame(1, chosen.size());
         assertSame(chosen.size(), secondAlternative.size());
-        assertSame(chosen.get(0), secondAlternative.get(0));
+        assertSame(chosen.iterator().next(), secondAlternative.get(0));
         control.verify();
     }
     
     public void testInitialiseOutInterceptors() {
-        ClientRequestPolicyInfo cpi = new ClientRequestPolicyInfo();        
+        OutPolicyInfo cpi = new OutPolicyInfo();        
         List<Assertion> alternative = new ArrayList<Assertion>();
         cpi.setChosenAlternative(alternative);
         
@@ -166,7 +268,7 @@
         
         control.replay();
         cpi.initialiseInterceptors(engine);
-        assertEquals(0, cpi.getOutInterceptors().size());
+        assertEquals(0, cpi.getInterceptors().size());
         control.verify();
         
         control.reset();
@@ -176,7 +278,7 @@
         EasyMock.expect(a.isOptional()).andReturn(true);
         control.replay();
         cpi.initialiseInterceptors(engine);
-        assertEquals(0, cpi.getOutInterceptors().size());
+        assertEquals(0, cpi.getInterceptors().size());
         control.verify();
         
         control.reset();
@@ -187,7 +289,7 @@
         EasyMock.expect(reg.get(qn)).andReturn(null);
         control.replay();
         cpi.initialiseInterceptors(engine);
-        assertEquals(0, cpi.getOutInterceptors().size());
+        assertEquals(0, cpi.getInterceptors().size());
         control.verify();
         
         control.reset();
@@ -200,8 +302,8 @@
         EasyMock.expect(pp.getOutInterceptors()).andReturn(Collections.singletonList(pi));
         control.replay();
         cpi.initialiseInterceptors(engine);
-        assertEquals(1, cpi.getOutInterceptors().size());
-        assertSame(pi, cpi.getOutInterceptors().get(0));
+        assertEquals(1, cpi.getInterceptors().size());
+        assertSame(pi, cpi.getInterceptors().get(0));
         control.verify();     
     }
     
@@ -211,9 +313,91 @@
         EasyMock.expect(engine.getBus()).andReturn(bus);
         EasyMock.expect(bus.getExtension(PolicyInterceptorProviderRegistry.class)).andReturn(reg);
     }
-   
-    
     
+    public void testCheckEffectivePolicy() {
+        OutPolicyInfo opi = new OutPolicyInfo();  
+        Policy p = new Policy();
+        QName aqn = new QName("http://x.y.z", "a");
+        Assertion a = new PrimitiveAssertion(aqn);
+        QName bqn = new QName("http://x.y.z", "b");
+        Assertion b = new PrimitiveAssertion(bqn);
+        QName cqn = new QName("http://x.y.z", "c");
+        Assertion c = new PrimitiveAssertion(cqn);
+        All alt1 = new All();
+        alt1.addAssertion(a);
+        alt1.addAssertion(b);
+        All alt2 = new All();
+        alt2.addAssertion(c);
+        ExactlyOne ea = new ExactlyOne();
+        ea.addPolicyComponent(alt1);
+        ea.addPolicyComponent(alt2);
+        p.addPolicyComponent(ea);   
+        AssertionInfoMap aim = new AssertionInfoMap(CastUtils.cast(Collections.EMPTY_LIST, Assertion.class));
+        AssertionInfo ai = new AssertionInfo(a);
+        AssertionInfo bi = new AssertionInfo(b);
+        AssertionInfo ci = new AssertionInfo(c);
+        aim.put(aqn, Collections.singleton(ai));
+        aim.put(bqn, Collections.singleton(bi));
+        aim.put(cqn, Collections.singleton(ci));
+        opi.setPolicy(p);
+        
+        try {
+            opi.checkEffectivePolicy(aim);
+            fail("Expected PolicyException not thrown.");
+        } catch (PolicyException ex) {
+            // expected
+        }
+        
+        ai.setAsserted(true);
+        ci.setAsserted(true);
+        
+        opi.checkEffectivePolicy(aim);
+    }
     
-   
+    public void testAlternativeSupported() {
+        Assertion a1 = control.createMock(Assertion.class);
+        QName aqn = new QName("http://x.y.z", "a");
+        EasyMock.expect(a1.getName()).andReturn(aqn).anyTimes();
+        Assertion a2 = control.createMock(Assertion.class);
+        EasyMock.expect(a2.getName()).andReturn(aqn).anyTimes();
+        Assertion b = control.createMock(Assertion.class);
+        QName bqn = new QName("http://x.y.z", "b");
+        EasyMock.expect(b.getName()).andReturn(bqn).anyTimes();
+        Assertion c = control.createMock(Assertion.class);
+        QName cqn = new QName("http://x.y.z", "c");
+        EasyMock.expect(c.getName()).andReturn(cqn).anyTimes();
+        AssertionInfoMap aim = new AssertionInfoMap(CastUtils.cast(Collections.EMPTY_LIST, Assertion.class));
+        AssertionInfo ai1 = new AssertionInfo(a1);
+        AssertionInfo ai2 = new AssertionInfo(a2);
+        Collection<AssertionInfo> ais = new ArrayList<AssertionInfo>();
+        AssertionInfo bi = new AssertionInfo(b);
+        AssertionInfo ci = new AssertionInfo(c);
+        ais.add(ai1);
+        ais.add(ai2);
+        aim.put(aqn, ais);
+        aim.put(bqn, Collections.singleton(bi));
+        aim.put(cqn, Collections.singleton(ci));
+        ai2.setAsserted(true);
+        bi.setAsserted(true);
+        ci.setAsserted(true);
+        EasyMock.expect(a1.equal(a1)).andReturn(true).anyTimes();
+        EasyMock.expect(a2.equal(a2)).andReturn(true).anyTimes();
+        EasyMock.expect(b.equal(b)).andReturn(true).anyTimes();
+        EasyMock.expect(c.equal(c)).andReturn(true).anyTimes();
+        
+        
+        List<Assertion> alt1 = new ArrayList<Assertion>();
+        alt1.add(a1);
+        alt1.add(b);
+        
+        List<Assertion> alt2 = new ArrayList<Assertion>();
+        alt2.add(a2);
+        alt2.add(c);
+                
+        OutPolicyInfo opi = new OutPolicyInfo();
+        control.replay();
+        assertTrue(!opi.alternativeSupported(alt1, aim));
+        assertTrue(opi.alternativeSupported(alt2, aim));
+        control.verify();     
+    }  
 }

Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyEngineTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyEngineTest.java?view=diff&rev=512674&r1=512673&r2=512674
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyEngineTest.java (original)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyEngineTest.java Wed Feb 28 01:29:43 2007
@@ -21,11 +21,14 @@
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import javax.xml.namespace.QName;
+
 import junit.framework.TestCase;
 
 import org.apache.cxf.Bus;
@@ -38,9 +41,12 @@
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.cxf.transport.Conduit;
-import org.apache.cxf.transport.Destination;
+import org.apache.cxf.ws.policy.builder.primitive.PrimitiveAssertion;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Constants;
 import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyComponent;
+import org.apache.neethi.PolicyReference;
 import org.apache.neethi.PolicyRegistry;
 import org.easymock.classextension.EasyMock;
 import org.easymock.classextension.IMocksControl;
@@ -95,9 +101,9 @@
         List<Interceptor> inFault = new ArrayList<Interceptor>();
         List<Interceptor> outFault = new ArrayList<Interceptor>();
         if (add) {
-            EasyMock.expect(bus.getOutInterceptors()).andReturn(out).times(2);
-            EasyMock.expect(bus.getInInterceptors()).andReturn(in).times(2);
-            EasyMock.expect(bus.getInFaultInterceptors()).andReturn(inFault);
+            EasyMock.expect(bus.getOutInterceptors()).andReturn(out).times(3);
+            EasyMock.expect(bus.getInInterceptors()).andReturn(in).times(3);
+            EasyMock.expect(bus.getInFaultInterceptors()).andReturn(inFault).times(2);
             EasyMock.expect(bus.getOutFaultInterceptors()).andReturn(outFault);
             control.replay();
         }
@@ -109,14 +115,17 @@
             Set<String> idsIn = getInterceptorIds(in);
             Set<String> idsInFault = getInterceptorIds(inFault);
             Set<String> idsOutFault = getInterceptorIds(outFault);
-            assertEquals(2, out.size());
+            assertEquals(3, out.size());
             assertTrue(idsOut.contains(PolicyConstants.CLIENT_POLICY_OUT_INTERCEPTOR_ID));
             assertTrue(idsOut.contains(PolicyConstants.SERVER_POLICY_OUT_INTERCEPTOR_ID));
-            assertEquals(2, in.size());
+            assertTrue(idsOut.contains(PolicyVerificationOutInterceptor.class.getName()));
+            assertEquals(3, in.size());
             assertTrue(idsIn.contains(PolicyConstants.CLIENT_POLICY_IN_INTERCEPTOR_ID));
             assertTrue(idsIn.contains(PolicyConstants.SERVER_POLICY_IN_INTERCEPTOR_ID));
-            assertEquals(1, inFault.size());
+            assertTrue(idsIn.contains(PolicyVerificationInInterceptor.class.getName()));
+            assertEquals(2, inFault.size());
             assertTrue(idsInFault.contains(PolicyConstants.CLIENT_POLICY_IN_FAULT_INTERCEPTOR_ID));
+            assertTrue(idsInFault.contains(PolicyVerificationInFaultInterceptor.class.getName()));
             assertEquals(1, outFault.size());
             assertTrue(idsOutFault.contains(PolicyConstants.SERVER_POLICY_OUT_FAULT_INTERCEPTOR_ID));
         } else {
@@ -305,6 +314,7 @@
         control.verify();      
     }
     
+    /*
     public void testGetClientOutInterceptors() throws NoSuchMethodException {
         Method m = PolicyEngine.class.getDeclaredMethod("getClientRequestPolicyInfo",
                                                         new Class[] {Endpoint.class,
@@ -314,11 +324,11 @@
         BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
         Endpoint e = control.createMock(Endpoint.class);
         Conduit conduit = control.createMock(Conduit.class);
-        ClientRequestPolicyInfo cpi = control.createMock(ClientRequestPolicyInfo.class);
+        OutPolicyInfo cpi = control.createMock(OutPolicyInfo.class);
         EasyMock.expect(engine.getClientRequestPolicyInfo(e, boi, conduit)).andReturn(cpi);
         Interceptor i = control.createMock(Interceptor.class);
         List<Interceptor> li = Collections.singletonList(i);
-        EasyMock.expect(cpi.getOutInterceptors()).andReturn(li);        
+        EasyMock.expect(cpi.getInterceptors()).andReturn(li);        
 
         control.replay();
         List<Interceptor> clientInterceptors = engine.getClientOutInterceptors(e, boi, conduit); 
@@ -326,6 +336,29 @@
         control.verify();
     }
     
+    public void testGetClientOutAssertions() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("getClientRequestPolicyInfo",
+                                                        new Class[] {Endpoint.class,
+                                                                     BindingOperationInfo.class,
+                                                                     Conduit.class});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        Endpoint e = control.createMock(Endpoint.class);
+        Conduit conduit = control.createMock(Conduit.class);
+        OutPolicyInfo cpi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.getClientRequestPolicyInfo(e, boi, conduit)).andReturn(cpi);
+        Assertion a = control.createMock(Assertion.class);
+        List<Assertion> la = Collections.singletonList(a);
+        EasyMock.expect(cpi.getChosenAlternative()).andReturn(la);        
+
+        control.replay();
+        Collection<Assertion> assertions = engine.getClientOutAssertions(e, boi, conduit); 
+        assertSame(la, assertions);
+        control.verify();
+    }
+    */
+    
+    /*
     public void testGetClientInInterceptors() throws NoSuchMethodException { 
         doTestGetInterceptors(false, false);
     }
@@ -339,13 +372,171 @@
     }
     
     public void testServerOutInterceptors() throws NoSuchMethodException {
-        doTestGetServerOutInterceptors(false);
+        Method m = PolicyEngine.class.getDeclaredMethod("getServerResponsePolicyInfo",
+                                                        new Class[] {Endpoint.class,
+                                                                     BindingOperationInfo.class,
+                                                                     Destination.class});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        Endpoint e = control.createMock(Endpoint.class);
+        Destination destination = control.createMock(Destination.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.getServerResponsePolicyInfo(e, boi, destination)).andReturn(opi);
+        Interceptor i = control.createMock(Interceptor.class);
+        List<Interceptor> li = Collections.singletonList(i);        
+        EasyMock.expect(opi.getInterceptors()).andReturn(li);
+
+        control.replay();
+        List<Interceptor> interceptors = engine.getServerOutInterceptors(e, boi, destination);
+        assertSame(li, interceptors);
+        control.verify();
+    }
+    
+    public void testServerOutAssertions() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("getServerResponsePolicyInfo",
+                                                        new Class[] {Endpoint.class,
+                                                                     BindingOperationInfo.class,
+                                                                     Destination.class});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        Endpoint e = control.createMock(Endpoint.class);
+        Destination destination = control.createMock(Destination.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.getServerResponsePolicyInfo(e, boi, destination)).andReturn(opi);
+        Assertion a = control.createMock(Assertion.class);
+        List<Assertion> la = Collections.singletonList(a);        
+        EasyMock.expect(opi.getChosenAlternative()).andReturn(la);
+
+        control.replay();
+        Collection<Assertion> assertions = engine.getServerOutAssertions(e, boi, destination);
+        assertSame(la, assertions);
+        control.verify();
     }
     
     public void testServerOutFaultInterceptors() throws NoSuchMethodException {
-        doTestGetServerOutInterceptors(true);
+        Method m = PolicyEngine.class.getDeclaredMethod("getServerFaultPolicyInfo",
+                                                        new Class[] {Endpoint.class,
+                                                                     BindingFaultInfo.class,
+                                                                     Destination.class});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
+        Endpoint e = control.createMock(Endpoint.class);
+        Destination destination = control.createMock(Destination.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.getServerFaultPolicyInfo(e, bfi, destination)).andReturn(opi);
+        Interceptor i = control.createMock(Interceptor.class);
+        List<Interceptor> li = Collections.singletonList(i);  
+        EasyMock.expect(opi.getInterceptors()).andReturn(li);
+
+        control.replay();
+        List<Interceptor> interceptors = engine.getServerOutFaultInterceptors(e, bfi, destination);
+        assertSame(li, interceptors);
+        control.verify();
+    }
+    
+    public void testServerOutFaultAssertions() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("getServerFaultPolicyInfo",
+                                                        new Class[] {Endpoint.class,
+                                                                     BindingFaultInfo.class,
+                                                                     Destination.class});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
+        Endpoint e = control.createMock(Endpoint.class);
+        Destination destination = control.createMock(Destination.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.getServerFaultPolicyInfo(e, bfi, destination)).andReturn(opi);
+        Assertion a = control.createMock(Assertion.class);
+        List<Assertion> la = Collections.singletonList(a);  
+        EasyMock.expect(opi.getChosenAlternative()).andReturn(la);
+
+        control.replay();
+        Collection<Assertion> assertions = engine.getServerOutFaultAssertions(e, bfi, destination);
+        assertSame(la, assertions);
+        control.verify();
+    }
+    */
+    
+    public void testGetAssertions() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("addAssertions",
+            new Class[] {PolicyComponent.class, boolean.class, Collection.class});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        Assertion a = control.createMock(Assertion.class);
+        EasyMock.expect(a.getType()).andReturn(Constants.TYPE_ASSERTION);
+        EasyMock.expect(a.isOptional()).andReturn(true);
+        
+        control.replay();
+        assertTrue(engine.getAssertions(a, false).isEmpty());
+        control.verify();
+        
+        control.reset();
+        EasyMock.expect(a.getType()).andReturn(Constants.TYPE_ASSERTION);
+        // EasyMock.expect(a.isOptional()).andReturn(false);
+        
+        control.replay();
+        Collection<Assertion> ca = engine.getAssertions(a, true);
+        assertEquals(1, ca.size());
+        assertSame(a, ca.iterator().next());
+        control.verify();
+        
+        control.reset();
+        Policy p = control.createMock(Policy.class);
+        EasyMock.expect(p.getType()).andReturn(Constants.TYPE_POLICY);
+        engine.addAssertions(EasyMock.eq(p), EasyMock.eq(false), 
+                             CastUtils.cast(EasyMock.isA(Collection.class), Assertion.class));
+        EasyMock.expectLastCall();
+        
+        control.replay();
+        assertTrue(engine.getAssertions(p, false).isEmpty());
+        control.verify();
+    }
+    
+    public void testAddAssertions() {
+        engine = new PolicyEngine();
+        Collection<Assertion> assertions = new ArrayList<Assertion>();
+        
+        Assertion a = control.createMock(Assertion.class);
+        EasyMock.expect(a.getType()).andReturn(Constants.TYPE_ASSERTION);
+        EasyMock.expect(a.isOptional()).andReturn(true);
+        
+        control.replay();
+        engine.addAssertions(a, false, assertions);
+        assertTrue(assertions.isEmpty());
+        control.verify();
+        
+        control.reset();
+        EasyMock.expect(a.getType()).andReturn(Constants.TYPE_ASSERTION);
+        control.replay();
+        engine.addAssertions(a, true, assertions);
+        assertEquals(1, assertions.size());
+        assertSame(a, assertions.iterator().next());        
+        control.verify();
+        
+        assertions.clear();
+        Policy p = new Policy();
+        a = new PrimitiveAssertion(new QName("http://x.y.z", "a"));
+        p.addAssertion(a);
+        PolicyReference pr = new PolicyReference();
+        pr.setURI("a#b");
+        engine.getRegistry().register("a#b", p);
+        
+        engine.addAssertions(pr, false, assertions);
+        assertEquals(1, assertions.size());
+        assertSame(a, assertions.iterator().next());       
+    }
+    
+    public void testKeys() {
+        engine = new PolicyEngine();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        PolicyEngine.BindingOperation bo = engine.new BindingOperation(endpoint, boi);
+        assertNotNull(bo);
+        
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
+        PolicyEngine.BindingFault bf = engine.new BindingFault(endpoint, bfi);
+        assertNotNull(bf);      
     }
      
+    /*
     private void doTestGetInterceptors(boolean isServer, boolean fault) throws NoSuchMethodException {
         Method m = PolicyEngine.class.getDeclaredMethod("getEndpointPolicyInfo",
             new Class[] {Endpoint.class, isServer ? Destination.class : Conduit.class});
@@ -380,33 +571,7 @@
         assertSame(li, interceptors);
         control.verify(); 
     }
-    
-    private void doTestGetServerOutInterceptors(boolean fault) throws NoSuchMethodException {
-
-        Method m = PolicyEngine.class.getDeclaredMethod("getServerResponsePolicyInfo",
-                                                        new Class[] {Endpoint.class,
-                                                                     BindingOperationInfo.class,
-                                                                     Destination.class});
-        engine = control.createMock(PolicyEngine.class, new Method[] {m});
-        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
-        Endpoint e = control.createMock(Endpoint.class);
-        Destination destination = control.createMock(Destination.class);
-        ServerResponsePolicyInfo srpi = control.createMock(ServerResponsePolicyInfo.class);
-        EasyMock.expect(engine.getServerResponsePolicyInfo(e, boi, destination)).andReturn(srpi);
-        Interceptor i = control.createMock(Interceptor.class);
-        List<Interceptor> li = Collections.singletonList(i);
-        if (fault) {
-            EasyMock.expect(srpi.getOutFaultInterceptors()).andReturn(li);
-        } else {
-            EasyMock.expect(srpi.getOutInterceptors()).andReturn(li);
-        }
-
-        control.replay();
-        List<Interceptor> interceptors = fault ? engine.getServerOutFaultInterceptors(e, boi, destination)
-            : engine.getServerOutInterceptors(e, boi, destination);
-        assertSame(li, interceptors);
-        control.verify();
-    }
+    */
     
     private Set<String> getInterceptorIds(List<Interceptor> interceptors) {
         Set<String> ids = new HashSet<String>();

Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java?view=diff&rev=512674&r1=512673&r2=512674
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java (original)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java Wed Feb 28 01:29:43 2007
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.ws.policy;
 
+import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.Collections;
 
@@ -31,7 +32,9 @@
 import org.apache.cxf.interceptor.InterceptorChain;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.service.model.BindingFaultInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.FaultInfo;
 import org.apache.cxf.transport.Conduit;
 import org.apache.cxf.transport.Destination;
 import org.apache.neethi.Assertion;
@@ -59,6 +62,13 @@
         bus = control.createMock(Bus.class);       
     } 
     
+    public void testAbstractPolicyInterceptor() {
+        ClientPolicyOutInterceptor interceptor = new ClientPolicyOutInterceptor();
+        assertNull(interceptor.getBus());
+        interceptor.setBus(bus);
+        assertSame(bus, interceptor.getBus());
+    }
+    
     public void testClientPolicyOutInterceptor() {
         ClientPolicyOutInterceptor interceptor = new ClientPolicyOutInterceptor();
         interceptor.setBus(bus);
@@ -66,17 +76,20 @@
         doTestBasics(interceptor, true, true);
         
         control.reset();
-        setupMessage(true, true, true, true, true, true);
+        setupMessage(true, true, true, true, true, true);        
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(pe.getClientRequestPolicyInfo(endpoint, boi, conduit)).andReturn(opi);
         Interceptor i = control.createMock(Interceptor.class);
-        EasyMock.expect(pe.getClientOutInterceptors(endpoint, boi, conduit))
+        EasyMock.expect(opi.getInterceptors())
             .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class));
         InterceptorChain ic = control.createMock(InterceptorChain.class);
         EasyMock.expect(message.getInterceptorChain()).andReturn(ic);
         ic.add(i);
         EasyMock.expectLastCall();
         Collection<Assertion> assertions = CastUtils.cast(Collections.EMPTY_LIST, Assertion.class);
-        EasyMock.expect(pe.getClientOutAssertions(endpoint, boi, conduit)).andReturn(assertions);
-        EasyMock.expect(message.put(PolicyConstants.CLIENT_OUT_ASSERTIONS, assertions)).andReturn(null);
+        EasyMock.expect(opi.getChosenAlternative()).andReturn(assertions);
+        message.put(EasyMock.eq(AssertionInfoMap.class), EasyMock.isA(AssertionInfoMap.class));
+        EasyMock.expectLastCall();
         control.replay();
         interceptor.handleMessage(message);
         control.verify();        
@@ -89,14 +102,20 @@
         doTestBasics(interceptor, true, false);
         
         control.reset();
-        setupMessage(true, true, false, false, true, true);
+        setupMessage(true, true, false, false, true, true);        
+        EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class);
+        EasyMock.expect(pe.getEndpointPolicyInfo(endpoint, conduit)).andReturn(epi);
         Interceptor i = control.createMock(Interceptor.class);
-        EasyMock.expect(pe.getClientInInterceptors(endpoint, conduit))
+        EasyMock.expect(epi.getInInterceptors())
             .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class));
         InterceptorChain ic = control.createMock(InterceptorChain.class);
         EasyMock.expect(message.getInterceptorChain()).andReturn(ic);
         ic.add(i);
         EasyMock.expectLastCall();
+        Collection<Assertion> assertions = CastUtils.cast(Collections.EMPTY_LIST, Assertion.class);
+        EasyMock.expect(epi.getVocabulary()).andReturn(assertions);
+        message.put(EasyMock.eq(AssertionInfoMap.class), EasyMock.isA(AssertionInfoMap.class));
+        EasyMock.expectLastCall();
         control.replay();
         interceptor.handleMessage(message);
         control.verify();        
@@ -110,13 +129,19 @@
         
         control.reset();
         setupMessage(true, true, false, false, true, true);
+        EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class);
+        EasyMock.expect(pe.getEndpointPolicyInfo(endpoint, conduit)).andReturn(epi);
         Interceptor i = control.createMock(Interceptor.class);
-        EasyMock.expect(pe.getClientInFaultInterceptors(endpoint, conduit))
+        EasyMock.expect(epi.getInFaultInterceptors())
             .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class));
         InterceptorChain ic = control.createMock(InterceptorChain.class);
         EasyMock.expect(message.getInterceptorChain()).andReturn(ic);
         ic.add(i);
         EasyMock.expectLastCall();
+        Collection<Assertion> assertions = CastUtils.cast(Collections.EMPTY_LIST, Assertion.class);
+        EasyMock.expect(epi.getFaultVocabulary()).andReturn(assertions);
+        message.put(EasyMock.eq(AssertionInfoMap.class), EasyMock.isA(AssertionInfoMap.class));
+        EasyMock.expectLastCall();
         control.replay();
         interceptor.handleMessage(message);
         control.verify();        
@@ -127,19 +152,25 @@
         interceptor.setBus(bus);
         
         doTestBasics(interceptor, false, false);
-        
+
         control.reset();
         setupMessage(false, false, false, false, true, true);
+        EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class);
+        EasyMock.expect(pe.getEndpointPolicyInfo(endpoint, destination)).andReturn(epi);
         Interceptor i = control.createMock(Interceptor.class);
-        EasyMock.expect(pe.getServerInInterceptors(endpoint, destination))
+        EasyMock.expect(epi.getInInterceptors())
             .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class));
         InterceptorChain ic = control.createMock(InterceptorChain.class);
         EasyMock.expect(message.getInterceptorChain()).andReturn(ic);
         ic.add(i);
         EasyMock.expectLastCall();
+        Collection<Assertion> assertions = CastUtils.cast(Collections.EMPTY_LIST, Assertion.class);
+        EasyMock.expect(epi.getVocabulary()).andReturn(assertions);
+        message.put(EasyMock.eq(AssertionInfoMap.class), EasyMock.isA(AssertionInfoMap.class));
+        EasyMock.expectLastCall();
         control.replay();
         interceptor.handleMessage(message);
-        control.verify();        
+        control.verify();       
     }
     
     public void testServerPolicyOutInterceptor() {
@@ -150,43 +181,90 @@
         
         control.reset();
         setupMessage(false, false, true, true, true, true);
-        Interceptor i = control.createMock(Interceptor.class);
-        EasyMock.expect(pe.getServerOutInterceptors(endpoint, boi, destination))
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(pe.getServerResponsePolicyInfo(endpoint, boi, destination)).andReturn(opi);
+        Interceptor i = control.createMock(Interceptor.class);        
+        EasyMock.expect(opi.getInterceptors())
             .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class));
         InterceptorChain ic = control.createMock(InterceptorChain.class);
         EasyMock.expect(message.getInterceptorChain()).andReturn(ic);
         ic.add(i);
         EasyMock.expectLastCall();
         Collection<Assertion> assertions = CastUtils.cast(Collections.EMPTY_LIST, Assertion.class);
-        EasyMock.expect(pe.getServerOutAssertions(endpoint, boi, destination)).andReturn(assertions);
-        EasyMock.expect(message.put(PolicyConstants.SERVER_OUT_ASSERTIONS, assertions)).andReturn(null);
+        EasyMock.expect(opi.getChosenAlternative()).andReturn(assertions);
+        message.put(EasyMock.eq(AssertionInfoMap.class), EasyMock.isA(AssertionInfoMap.class));
+        EasyMock.expectLastCall();
         control.replay();
         interceptor.handleMessage(message);
         control.verify();        
     }
     
-    public void testServerPolicyOutFaultInterceptor() {
-        ServerPolicyOutFaultInterceptor interceptor = new ServerPolicyOutFaultInterceptor();
+    public void testServerPolicyOutFaultInterceptor() throws NoSuchMethodException {
+        Method m = ServerPolicyOutFaultInterceptor.class.getDeclaredMethod("getBindingFaultInfo",
+            new Class[] {Message.class, Exception.class, BindingOperationInfo.class});
+        
+        ServerPolicyOutFaultInterceptor interceptor = 
+            control.createMock(ServerPolicyOutFaultInterceptor.class, new Method[] {m});
         interceptor.setBus(bus);
         
         doTestBasics(interceptor, false, true);
         
         control.reset();
         setupMessage(false, false, true, true, true, true);
+        Exception ex = control.createMock(Exception.class);
+        EasyMock.expect(exchange.get(Exception.class)).andReturn(ex);
+        EasyMock.expect(interceptor.getBindingFaultInfo(message, ex, boi)).andReturn(null);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();  
+         
+        control.reset();
+        setupMessage(false, false, true, true, true, true);
+        // Exception ex = control.createMock(Exception.class);
+        EasyMock.expect(exchange.get(Exception.class)).andReturn(ex);
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
+        EasyMock.expect(interceptor.getBindingFaultInfo(message, ex, boi)).andReturn(bfi);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(pe.getServerFaultPolicyInfo(endpoint, bfi, destination)).andReturn(opi);
         Interceptor i = control.createMock(Interceptor.class);
-        EasyMock.expect(pe.getServerOutFaultInterceptors(endpoint, boi, destination))
+        EasyMock.expect(opi.getInterceptors())
             .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class));
         InterceptorChain ic = control.createMock(InterceptorChain.class);
         EasyMock.expect(message.getInterceptorChain()).andReturn(ic);
         ic.add(i);
         EasyMock.expectLastCall();
+        Collection<Assertion> assertions = CastUtils.cast(Collections.EMPTY_LIST, Assertion.class);
+        EasyMock.expect(opi.getChosenAlternative()).andReturn(assertions);
+        message.put(EasyMock.eq(AssertionInfoMap.class), EasyMock.isA(AssertionInfoMap.class));
+        EasyMock.expectLastCall();
         control.replay();
         interceptor.handleMessage(message);
         control.verify();        
     }
     
+    public void testServerPolicyOutFaultInterceptorGetBindingFaultInfo() {
+        ServerPolicyOutFaultInterceptor interceptor = new ServerPolicyOutFaultInterceptor();
+        message = control.createMock(Message.class);
+        Exception ex = new UnsupportedOperationException();
+        boi = control.createMock(BindingOperationInfo.class);
+        EasyMock.expect(message.get(BindingFaultInfo.class)).andReturn(null);
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
+        Collection<BindingFaultInfo> bfis = CastUtils.cast(Collections.singletonList(bfi));
+        EasyMock.expect(boi.getFaults()).andReturn(bfis);
+        FaultInfo fi = control.createMock(FaultInfo.class);
+        EasyMock.expect(bfi.getFaultInfo()).andReturn(fi);
+        EasyMock.expect(fi.getProperty(Class.class.getName(), Class.class))
+            .andReturn(RuntimeException.class);
+        message.put(BindingFaultInfo.class, bfi);
+        EasyMock.expectLastCall();
+        
+        control.replay();
+        assertSame(bfi, interceptor.getBindingFaultInfo(message, ex, boi));
+        control.verify();        
+    }
+   
     private void doTestBasics(Interceptor<Message> interceptor, boolean isClient, boolean usesOperationInfo) {
-        setupMessage(!isClient, isClient, usesOperationInfo, false, false, false);
+        setupMessage(!isClient, isClient, usesOperationInfo, !usesOperationInfo, false, false);
         control.replay();
         interceptor.handleMessage(message);
         control.verify();
@@ -198,13 +276,13 @@
         control.verify();
         
         control.reset();
-        setupMessage(true, isClient, usesOperationInfo, usesOperationInfo, false, false);
+        setupMessage(isClient, isClient, usesOperationInfo, usesOperationInfo, false, false);
         control.replay();
         interceptor.handleMessage(message);
         control.verify();
             
         control.reset();
-        setupMessage(true, isClient, usesOperationInfo, usesOperationInfo, true, false);
+        setupMessage(isClient, isClient, usesOperationInfo, usesOperationInfo, true, false);
         control.replay();
         interceptor.handleMessage(message);
         control.verify();
@@ -217,6 +295,14 @@
                       Boolean setupEndpoint, 
                       Boolean setupEngine) {
 
+        /*
+        System.out.println("setupMessage, setupRequestor: " + setupRequestor
+                           + ", isClient: " + isClient
+                           + ", usesOperationInfo: " + usesOperationInfo
+                           + ", setupOperation: " + setupOperation
+                           + ", setupEndpoint: " + setupEndpoint
+                           + ", setupEngine: " + setupEngine);
+        */                  
         message = control.createMock(Message.class);
         EasyMock.expect(message.get(Message.REQUESTOR_ROLE))
             .andReturn(setupRequestor ? Boolean.TRUE : Boolean.FALSE);
@@ -244,13 +330,6 @@
         if (!setupEndpoint) {
             return;
         }
-        
-        /*
-        if (null == ei) {
-            ei = control.createMock(EndpointInfo.class);            
-        }
-        EasyMock.expect(endpoint.getEndpointInfo()).andReturn(ei);
-        */
         
         if (null == pe && setupEngine) {
             pe = control.createMock(PolicyEngine.class);

Added: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInFaultInterceptorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInFaultInterceptorTest.java?view=auto&rev=512674
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInFaultInterceptorTest.java (added)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInFaultInterceptorTest.java Wed Feb 28 01:29:43 2007
@@ -0,0 +1,142 @@
+/**
+ * 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 org.apache.cxf.ws.policy;
+
+import junit.framework.TestCase;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.service.model.BindingFaultInfo;
+import org.easymock.classextension.EasyMock;
+import org.easymock.classextension.IMocksControl;
+
+/**
+ * 
+ */
+public class PolicyVerificationInFaultInterceptorTest extends TestCase {
+ 
+    private IMocksControl control;
+    private Bus bus;
+    private Message message;
+    private Exchange exchange;
+    private BindingFaultInfo bfi;
+    private Endpoint endpoint;
+    private PolicyEngine engine;
+    private AssertionInfoMap aim;
+    
+    public void setUp() {
+        control = EasyMock.createNiceControl(); 
+        bus = control.createMock(Bus.class);  
+    } 
+    
+    public void testHandleMessage() {
+        PolicyVerificationInFaultInterceptor interceptor = 
+            new PolicyVerificationInFaultInterceptor();
+        interceptor.setBus(bus);
+        
+        setupMessage(false, false, false, false, false);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        setupMessage(true, false, false, false, false);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        setupMessage(true, true, false, false, false);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        setupMessage(true, true, true, false, false);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        setupMessage(true, true, true, true, false);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        setupMessage(true, true, true, true, true);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);        
+        EasyMock.expect(engine.getClientFaultPolicyInfo(endpoint, bfi)).andReturn(opi);
+        opi.checkEffectivePolicy(aim);
+        EasyMock.expectLastCall();
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+    }
+    
+    void setupMessage(boolean requestor,
+                      boolean setupBindingFaultInfo,
+                      boolean setupEndpoint,
+                      boolean setupPolicyEngine,
+                      boolean setupAssertionInfoMap) {
+        if (null == message) {
+            message = control.createMock(Message.class); 
+        }
+        if (null == exchange) {
+            exchange = control.createMock(Exchange.class);            
+        }
+        EasyMock.expect(message.get(Message.REQUESTOR_ROLE)).andReturn(
+            requestor ? Boolean.TRUE : Boolean.FALSE);
+        if (!requestor) {
+            return;
+        }
+        
+        EasyMock.expect(message.getExchange()).andReturn(exchange);
+        if (setupBindingFaultInfo && null == bfi) {
+            bfi = control.createMock(BindingFaultInfo.class);
+        }
+        EasyMock.expect(message.get(BindingFaultInfo.class)).andReturn(bfi);
+        if (!setupBindingFaultInfo) {
+            return;
+        }
+        if (setupEndpoint && null == endpoint) {
+            endpoint = control.createMock(Endpoint.class);
+        }
+        EasyMock.expect(exchange.get(Endpoint.class)).andReturn(endpoint);
+        if (!setupEndpoint) {
+            return;
+        }
+        
+        if (setupPolicyEngine && null == engine) {
+            engine = control.createMock(PolicyEngine.class);
+        }
+        EasyMock.expect(bus.getExtension(PolicyEngine.class)).andReturn(engine);
+        if (!setupPolicyEngine) {
+            return;           
+        }
+        if (setupAssertionInfoMap && null == aim) {
+            aim = control.createMock(AssertionInfoMap.class);
+        }
+        EasyMock.expect(message.get(AssertionInfoMap.class)).andReturn(aim);
+    }
+
+}

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInFaultInterceptorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInFaultInterceptorTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInInterceptorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInInterceptorTest.java?view=auto&rev=512674
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInInterceptorTest.java (added)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInInterceptorTest.java Wed Feb 28 01:29:43 2007
@@ -0,0 +1,147 @@
+/**
+ * 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 org.apache.cxf.ws.policy;
+
+import junit.framework.TestCase;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.service.model.BindingOperationInfo;
+import org.easymock.classextension.EasyMock;
+import org.easymock.classextension.IMocksControl;
+
+/**
+ * 
+ */
+public class PolicyVerificationInInterceptorTest extends TestCase {
+ 
+    private IMocksControl control;
+    private Bus bus;
+    private Message message;
+    private Exchange exchange;
+    private BindingOperationInfo boi;
+    private Endpoint endpoint;
+    private PolicyEngine engine;
+    private AssertionInfoMap aim;
+    
+    public void setUp() {
+        control = EasyMock.createNiceControl(); 
+        bus = control.createMock(Bus.class);  
+    } 
+    
+    public void testHandleMessage() {
+        PolicyVerificationInInterceptor interceptor = new PolicyVerificationInInterceptor();
+        interceptor.setBus(bus);
+        
+        setupMessage(false, false, false, false);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        setupMessage(true, false, false, false);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        control.reset();
+        setupMessage(true, true, false, false);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        setupMessage(true, true, true, false);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        setupMessage(true, true, true, true);
+        EasyMock.expect(message.get(Message.REQUESTOR_ROLE)).andReturn(Boolean.FALSE);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);        
+        EasyMock.expect(engine.getServerRequestPolicyInfo(endpoint, boi)).andReturn(opi);
+        opi.checkEffectivePolicy(aim);
+        EasyMock.expectLastCall();
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        setupMessage(true, true, true, true);
+        EasyMock.expect(message.get(Message.PARTIAL_RESPONSE_MESSAGE)).andReturn(Boolean.TRUE);  
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        setupMessage(true, true, true, true);
+        EasyMock.expect(message.get(Message.PARTIAL_RESPONSE_MESSAGE)).andReturn(null);
+        EasyMock.expect(message.get(Message.REQUESTOR_ROLE)).andReturn(Boolean.TRUE);  
+        EasyMock.expect(engine.getClientResponsePolicyInfo(endpoint, boi)).andReturn(opi);
+        opi.checkEffectivePolicy(aim);
+        EasyMock.expectLastCall();
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+    }
+    
+    void setupMessage(boolean setupBindingOperationInfo,
+                      boolean setupEndpoint,
+                      boolean setupPolicyEngine,
+                      boolean setupAssertionInfoMap) {
+        if (null == message) {
+            message = control.createMock(Message.class); 
+        }
+        if (null == exchange) {
+            exchange = control.createMock(Exchange.class);            
+        }
+        EasyMock.expect(message.getExchange()).andReturn(exchange);
+        if (setupBindingOperationInfo && null == boi) {
+            boi = control.createMock(BindingOperationInfo.class);
+        }
+        EasyMock.expect(exchange.get(BindingOperationInfo.class)).andReturn(boi);
+        if (!setupBindingOperationInfo) {
+            return;
+        }
+        if (setupEndpoint && null == endpoint) {
+            endpoint = control.createMock(Endpoint.class);
+        }
+        EasyMock.expect(exchange.get(Endpoint.class)).andReturn(endpoint);
+        if (!setupEndpoint) {
+            return;
+        }
+        
+        if (setupPolicyEngine && null == engine) {
+            engine = control.createMock(PolicyEngine.class);
+        }
+        EasyMock.expect(bus.getExtension(PolicyEngine.class)).andReturn(engine);
+        if (!setupPolicyEngine) {
+            return;           
+        }
+        if (setupAssertionInfoMap && null == aim) {
+            aim = control.createMock(AssertionInfoMap.class);
+        }
+        EasyMock.expect(message.get(AssertionInfoMap.class)).andReturn(aim);
+    }
+
+}

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInInterceptorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationInInterceptorTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationOutInterceptorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationOutInterceptorTest.java?view=auto&rev=512674
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationOutInterceptorTest.java (added)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationOutInterceptorTest.java Wed Feb 28 01:29:43 2007
@@ -0,0 +1,98 @@
+/**
+ * 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 org.apache.cxf.ws.policy;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.cxf.message.Message;
+import org.apache.neethi.Assertion;
+import org.easymock.classextension.EasyMock;
+import org.easymock.classextension.IMocksControl;
+
+/**
+ * 
+ */
+public class PolicyVerificationOutInterceptorTest extends TestCase {
+ 
+    private IMocksControl control;
+    
+    public void setUp() {
+        control = EasyMock.createNiceControl();   
+    } 
+    
+    public void testHandleMessage() {
+        PolicyVerificationOutInterceptor interceptor = new PolicyVerificationOutInterceptor();
+        
+        Message message = control.createMock(Message.class);
+        EasyMock.expect(message.get(AssertionInfoMap.class)).andReturn(null);
+        control.replay();
+        interceptor.handleMessage(message);
+        control.verify();
+        
+        control.reset();
+        Collection<Assertion> assertions = new ArrayList<Assertion>();
+        AssertionInfoMap aim = new AssertionInfoMap(assertions);
+        
+        Assertion a1 = control.createMock(Assertion.class);   
+        AssertionInfo ai1 = new AssertionInfo(a1);
+        Assertion a2 = control.createMock(Assertion.class);
+        AssertionInfo ai2 = new AssertionInfo(a2);
+        Assertion a3 = control.createMock(Assertion.class);
+        AssertionInfo ai3 = new AssertionInfo(a3);
+        
+        QName n1 = new QName("http://x.b.c/x", "a1"); 
+        QName n2 = new QName("http://x.b.c/x", "a2");
+        
+        Collection<AssertionInfo> c = new ArrayList<AssertionInfo>();
+        c.add(ai1);
+        c.add(ai2);
+        aim.put(n1, c);
+        c = new ArrayList<AssertionInfo>();
+        c.add(ai3);
+        aim.put(n2, c);
+        
+        EasyMock.expect(message.get(AssertionInfoMap.class)).andReturn(aim);
+        
+        control.replay();
+        try {
+            interceptor.handleMessage(message);
+            fail("Expected PolicyException not thrown.");
+        } catch (PolicyException ex) {
+            // expected
+        }
+        control.verify();
+        
+        control.reset();
+        ai1.setAsserted(true);
+        ai2.setAsserted(true);
+        ai3.setAsserted(true);
+
+        EasyMock.expect(message.get(AssertionInfoMap.class)).andReturn(aim);
+        
+        control.replay();        
+        interceptor.handleMessage(message);       
+        control.verify();
+    }
+}

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationOutInterceptorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyVerificationOutInterceptorTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date