/* * (c) Copyright 2019 EntIT Software LLC, a Micro Focus company, L.P. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Apache License v2.0 which accompany this distribution. * * The Apache License is available 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 io.cloudslang.content.httpclient.build.auth; import org.apache.http.auth.AuthScope; import org.apache.http.auth.Credentials; import org.apache.http.auth.NTCredentials; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.config.AuthSchemes; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import static junit.framework.Assert.assertEquals; import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertThat; /** * Created with IntelliJ IDEA. * User: tusaa * Date: 7/2/14 */ public class CredentialsProviderBuilderTest { @Rule public ExpectedException exception = ExpectedException.none(); @Test public void createNtlmCredentialsProvider() { CredentialsProvider credentialsProvider = getCredentialsProvider(AuthSchemes.NTLM); Credentials credentials = credentialsProvider.getCredentials(new AuthScope("host", 80)); assertThat(credentials, instanceOf(NTCredentials.class)); NTCredentials ntCredentials = (NTCredentials) credentials; assertEquals("DOMAIN", ntCredentials.getDomain()); assertEquals("HOST", ntCredentials.getWorkstation()); assertEquals("pass", ntCredentials.getPassword()); Credentials proxyCredentials = credentialsProvider.getCredentials(new AuthScope("proxy", 8080)); assertThat(proxyCredentials, instanceOf(UsernamePasswordCredentials.class)); UsernamePasswordCredentials userCredentials = (UsernamePasswordCredentials) proxyCredentials; assertEquals("proxyUsername", userCredentials.getUserName()); } @Test public void createKerberosCredentialsProvider() { CredentialsProvider credentialsProvider = getCredentialsProvider(AuthSchemes.KERBEROS); Credentials credentials = credentialsProvider.getCredentials(new AuthScope("host", 80)); assertThat(credentials, instanceOf(Credentials.class)); } @Test public void createDefaultCredentialsProvider() { CredentialsProvider credentialsProvider = getCredentialsProvider(""); Credentials credentials = credentialsProvider.getCredentials(new AuthScope("host", 80)); assertThat(credentials, instanceOf(UsernamePasswordCredentials.class)); UsernamePasswordCredentials userCredentials = (UsernamePasswordCredentials) credentials; assertEquals("pass", userCredentials.getPassword()); } @Test public void createCredentialProviderWithInvalidProxyPort() { final String invalidProxyPort = "invalidProxyPort"; final String expectedExceptionMessage = "Invalid value '" + invalidProxyPort + "' for input 'proxyPort'. Valid Values: -1 and integer values greater than 0"; final AuthTypes authTypes = new AuthTypes(""); CredentialsProviderBuilder builder = new CredentialsProviderBuilder() .setAuthTypes(authTypes) .setProxyPort(invalidProxyPort) .setProxyUsername("proxyUsername"); exception.expect(IllegalArgumentException.class); exception.expectMessage(expectedExceptionMessage); builder.buildCredentialsProvider(); } @Test public void createCredentialProviderWithNegativeProxyPort() { final String invalidProxyPort = "-2"; final String expectedExceptionMessage = "Invalid value '" + invalidProxyPort + "' for input 'proxyPort'. Valid Values: -1 and integer values greater than 0"; final AuthTypes authTypes = new AuthTypes(""); CredentialsProviderBuilder builder = new CredentialsProviderBuilder() .setAuthTypes(authTypes) .setProxyPort(invalidProxyPort) .setProxyUsername("proxyUsername"); exception.expect(IllegalArgumentException.class); exception.expectMessage(expectedExceptionMessage); builder.buildCredentialsProvider(); } private CredentialsProvider getCredentialsProvider(String authType) { AuthTypes authTypes = new AuthTypes(authType); CredentialsProviderBuilder builder = new CredentialsProviderBuilder() .setAuthTypes(authTypes) .setUsername("DOMAIN\\username") .setPassword("pass") .setHost("host") .setPort("80") .setProxyHost("proxy") .setProxyPort("8080") .setProxyPassword("proxyPass") .setProxyUsername("proxyUsername"); return builder.buildCredentialsProvider(); } }