You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2021/06/05 18:36:26 UTC

[cxf] branch master updated: CXF-8548: Get rid of Powermock usage (#811)

This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new ade1129  CXF-8548: Get rid of Powermock usage (#811)
ade1129 is described below

commit ade1129cd94291f7fbd12cb536bc9367b19bb870
Author: Andriy Redko <dr...@gmail.com>
AuthorDate: Sat Jun 5 14:36:16 2021 -0400

    CXF-8548: Get rid of Powermock usage (#811)
---
 parent/pom.xml                                     |   1 -
 rt/rs/security/http-signature/pom.xml              |  14 --
 .../security/httpsignature/SpecExamplesTest.java   | 278 ++++++++++++---------
 3 files changed, 163 insertions(+), 130 deletions(-)

diff --git a/parent/pom.xml b/parent/pom.xml
index 82e56e1..cd828b4 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -181,7 +181,6 @@
         <cxf.persistence-api.version>2.2.3</cxf.persistence-api.version>
         <cxf.plexus-archiver.version>4.2.0</cxf.plexus-archiver.version>
         <cxf.plexus-utils.version>3.2.0</cxf.plexus-utils.version>
-        <cxf.powermock.version>2.0.9</cxf.powermock.version>
         <cxf.reactivestreams.version>1.0.3</cxf.reactivestreams.version>
         <cxf.reactor.version>3.4.6</cxf.reactor.version>
         <cxf.rhino.version>1.7.13</cxf.rhino.version>
diff --git a/rt/rs/security/http-signature/pom.xml b/rt/rs/security/http-signature/pom.xml
index a8d00de..8e10fcf 100644
--- a/rt/rs/security/http-signature/pom.xml
+++ b/rt/rs/security/http-signature/pom.xml
@@ -70,26 +70,12 @@
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-frontend-jaxrs</artifactId>
         </dependency>
-
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <version>${cxf.powermock.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito2</artifactId>
-            <version>${cxf.powermock.version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
             <version>${cxf.mockito.version}</version>
             <scope>test</scope>
         </dependency>
-
     </dependencies>
 
 </project>
diff --git a/rt/rs/security/http-signature/src/test/java/org/apache/cxf/rs/security/httpsignature/SpecExamplesTest.java b/rt/rs/security/http-signature/src/test/java/org/apache/cxf/rs/security/httpsignature/SpecExamplesTest.java
index 86c99ac..d44c8cd 100644
--- a/rt/rs/security/http-signature/src/test/java/org/apache/cxf/rs/security/httpsignature/SpecExamplesTest.java
+++ b/rt/rs/security/http-signature/src/test/java/org/apache/cxf/rs/security/httpsignature/SpecExamplesTest.java
@@ -39,34 +39,37 @@ import javax.ws.rs.core.MultivaluedHashMap;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.UriInfo;
 
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageImpl;
+import org.apache.cxf.phase.Phase;
+import org.apache.cxf.phase.PhaseInterceptor;
 import org.apache.cxf.phase.PhaseInterceptorChain;
+import org.apache.cxf.phase.PhaseManager;
 import org.apache.cxf.rs.security.httpsignature.filters.CreateSignatureInterceptor;
 import org.apache.cxf.rs.security.httpsignature.filters.VerifySignatureFilter;
 import org.apache.cxf.rs.security.httpsignature.provider.KeyProvider;
 import org.apache.cxf.rs.security.httpsignature.provider.MockAlgorithmProvider;
 import org.apache.cxf.rs.security.httpsignature.provider.MockSecurityProvider;
 
+import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.mockito.Mockito;
 
 import static org.junit.Assert.assertEquals;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.when;
 
 /**
  * Some examples from the Appendix C of the spec.
  */
-@org.powermock.core.classloader.annotations.PrepareForTest(PhaseInterceptorChain.class)
-@RunWith(org.powermock.modules.junit4.PowerMockRunner.class)
 public class SpecExamplesTest {
 
     private static KeyProvider keyProvider;
     private static PublicKey publicKey;
-
+    private Bus bus;
+    
     @BeforeClass
     public static void setUp() throws IOException, InvalidKeySpecException {
         try {
@@ -93,6 +96,11 @@ public class SpecExamplesTest {
             e.printStackTrace();
         }
     }
+    
+    @Before
+    public void setUpBus() {
+        bus = BusFactory.getDefaultBus();
+    }
 
     @Test
     public void defaultTest() throws IOException {
@@ -136,39 +144,38 @@ public class SpecExamplesTest {
             requestStringHeaders.add(header, value.get(0));
         });
 
-        mockStatic(PhaseInterceptorChain.class);
-        Message message = mock(Message.class);
-        when(PhaseInterceptorChain.getCurrentMessage()).thenReturn(message);
-
-        ClientRequestContext requestContext = getClientRequestContextMock(uri, method, requestHeaders);
-
-        interceptor.filter(requestContext);
-
-        String signatureHeader = (String) requestHeaders.get("Signature").get(0);
-        requestStringHeaders.add("Signature", signatureHeader);
-
-        String expectedHeader = "keyId=\"Test\",algorithm=\"rsa-sha256\","
-            + "signature=\"SjWJWbWN7i0wzBvtPl8rbASWz5xQW6mcJmn+ibttBqtifLN7Sazz"
-            + "6m79cNfwwb8DMJ5cou1s7uEGKKCs+FLEEaDV5lp7q25WqS+lavg7T8hc0GppauB"
-            + "6hbgEKTwblDHYGEtbGmtdHgVCk9SuS13F0hZ8FD0k/5OxEPXe5WozsbM=\"";
-
-        assertEquals(signatureHeader.replaceAll("headers=\"date\",", ""), expectedHeader);
-
-        // Verify that the request signature can be verified by the filter
-        MessageVerifier messageVerifier = new MessageVerifier(keyId -> publicKey);
-        messageVerifier.setAddDefaultRequiredHeaders(false);
-        messageVerifier.setSecurityProvider(new MockSecurityProvider());
-        messageVerifier.setAlgorithmProvider(new MockAlgorithmProvider());
-
-        VerifySignatureFilter verifySignatureFilter = new VerifySignatureFilter();
-        verifySignatureFilter.setMessageVerifier(messageVerifier);
-
-        ContainerRequestContext containerRequestContext =
-            getContainerRequestContextMock(uri, method, requestStringHeaders);
-
-        verifySignatureFilter.filter(containerRequestContext);
+        final Message message = new MessageImpl();
+        doInPhaseInterceptor(message, () -> {
+            ClientRequestContext requestContext = getClientRequestContextMock(uri, method, requestHeaders);
+            interceptor.filter(requestContext);
+
+            String signatureHeader = (String) requestHeaders.get("Signature").get(0);
+            requestStringHeaders.add("Signature", signatureHeader);
+    
+            String expectedHeader = "keyId=\"Test\",algorithm=\"rsa-sha256\","
+                + "signature=\"SjWJWbWN7i0wzBvtPl8rbASWz5xQW6mcJmn+ibttBqtifLN7Sazz"
+                + "6m79cNfwwb8DMJ5cou1s7uEGKKCs+FLEEaDV5lp7q25WqS+lavg7T8hc0GppauB"
+                + "6hbgEKTwblDHYGEtbGmtdHgVCk9SuS13F0hZ8FD0k/5OxEPXe5WozsbM=\"";
+    
+            assertEquals(signatureHeader.replaceAll("headers=\"date\",", ""), expectedHeader);
+    
+            // Verify that the request signature can be verified by the filter
+            MessageVerifier messageVerifier = new MessageVerifier(keyId -> publicKey);
+            messageVerifier.setAddDefaultRequiredHeaders(false);
+            messageVerifier.setSecurityProvider(new MockSecurityProvider());
+            messageVerifier.setAlgorithmProvider(new MockAlgorithmProvider());
+    
+            VerifySignatureFilter verifySignatureFilter = new VerifySignatureFilter();
+            verifySignatureFilter.setMessageVerifier(messageVerifier);
+    
+            ContainerRequestContext containerRequestContext =
+                getContainerRequestContextMock(uri, method, requestStringHeaders);
+    
+            verifySignatureFilter.filter(containerRequestContext);
+        });
     }
 
+
     @Test
     public void basicTest() throws IOException {
         Map<String, List<String>> headers = createMockHeaders();
@@ -211,38 +218,37 @@ public class SpecExamplesTest {
             requestStringHeaders.add(header, value.get(0));
         });
 
-        mockStatic(PhaseInterceptorChain.class);
-        Message message = mock(Message.class);
-        when(PhaseInterceptorChain.getCurrentMessage()).thenReturn(message);
-
-        ClientRequestContext requestContext = getClientRequestContextMock(uri, method, requestHeaders);
-
-        interceptor.filter(requestContext);
-
-        String signatureHeader = (String) requestHeaders.get("Signature").get(0);
-        requestStringHeaders.add("Signature", signatureHeader);
-
-        String expectedHeader = "keyId=\"Test\",algorithm=\"rsa-sha256\","
-            + "headers=\"(request-target) host date\",signature=\"qdx+H7PHHDZgy4"
-            + "y/Ahn9Tny9V3GP6YgBPyUXMmoxWtLbHpUnXS2mg2+SbrQDMCJypxBLSPQR2aAjn"
-            + "7ndmw2iicw3HMbe8VfEdKFYRqzic+efkb3nndiv/x1xSHDJWeSWkx3ButlYSuBs"
-            + "kLu6kd9Fswtemr3lgdDEmn04swr2Os0=\"";
-
-        assertEquals(signatureHeader, expectedHeader);
-
-        // Verify that the request signature can be verified by the filter
-        MessageVerifier messageVerifier = new MessageVerifier(keyId -> publicKey);
-        messageVerifier.setAddDefaultRequiredHeaders(false);
-        messageVerifier.setSecurityProvider(new MockSecurityProvider());
-        messageVerifier.setAlgorithmProvider(new MockAlgorithmProvider());
-
-        VerifySignatureFilter verifySignatureFilter = new VerifySignatureFilter();
-        verifySignatureFilter.setMessageVerifier(messageVerifier);
-
-        ContainerRequestContext containerRequestContext =
-            getContainerRequestContextMock(uri, method, requestStringHeaders);
-
-        verifySignatureFilter.filter(containerRequestContext);
+        final Message message = new MessageImpl();
+        doInPhaseInterceptor(message, () -> {
+            ClientRequestContext requestContext = getClientRequestContextMock(uri, method, requestHeaders);
+    
+            interceptor.filter(requestContext);
+    
+            String signatureHeader = (String) requestHeaders.get("Signature").get(0);
+            requestStringHeaders.add("Signature", signatureHeader);
+    
+            String expectedHeader = "keyId=\"Test\",algorithm=\"rsa-sha256\","
+                + "headers=\"(request-target) host date\",signature=\"qdx+H7PHHDZgy4"
+                + "y/Ahn9Tny9V3GP6YgBPyUXMmoxWtLbHpUnXS2mg2+SbrQDMCJypxBLSPQR2aAjn"
+                + "7ndmw2iicw3HMbe8VfEdKFYRqzic+efkb3nndiv/x1xSHDJWeSWkx3ButlYSuBs"
+                + "kLu6kd9Fswtemr3lgdDEmn04swr2Os0=\"";
+    
+            assertEquals(signatureHeader, expectedHeader);
+    
+            // Verify that the request signature can be verified by the filter
+            MessageVerifier messageVerifier = new MessageVerifier(keyId -> publicKey);
+            messageVerifier.setAddDefaultRequiredHeaders(false);
+            messageVerifier.setSecurityProvider(new MockSecurityProvider());
+            messageVerifier.setAlgorithmProvider(new MockAlgorithmProvider());
+    
+            VerifySignatureFilter verifySignatureFilter = new VerifySignatureFilter();
+            verifySignatureFilter.setMessageVerifier(messageVerifier);
+    
+            ContainerRequestContext containerRequestContext =
+                getContainerRequestContextMock(uri, method, requestStringHeaders);
+    
+            verifySignatureFilter.filter(containerRequestContext);
+        });
     }
 
     @Test
@@ -289,61 +295,59 @@ public class SpecExamplesTest {
             requestStringHeaders.add(header, value.get(0));
         });
 
-        ClientRequestContext requestContext = getClientRequestContextMock(uri, method, requestHeaders);
-
-        mockStatic(PhaseInterceptorChain.class);
-        Message message = mock(Message.class);
-        when(PhaseInterceptorChain.getCurrentMessage()).thenReturn(message);
-
-        interceptor.filter(requestContext);
-
-        String signatureHeader = (String) requestHeaders.get("Signature").get(0);
-        requestStringHeaders.add("Signature", signatureHeader);
-
-        String expectedHeader = "keyId=\"Test\",algorithm=\"rsa-sha256\","
-            + "headers=\"(request-target) host date content-type digest content-length\","
-            + "signature=\"vSdrb+dS3EceC9bcwHSo4MlyKS59iFIrhgYkz8+oVLEEzmYZZvRs"
-            + "8rgOp+63LEM3v+MFHB32NfpB2bEKBIvB1q52LaEUHFv120V01IL+TAD48XaERZF"
-            + "ukWgHoBTLMhYS2Gb51gWxpeIq8knRmPnYePbF5MOkR0Zkly4zKH7s1dE=\"";
-
-        assertEquals(signatureHeader, expectedHeader);
-
-        // Verify that the request signature can be verified by the filter
-        MessageVerifier messageVerifier = new MessageVerifier(keyId -> publicKey);
-        messageVerifier.setAddDefaultRequiredHeaders(false);
-        messageVerifier.setSecurityProvider(new MockSecurityProvider());
-        messageVerifier.setAlgorithmProvider(new MockAlgorithmProvider());
-
-        VerifySignatureFilter verifySignatureFilter = new VerifySignatureFilter();
-        verifySignatureFilter.setMessageVerifier(messageVerifier);
-
-        ContainerRequestContext containerRequestContext =
-            getContainerRequestContextMock(uri, method, requestStringHeaders);
-        InputStream stream = new ByteArrayInputStream("{\"hello\": \"world\"}".getBytes(StandardCharsets.UTF_8));
-        when(containerRequestContext.getEntityStream()).thenReturn(stream);
-
-        verifySignatureFilter.filter(containerRequestContext);
+        final Message message = new MessageImpl();
+        doInPhaseInterceptor(message, () -> {
+            ClientRequestContext requestContext = getClientRequestContextMock(uri, method, requestHeaders);
+            interceptor.filter(requestContext);
+    
+            String signatureHeader = (String) requestHeaders.get("Signature").get(0);
+            requestStringHeaders.add("Signature", signatureHeader);
+    
+            String expectedHeader = "keyId=\"Test\",algorithm=\"rsa-sha256\","
+                + "headers=\"(request-target) host date content-type digest content-length\","
+                + "signature=\"vSdrb+dS3EceC9bcwHSo4MlyKS59iFIrhgYkz8+oVLEEzmYZZvRs"
+                + "8rgOp+63LEM3v+MFHB32NfpB2bEKBIvB1q52LaEUHFv120V01IL+TAD48XaERZF"
+                + "ukWgHoBTLMhYS2Gb51gWxpeIq8knRmPnYePbF5MOkR0Zkly4zKH7s1dE=\"";
+    
+            assertEquals(signatureHeader, expectedHeader);
+    
+            // Verify that the request signature can be verified by the filter
+            MessageVerifier messageVerifier = new MessageVerifier(keyId -> publicKey);
+            messageVerifier.setAddDefaultRequiredHeaders(false);
+            messageVerifier.setSecurityProvider(new MockSecurityProvider());
+            messageVerifier.setAlgorithmProvider(new MockAlgorithmProvider());
+    
+            VerifySignatureFilter verifySignatureFilter = new VerifySignatureFilter();
+            verifySignatureFilter.setMessageVerifier(messageVerifier);
+    
+            ContainerRequestContext containerRequestContext =
+                getContainerRequestContextMock(uri, method, requestStringHeaders);
+            InputStream stream = new ByteArrayInputStream("{\"hello\": \"world\"}".getBytes(StandardCharsets.UTF_8));
+            Mockito.when(containerRequestContext.getEntityStream()).thenReturn(stream);
+    
+            verifySignatureFilter.filter(containerRequestContext);
+        });
     }
 
     private ClientRequestContext getClientRequestContextMock(URI uri, String method,
                                                              MultivaluedMap<String, Object> requestHeaders) {
-        ClientRequestContext requestContext = mock(ClientRequestContext.class);
-        when(requestContext.getEntity()).thenReturn(null);
-        when(requestContext.getMethod()).thenReturn(method);
-        when(requestContext.getHeaders()).thenReturn(requestHeaders);
-        when(requestContext.getUri()).thenReturn(uri);
+        ClientRequestContext requestContext = Mockito.mock(ClientRequestContext.class);
+        Mockito.when(requestContext.getEntity()).thenReturn(null);
+        Mockito.when(requestContext.getMethod()).thenReturn(method);
+        Mockito.when(requestContext.getHeaders()).thenReturn(requestHeaders);
+        Mockito.when(requestContext.getUri()).thenReturn(uri);
         return requestContext;
     }
 
     private ContainerRequestContext getContainerRequestContextMock(URI uri, String method,
                                                                    MultivaluedMap<String, String>
                                                                        requestStringHeaders) {
-        ContainerRequestContext containerRequestContext = mock(ContainerRequestContext.class);
-        UriInfo uriInfo = mock(UriInfo.class);
-        when(uriInfo.getAbsolutePath()).thenReturn(uri);
-        when(containerRequestContext.getUriInfo()).thenReturn(uriInfo);
-        when(containerRequestContext.getMethod()).thenReturn(method);
-        when(containerRequestContext.getHeaders()).thenReturn(requestStringHeaders);
+        ContainerRequestContext containerRequestContext = Mockito.mock(ContainerRequestContext.class);
+        UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        Mockito.when(uriInfo.getAbsolutePath()).thenReturn(uri);
+        Mockito.when(containerRequestContext.getUriInfo()).thenReturn(uriInfo);
+        Mockito.when(containerRequestContext.getMethod()).thenReturn(method);
+        Mockito.when(containerRequestContext.getHeaders()).thenReturn(requestStringHeaders);
         return containerRequestContext;
     }
 
@@ -357,4 +361,48 @@ public class SpecExamplesTest {
         return headers;
     }
 
+    @SuppressWarnings({ "rawtypes", "unchecked" })
+    private void doInPhaseInterceptor(Message message, Runnable r) {
+        final PhaseManager phaseManager = bus.getExtension(PhaseManager.class);
+        final PhaseInterceptorChain chain = new PhaseInterceptorChain(phaseManager.getInPhases());
+        
+        chain.add(new PhaseInterceptor<Message>() {
+            @Override
+            public void handleMessage(Message message) throws Fault {
+                r.run();
+            }
+
+            @Override
+            public void handleFault(Message message) {
+            }
+
+            @Override
+            public Set getAfter() {
+                return Collections.emptySet();
+            }
+
+            @Override
+            public Set getBefore() {
+                return Collections.emptySet();
+            }
+
+            @Override
+            public String getId() {
+                return "test-signature-verify";
+            }
+
+            @Override
+            public String getPhase() {
+                return Phase.INVOKE;
+            }
+
+            @Override
+            public Collection getAdditionalInterceptors() {
+                return Collections.emptyList();
+            }
+        });
+        
+        message.setInterceptorChain(chain);
+        chain.doIntercept(message);
+    }
 }