Rewrite rest-client to use Jersey 2.x API
[aai/rest-client.git] / src / test / java / org / onap / aai / restclient / rest / RestClientBuilderTest.java
index 7155f9a..3878813 100644 (file)
@@ -26,243 +26,216 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;\r
 import static org.junit.Assert.assertNull;\r
 import static org.junit.Assert.assertTrue;\r
-import static org.junit.Assert.fail;\r
 \r
+import javax.ws.rs.client.Client;\r
 import org.junit.Before;\r
 import org.junit.Test;\r
 import org.onap.aai.restclient.enums.RestAuthenticationMode;\r
-import org.onap.aai.restclient.rest.RestClientBuilder;\r
-\r
-import com.sun.jersey.api.client.Client;\r
-import com.sun.jersey.client.urlconnection.HTTPSProperties;\r
 \r
 /**\r
- * This suite of tests is intended to exercise the functionality of the generice REST client\r
- * builder.\r
+ * This suite of tests is intended to exercise the functionality of the generice REST client builder.\r
  */\r
 public class RestClientBuilderTest {\r
 \r
-  /**\r
-   * Test case initialization\r
-   * \r
-   * @throws Exception the exception\r
-   */\r
-  @Before\r
-  public void init() throws Exception {\r
-  }\r
-  \r
-  private String generateAuthorizationHeaderValue(String username, String password) {\r
-    String usernameAndPassword = username + ":" + password;\r
-    return "Basic " + java.util.Base64.getEncoder().encodeToString(usernameAndPassword.getBytes());\r
-  }\r
-  \r
-  @Test\r
-  public void validateAccesors() {\r
-    \r
-    RestClientBuilder restClientBuilder = new RestClientBuilder();\r
-    \r
-    // test defaults\r
-    assertEquals(restClientBuilder.isValidateServerHostname(), RestClientBuilder.DEFAULT_VALIDATE_SERVER_HOST);\r
-    assertEquals(restClientBuilder.isValidateServerCertChain(), RestClientBuilder.DEFAULT_VALIDATE_CERT_CHAIN);\r
-    assertEquals(restClientBuilder.getClientCertFileName(), RestClientBuilder.DEFAULT_CLIENT_CERT_FILENAME);\r
-    assertEquals(restClientBuilder.getClientCertPassword(), RestClientBuilder.DEFAULT_CERT_PASSWORD);\r
-    assertEquals(restClientBuilder.getTruststoreFilename(), RestClientBuilder.DEFAULT_TRUST_STORE_FILENAME);\r
-    assertEquals(restClientBuilder.getConnectTimeoutInMs(), RestClientBuilder.DEFAULT_CONNECT_TIMEOUT_MS);\r
-    assertEquals(restClientBuilder.getReadTimeoutInMs(), RestClientBuilder.DEFAULT_READ_TIMEOUT_MS);\r
-    assertEquals(restClientBuilder.getAuthenticationMode(), RestClientBuilder.DEFAULT_AUTH_MODE);\r
-    assertEquals(restClientBuilder.getBasicAuthUsername(), RestClientBuilder.DEFAULT_BASIC_AUTH_USERNAME);\r
-    assertEquals(restClientBuilder.getBasicAuthPassword(), RestClientBuilder.DEFAULT_BASIC_AUTH_PASSWORD);\r
-    \r
-    restClientBuilder.setAuthenticationMode(RestAuthenticationMode.UNKNOWN_MODE);\r
-    restClientBuilder.setBasicAuthPassword("password");\r
-    restClientBuilder.setBasicAuthUsername("username");\r
-    restClientBuilder.setClientCertFileName("filename");\r
-    restClientBuilder.setClientCertPassword("password");\r
-    restClientBuilder.setConnectTimeoutInMs(12345);\r
-    restClientBuilder.setReadTimeoutInMs(54321);\r
-    restClientBuilder.setTruststoreFilename("truststore");\r
-    restClientBuilder.setValidateServerCertChain(true);\r
-    restClientBuilder.setValidateServerHostname(true);\r
-    \r
-    assertEquals(restClientBuilder.isValidateServerHostname(), true);\r
-    assertEquals(restClientBuilder.isValidateServerCertChain(), true);\r
-    assertEquals(restClientBuilder.getClientCertFileName(), "filename");\r
-    assertEquals(restClientBuilder.getClientCertPassword(), "password");\r
-    assertEquals(restClientBuilder.getTruststoreFilename(), "truststore");\r
-    assertEquals(restClientBuilder.getConnectTimeoutInMs(), 12345);\r
-    assertEquals(restClientBuilder.getReadTimeoutInMs(), 54321);\r
-    assertEquals(restClientBuilder.getAuthenticationMode(), RestAuthenticationMode.UNKNOWN_MODE);\r
-    assertEquals(restClientBuilder.getBasicAuthUsername(), "username");\r
-    assertEquals(restClientBuilder.getBasicAuthPassword(), "password");\r
-    \r
-    assertEquals(restClientBuilder.getBasicAuthenticationCredentials(),\r
-        generateAuthorizationHeaderValue("username", "password"));\r
-\r
-    assertTrue(restClientBuilder.toString().contains("RestClientBuilder"));\r
-\r
-  }\r
-  \r
-  @Test\r
-  public void validateNoAuthClientCreation() throws Exception {\r
-    \r
-    RestClientBuilder restClientBuilder = new RestClientBuilder();\r
-    \r
-    restClientBuilder.setAuthenticationMode(RestAuthenticationMode.HTTP_NOAUTH);\r
-    restClientBuilder.setConnectTimeoutInMs(12345);\r
-    restClientBuilder.setReadTimeoutInMs(54321);\r
-    \r
-    Client client = restClientBuilder.getClient();\r
-    assertNotNull(client);\r
-    assertNull(client.getProperties().get(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES));\r
-  }\r
-  \r
-  \r
-  @Test\r
-  public void validateUnknownModeCreateNoAuthClient() throws Exception {\r
-    \r
-    RestClientBuilder restClientBuilder = new RestClientBuilder();\r
-    \r
-    restClientBuilder.setAuthenticationMode(RestAuthenticationMode.UNKNOWN_MODE);\r
-    restClientBuilder.setConnectTimeoutInMs(12345);\r
-    restClientBuilder.setReadTimeoutInMs(54321);\r
-    \r
-    Client client = restClientBuilder.getClient();\r
-    assertNotNull(client);\r
-    assertNull(client.getProperties().get(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES));\r
-  }\r
-\r
-  @Test\r
-  public void validateBasicAuthSslClient() throws Exception {\r
-    \r
-    RestClientBuilder restClientBuilder = new RestClientBuilder();\r
-    \r
-    restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_BASIC);\r
-    restClientBuilder.setConnectTimeoutInMs(12345);\r
-    restClientBuilder.setReadTimeoutInMs(54321);\r
-    restClientBuilder.setBasicAuthUsername("username");\r
-    restClientBuilder.setBasicAuthPassword("password");\r
-    restClientBuilder.setTruststoreFilename("truststore");\r
-    \r
-    Client client = restClientBuilder.getClient();\r
-   \r
-    Object sslPropertiesObj = client.getProperties().get(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES);\r
-    HTTPSProperties sslProps = null;\r
-    if ( sslPropertiesObj instanceof HTTPSProperties ) {\r
-      sslProps = (HTTPSProperties)sslPropertiesObj;\r
-      assertNotNull(sslProps.getHostnameVerifier());\r
-    } else {\r
-      fail("Unexpected value for https properties object");\r
+    /**\r
+     * Test case initialization\r
+     *\r
+     * @throws Exception the exception\r
+     */\r
+    @Before\r
+    public void init() throws Exception {}\r
+\r
+    private String generateAuthorizationHeaderValue(String username, String password) {\r
+        String usernameAndPassword = username + ":" + password;\r
+        return "Basic " + java.util.Base64.getEncoder().encodeToString(usernameAndPassword.getBytes());\r
     }\r
-    \r
-  }\r
-\r
-  @Test (expected=IllegalArgumentException.class)\r
-  public void validateSslCertClient_noHostOrCertChainValidation() throws Exception {\r
-    \r
-    RestClientBuilder restClientBuilder = new RestClientBuilder();\r
-    \r
-    restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_CERT);\r
-    restClientBuilder.setConnectTimeoutInMs(12345);\r
-    restClientBuilder.setReadTimeoutInMs(54321);\r
-    restClientBuilder.setValidateServerCertChain(false);\r
-    restClientBuilder.setValidateServerHostname(false);\r
-    \r
-    Client client = restClientBuilder.getClient(); \r
-  }\r
-  \r
-  @Test (expected=IllegalArgumentException.class)\r
-  public void validateSslCertClient_hostOnlyValidation() throws Exception {\r
-    \r
-    RestClientBuilder restClientBuilder = new RestClientBuilder();\r
-    \r
-    restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_CERT);\r
-    restClientBuilder.setConnectTimeoutInMs(12345);\r
-    restClientBuilder.setReadTimeoutInMs(54321);\r
-    restClientBuilder.setValidateServerCertChain(false);\r
-    restClientBuilder.setValidateServerHostname(true);\r
-    \r
-    Client client = restClientBuilder.getClient();\r
-   \r
-  }\r
-  \r
-  @Test\r
-  public void validateSslCertClient_certChainOnlyValidation() throws Exception {\r
-    \r
-    RestClientBuilder restClientBuilder = new RestClientBuilder();\r
-    \r
-    restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_CERT);\r
-    restClientBuilder.setConnectTimeoutInMs(12345);\r
-    restClientBuilder.setReadTimeoutInMs(54321);\r
-    restClientBuilder.setValidateServerCertChain(true);\r
-    restClientBuilder.setValidateServerHostname(false);\r
-    restClientBuilder.setTruststoreFilename("truststore");\r
-    restClientBuilder.setClientCertPassword(null);\r
-    \r
-    Client client = restClientBuilder.getClient();\r
-   \r
-    Object sslPropertiesObj = client.getProperties().get(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES);\r
-    HTTPSProperties sslProps = null;\r
-    if ( sslPropertiesObj instanceof HTTPSProperties ) {\r
-      sslProps = (HTTPSProperties)sslPropertiesObj;\r
-      assertNotNull(sslProps.getHostnameVerifier());\r
-    } else {\r
-      fail("Unexpected value for https properties object");\r
+\r
+    @Test\r
+    public void validateAccesors() {\r
+\r
+        RestClientBuilder restClientBuilder = new RestClientBuilder();\r
+\r
+        // test defaults\r
+        assertEquals(restClientBuilder.isValidateServerHostname(), RestClientBuilder.DEFAULT_VALIDATE_SERVER_HOST);\r
+        assertEquals(restClientBuilder.isValidateServerCertChain(), RestClientBuilder.DEFAULT_VALIDATE_CERT_CHAIN);\r
+        assertEquals(restClientBuilder.getClientCertFileName(), RestClientBuilder.DEFAULT_CLIENT_CERT_FILENAME);\r
+        assertEquals(restClientBuilder.getClientCertPassword(), RestClientBuilder.DEFAULT_CERT_PASSWORD);\r
+        assertEquals(restClientBuilder.getTruststoreFilename(), RestClientBuilder.DEFAULT_TRUST_STORE_FILENAME);\r
+        assertEquals(restClientBuilder.getConnectTimeoutInMs(), RestClientBuilder.DEFAULT_CONNECT_TIMEOUT_MS);\r
+        assertEquals(restClientBuilder.getReadTimeoutInMs(), RestClientBuilder.DEFAULT_READ_TIMEOUT_MS);\r
+        assertEquals(restClientBuilder.getAuthenticationMode(), RestClientBuilder.DEFAULT_AUTH_MODE);\r
+        assertEquals(restClientBuilder.getBasicAuthUsername(), RestClientBuilder.DEFAULT_BASIC_AUTH_USERNAME);\r
+        assertEquals(restClientBuilder.getBasicAuthPassword(), RestClientBuilder.DEFAULT_BASIC_AUTH_PASSWORD);\r
+\r
+        restClientBuilder.setAuthenticationMode(RestAuthenticationMode.UNKNOWN_MODE);\r
+        restClientBuilder.setBasicAuthPassword("password");\r
+        restClientBuilder.setBasicAuthUsername("username");\r
+        restClientBuilder.setClientCertFileName("filename");\r
+        restClientBuilder.setClientCertPassword("password");\r
+        restClientBuilder.setConnectTimeoutInMs(12345);\r
+        restClientBuilder.setReadTimeoutInMs(54321);\r
+        restClientBuilder.setTruststoreFilename("truststore");\r
+        restClientBuilder.setValidateServerCertChain(true);\r
+        restClientBuilder.setValidateServerHostname(true);\r
+\r
+        assertEquals(restClientBuilder.isValidateServerHostname(), true);\r
+        assertEquals(restClientBuilder.isValidateServerCertChain(), true);\r
+        assertEquals(restClientBuilder.getClientCertFileName(), "filename");\r
+        assertEquals(restClientBuilder.getClientCertPassword(), "password");\r
+        assertEquals(restClientBuilder.getTruststoreFilename(), "truststore");\r
+        assertEquals(restClientBuilder.getConnectTimeoutInMs(), 12345);\r
+        assertEquals(restClientBuilder.getReadTimeoutInMs(), 54321);\r
+        assertEquals(restClientBuilder.getAuthenticationMode(), RestAuthenticationMode.UNKNOWN_MODE);\r
+        assertEquals(restClientBuilder.getBasicAuthUsername(), "username");\r
+        assertEquals(restClientBuilder.getBasicAuthPassword(), "password");\r
+\r
+        assertEquals(restClientBuilder.getBasicAuthenticationCredentials(),\r
+                generateAuthorizationHeaderValue("username", "password"));\r
+\r
+        assertTrue(restClientBuilder.toString().contains("RestClientBuilder"));\r
+\r
     }\r
-  }\r
-  \r
-  @Test\r
-  public void validateSslCertClient_withHostAndCertChainValidation() throws Exception {\r
-    \r
-    RestClientBuilder restClientBuilder = new RestClientBuilder();\r
-    \r
-    restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_CERT);\r
-    restClientBuilder.setConnectTimeoutInMs(12345);\r
-    restClientBuilder.setReadTimeoutInMs(54321);\r
-    restClientBuilder.setValidateServerCertChain(true);\r
-    restClientBuilder.setValidateServerHostname(true);\r
-    restClientBuilder.setClientCertPassword("password");\r
-    restClientBuilder.setTruststoreFilename("truststore");\r
-    \r
-    Client client = restClientBuilder.getClient();\r
-   \r
-    Object sslPropertiesObj = client.getProperties().get(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES);\r
-    HTTPSProperties sslProps = null;\r
-    if ( sslPropertiesObj instanceof HTTPSProperties ) {\r
-      sslProps = (HTTPSProperties)sslPropertiesObj;\r
-      assertNull(sslProps.getHostnameVerifier());\r
-    } else {\r
-      fail("Unexpected value for https properties object");\r
-    }  }\r
-  \r
-  @Test (expected=IllegalArgumentException.class)\r
-  public void validateSslCertClient_illegalArgumentExceptionWhenTruststoreIsNull() throws Exception {\r
-    \r
-    RestClientBuilder restClientBuilder = new RestClientBuilder();\r
-    \r
-    restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_CERT);\r
-    restClientBuilder.setConnectTimeoutInMs(12345);\r
-    restClientBuilder.setReadTimeoutInMs(54321);\r
-    restClientBuilder.setValidateServerCertChain(true);\r
-    restClientBuilder.setValidateServerHostname(true);\r
-    restClientBuilder.setTruststoreFilename(null);\r
-    \r
-    /*\r
-     * Creating the client in this scenario will cause an IllegalArgumentException caused by the\r
-     * truststore being null\r
-     */\r
-    Client client = restClientBuilder.getClient();\r
-   \r
-  }\r
-  \r
-  @Test\r
-  public void validateSslProtocolConfiguration() throws Exception {\r
-    \r
-    RestClientBuilder restClientBuilder = new RestClientBuilder();\r
-    assertEquals(RestClientBuilder.DEFAULT_SSL_PROTOCOL, restClientBuilder.getSslProtocol());\r
-    \r
-    restClientBuilder.setSslProtocol("TLSv1.2");\r
-    assertEquals("TLSv1.2", restClientBuilder.getSslProtocol());\r
-    \r
-  }\r
-    \r
+\r
+    @Test\r
+    public void validateNoAuthClientCreation() throws Exception {\r
+\r
+        RestClientBuilder restClientBuilder = new RestClientBuilder();\r
+\r
+        restClientBuilder.setAuthenticationMode(RestAuthenticationMode.HTTP_NOAUTH);\r
+        restClientBuilder.setConnectTimeoutInMs(12345);\r
+        restClientBuilder.setReadTimeoutInMs(54321);\r
+\r
+        Client client = restClientBuilder.getClient();\r
+        assertNotNull(client);\r
+    }\r
+\r
+\r
+    @Test\r
+    public void validateUnknownModeCreateNoAuthClient() throws Exception {\r
+\r
+        RestClientBuilder restClientBuilder = new RestClientBuilder();\r
+\r
+        restClientBuilder.setAuthenticationMode(RestAuthenticationMode.UNKNOWN_MODE);\r
+        restClientBuilder.setConnectTimeoutInMs(12345);\r
+        restClientBuilder.setReadTimeoutInMs(54321);\r
+\r
+        Client client = restClientBuilder.getClient();\r
+        assertNotNull(client);\r
+    }\r
+\r
+    @Test\r
+    public void validateBasicAuthSslClient() throws Exception {\r
+\r
+        RestClientBuilder restClientBuilder = new RestClientBuilder();\r
+\r
+        restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_BASIC);\r
+        restClientBuilder.setConnectTimeoutInMs(12345);\r
+        restClientBuilder.setReadTimeoutInMs(54321);\r
+        restClientBuilder.setBasicAuthUsername("username");\r
+        restClientBuilder.setBasicAuthPassword("password");\r
+        restClientBuilder.setTruststoreFilename("truststore");\r
+\r
+        Client client = restClientBuilder.getClient();\r
+        assertNotNull(client.getHostnameVerifier());\r
+        assertEquals("truststore", System.getProperty("javax.net.ssl.trustStore"));\r
+    }\r
+\r
+    @Test(expected = IllegalArgumentException.class)\r
+    public void validateSslCertClient_noHostOrCertChainValidation() throws Exception {\r
+\r
+        RestClientBuilder restClientBuilder = new RestClientBuilder();\r
+\r
+        restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_CERT);\r
+        restClientBuilder.setConnectTimeoutInMs(12345);\r
+        restClientBuilder.setReadTimeoutInMs(54321);\r
+        restClientBuilder.setValidateServerCertChain(false);\r
+        restClientBuilder.setValidateServerHostname(false);\r
+\r
+        restClientBuilder.getClient();\r
+    }\r
+\r
+    @Test(expected = IllegalArgumentException.class)\r
+    public void validateSslCertClient_hostOnlyValidation() throws Exception {\r
+\r
+        RestClientBuilder restClientBuilder = new RestClientBuilder();\r
+\r
+        restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_CERT);\r
+        restClientBuilder.setConnectTimeoutInMs(12345);\r
+        restClientBuilder.setReadTimeoutInMs(54321);\r
+        restClientBuilder.setValidateServerCertChain(false);\r
+        restClientBuilder.setValidateServerHostname(true);\r
+\r
+        restClientBuilder.getClient();\r
+\r
+    }\r
+\r
+    @Test\r
+    public void validateSslCertClient_certChainOnlyValidation() throws Exception {\r
+\r
+        RestClientBuilder restClientBuilder = new RestClientBuilder();\r
+\r
+        restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_CERT);\r
+        restClientBuilder.setConnectTimeoutInMs(12345);\r
+        restClientBuilder.setReadTimeoutInMs(54321);\r
+        restClientBuilder.setValidateServerCertChain(true);\r
+        restClientBuilder.setValidateServerHostname(false);\r
+        restClientBuilder.setTruststoreFilename("truststore");\r
+        restClientBuilder.setClientCertPassword(null);\r
+\r
+        Client client = restClientBuilder.getClient();\r
+        // TODO\r
+        assertNotNull(client.getHostnameVerifier());\r
+        assertEquals("truststore", System.getProperty("javax.net.ssl.trustStore"));\r
+    }\r
+\r
+    @Test\r
+    public void validateSslCertClient_withHostAndCertChainValidation() throws Exception {\r
+\r
+        RestClientBuilder restClientBuilder = new RestClientBuilder();\r
+\r
+        restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_CERT);\r
+        restClientBuilder.setConnectTimeoutInMs(12345);\r
+        restClientBuilder.setReadTimeoutInMs(54321);\r
+        restClientBuilder.setValidateServerCertChain(true);\r
+        restClientBuilder.setValidateServerHostname(true);\r
+        restClientBuilder.setClientCertPassword("password");\r
+        restClientBuilder.setTruststoreFilename("truststore");\r
+\r
+        Client client = restClientBuilder.getClient();\r
+        // TODO\r
+        assertNull(client.getHostnameVerifier());\r
+        assertEquals("truststore", System.getProperty("javax.net.ssl.trustStore"));\r
+    }\r
+\r
+    @Test(expected = IllegalArgumentException.class)\r
+    public void validateSslCertClient_illegalArgumentExceptionWhenTruststoreIsNull() throws Exception {\r
+\r
+        RestClientBuilder restClientBuilder = new RestClientBuilder();\r
+\r
+        restClientBuilder.setAuthenticationMode(RestAuthenticationMode.SSL_CERT);\r
+        restClientBuilder.setConnectTimeoutInMs(12345);\r
+        restClientBuilder.setReadTimeoutInMs(54321);\r
+        restClientBuilder.setValidateServerCertChain(true);\r
+        restClientBuilder.setValidateServerHostname(true);\r
+        restClientBuilder.setTruststoreFilename(null);\r
+\r
+        /*\r
+         * Creating the client in this scenario will cause an IllegalArgumentException caused by the truststore being\r
+         * null\r
+         */\r
+        restClientBuilder.getClient();\r
+\r
+    }\r
+\r
+    @Test\r
+    public void validateSslProtocolConfiguration() throws Exception {\r
+\r
+        RestClientBuilder restClientBuilder = new RestClientBuilder();\r
+        assertEquals(RestClientBuilder.DEFAULT_SSL_PROTOCOL, restClientBuilder.getSslProtocol());\r
+\r
+        restClientBuilder.setSslProtocol("TLSv1.2");\r
+        assertEquals("TLSv1.2", restClientBuilder.getSslProtocol());\r
+\r
+    }\r
+\r
 }\r