Skip to content

Commit

Permalink
Merge fc1c4e6 into 499a870
Browse files Browse the repository at this point in the history
  • Loading branch information
yrkkap committed Nov 6, 2019
2 parents 499a870 + fc1c4e6 commit c9f4135
Show file tree
Hide file tree
Showing 8 changed files with 441 additions and 58 deletions.
49 changes: 25 additions & 24 deletions src/test/java/coresearch/cvurl/io/model/ConfigurationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,37 @@

import coresearch.cvurl.io.constant.HttpClientMode;
import coresearch.cvurl.io.internal.configuration.RequestConfiguration;
import coresearch.cvurl.io.mapper.GenericMapper;
import coresearch.cvurl.io.mapper.MapperFactory;
import coresearch.cvurl.io.mapper.impl.JacksonMapper;
import coresearch.cvurl.io.utils.MockHttpClient;
import coresearch.cvurl.io.utils.MockProxySelector;
import org.junit.jupiter.api.Test;

import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLParameters;
import java.net.Authenticator;
import java.net.CookieHandler;
import java.net.ProxySelector;
import java.net.CookieManager;
import java.net.http.HttpClient;
import java.security.NoSuchAlgorithmException;
import java.time.Duration;
import java.util.Arrays;
import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.mock;

public class ConfigurationTest {

@Test
public void builderTest() {
public void builderTest() throws NoSuchAlgorithmException {
//given
var authenticator = mock(Authenticator.class);
var authenticator = new Authenticator() {};
var connectTimeout = Duration.ofSeconds(1);
var cookieHandler = mock(CookieHandler.class);
var executor = mock(Executor.class);
var followRedirects = mock(HttpClient.Redirect.class);
var proxySelector = mock(ProxySelector.class);
var sslContext = mock(SSLContext.class);
var cookieHandler = new CookieManager();
var executor = Executors.newFixedThreadPool(1);
var followRedirects = HttpClient.Redirect.NEVER;
var proxySelector = MockProxySelector.create();
var sslContext = SSLContext.getDefault();
var sslParameters = new SSLParameters(new String[]{"test"});
var priority = 1;
var version = HttpClient.Version.HTTP_1_1;
Expand Down Expand Up @@ -63,15 +64,15 @@ public void builderTest() {
}

@Test
public void createHttpClientTest() {
public void createHttpClientTest() throws NoSuchAlgorithmException {
//given
var authenticator = mock(Authenticator.class);
var authenticator = new Authenticator() {};
var connectTimeout = Duration.ofSeconds(1);
var cookieHandler = mock(CookieHandler.class);
var executor = mock(Executor.class);
var followRedirects = mock(HttpClient.Redirect.class);
var proxySelector = mock(ProxySelector.class);
var sslContext = mock(SSLContext.class);
var cookieHandler = new CookieManager();
var executor = Executors.newFixedThreadPool(1);
var followRedirects = HttpClient.Redirect.NEVER;
var proxySelector = MockProxySelector.create();
var sslContext = SSLContext.getDefault();
var sslParameters = new SSLParameters(new String[]{"test"});
var priority = 1;
var version = HttpClient.Version.HTTP_1_1;
Expand Down Expand Up @@ -106,9 +107,9 @@ public void createHttpClientTest() {
@Test
public void httpClientBasedBuilderTest() {
//given
var httpClient = mock(HttpClient.class);
var genericMapper = mock(GenericMapper.class);
var requestTimeout = mock(Duration.class);
var httpClient = MockHttpClient.create();
var genericMapper = MapperFactory.createDefault();
var requestTimeout = Duration.ofSeconds(42);
var acceptCompressed = true;

//when
Expand Down Expand Up @@ -172,8 +173,8 @@ public void setLogEnabledIsMutableTest() {
@Test
public void configurationBuilderTest() {
//given
var httpClient = mock(HttpClient.class);
var genericMapper = mock(GenericMapper.class);
var httpClient = MockHttpClient.create();
var genericMapper = MapperFactory.createDefault();
var clientMode = HttpClientMode.PROTOTYPE;
var timeout = Duration.ofSeconds(1);
var acceptCompressed = true;
Expand Down
39 changes: 17 additions & 22 deletions src/test/java/coresearch/cvurl/io/model/ResponseTest.java
Original file line number Diff line number Diff line change
@@ -1,36 +1,32 @@
package coresearch.cvurl.io.model;

import name.falgout.jeffrey.testing.junit.mockito.MockitoExtension;
import coresearch.cvurl.io.utils.MockHttpRequest;
import coresearch.cvurl.io.utils.MockHttpResponse;
import coresearch.cvurl.io.utils.MockSSLSession;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;

import javax.net.ssl.SSLSession;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.http.HttpClient;
import java.net.http.HttpHeaders;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.List;
import java.util.Map;
import java.util.Optional;

import static org.junit.jupiter.api.Assertions.assertIterableEquals;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

@ExtendWith(MockitoExtension.class)
public class ResponseTest {

@Mock
public HttpResponse<String> httpResponse;
public MockHttpResponse httpResponse = MockHttpResponse.create();

@Test
public void requestTest() {
//given
HttpRequest request = mock(HttpRequest.class);
when(httpResponse.request()).thenReturn(request);
HttpRequest request = MockHttpRequest.create();
httpResponse.setHttpRequest(request);

//when
HttpRequest result = new Response<>(httpResponse).request();
Expand All @@ -42,8 +38,8 @@ public void requestTest() {
@Test
public void previousResponseTest() {
//given
HttpResponse<String> previousResponse = mock(HttpResponse.class);
when(httpResponse.previousResponse()).thenReturn(Optional.of(previousResponse));
HttpResponse<String> previousResponse = MockHttpResponse.create();
httpResponse.setPreviousResponse(previousResponse);

//when
HttpResponse<String> result = new Response<>(httpResponse).previousResponse().orElseThrow(RuntimeException::new);
Expand All @@ -55,8 +51,8 @@ public void previousResponseTest() {
@Test
public void sslSessionTest() {
//given
SSLSession sslSession = mock(SSLSession.class);
when(httpResponse.sslSession()).thenReturn(Optional.of(sslSession));
SSLSession sslSession = MockSSLSession.create();
httpResponse.setSslSession(sslSession);

//when
SSLSession result = new Response<>(httpResponse).sslSession().orElseThrow(RuntimeException::new);
Expand All @@ -66,10 +62,10 @@ public void sslSessionTest() {
}

@Test
public void uriTest() {
public void uriTest() throws URISyntaxException {
//given
URI uri = mock(URI.class);
when(httpResponse.uri()).thenReturn(uri);
URI uri = new URI("//https://www.google.com/");
httpResponse.setUri(uri);

//when
URI result = new Response<>(httpResponse).uri();
Expand All @@ -81,9 +77,8 @@ public void uriTest() {
@Test
public void versionTest() {
//given
HttpClient.Version version = mock(HttpClient.Version.class);
when(httpResponse.version()).thenReturn(version);

HttpClient.Version version = HttpClient.Version.HTTP_1_1;
httpResponse.setVersion(version);
//when
HttpClient.Version result = new Response<>(httpResponse).version();

Expand All @@ -97,7 +92,7 @@ public void getHeaderValuesAsListTest() {
String key = "key";
List<String> values = List.of("val1", "val2");
HttpHeaders headers = HttpHeaders.of(Map.of(key, values), (k, v) -> true);
when(httpResponse.headers()).thenReturn(headers);
httpResponse.setHeaders(headers);

//when
List<String> result = new Response<>(httpResponse).getHeaderValuesAsList(key);
Expand Down
22 changes: 10 additions & 12 deletions src/test/java/coresearch/cvurl/io/request/CVurlRequestTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,24 @@
import coresearch.cvurl.io.helper.model.User;
import coresearch.cvurl.io.internal.configuration.RequestConfiguration;
import coresearch.cvurl.io.mapper.BodyType;
import coresearch.cvurl.io.mapper.GenericMapper;
import coresearch.cvurl.io.mapper.MapperFactory;
import coresearch.cvurl.io.model.Configuration;
import coresearch.cvurl.io.model.Response;
import coresearch.cvurl.io.multipart.MultipartBody;
import coresearch.cvurl.io.multipart.Part;
import coresearch.cvurl.io.utils.MockHttpClient;
import coresearch.cvurl.io.utils.Resources;
import org.apache.http.HttpHeaders;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.*;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
Expand All @@ -44,7 +44,6 @@
import static com.github.tomakehurst.wiremock.client.WireMock.*;
import static java.lang.String.format;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.times;


public class CVurlRequestTest extends AbstractRequestTest {
Expand Down Expand Up @@ -709,21 +708,17 @@ public void asyncAsObjectWithUnparseableBodyTest() throws JsonProcessingExceptio
@Test
public void reusableRequestCreationTest() throws IOException, InterruptedException {
//given
HttpClient httpClient = Mockito.mock(HttpClient.class);
MockHttpClient httpClient = MockHttpClient.create();
Request request = new CVurl(httpClient).get(url).create();

ArgumentCaptor<HttpRequest> httpRequestArgumentCaptor = ArgumentCaptor.forClass(HttpRequest.class);

//when
request.asString();
request.asString();

//then both executions are done on the same request
Mockito.verify(httpClient, times(2)).send(
httpRequestArgumentCaptor.capture(), Mockito.any(HttpResponse.BodyHandler.class));

HttpRequest httpRequest1 = httpRequestArgumentCaptor.getAllValues().get(0);
HttpRequest httpRequest2 = httpRequestArgumentCaptor.getAllValues().get(1);
HttpRequest httpRequest1 = httpClient.requests.get(0);
HttpRequest httpRequest2 = httpClient.requests.get(1);

assertSame(httpRequest1, httpRequest2);
}
Expand Down Expand Up @@ -898,6 +893,9 @@ public void overwritingGlobalRequestConfigurationTest() {
assertEquals(requestConfiguration.isLogEnabled(), logEnabled);
}

private HttpClient httpClient = HttpClient.newHttpClient();
private GenericMapper genericMapper = MapperFactory.createDefault();

private byte[] compressWithGZIP(String str) throws IOException {
var out = new ByteArrayOutputStream();
try (var gzipOutputStream = new GZIPOutputStream(out)) {
Expand Down
89 changes: 89 additions & 0 deletions src/test/java/coresearch/cvurl/io/utils/MockHttpClient.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package coresearch.cvurl.io.utils;

import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLParameters;
import java.io.IOException;
import java.net.Authenticator;
import java.net.CookieHandler;
import java.net.ProxySelector;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;

public class MockHttpClient extends HttpClient {

public List<HttpRequest> requests = new ArrayList<>();

private MockHttpClient() { }

public static MockHttpClient create() {
return new MockHttpClient();
}

@Override
public Optional<CookieHandler> cookieHandler() {
return Optional.empty();
}

@Override
public Optional<Duration> connectTimeout() {
return Optional.empty();
}

@Override
public Redirect followRedirects() {
return null;
}

@Override
public Optional<ProxySelector> proxy() {
return Optional.empty();
}

@Override
public SSLContext sslContext() {
return null;
}

@Override
public SSLParameters sslParameters() {
return null;
}

@Override
public Optional<Authenticator> authenticator() {
return Optional.empty();
}

@Override
public Version version() {
return null;
}

@Override
public Optional<Executor> executor() {
return Optional.empty();
}

@Override
public <T> HttpResponse<T> send(HttpRequest request, HttpResponse.BodyHandler<T> responseBodyHandler) throws IOException, InterruptedException {
requests.add(request);
return null;
}

@Override
public <T> CompletableFuture<HttpResponse<T>> sendAsync(HttpRequest request, HttpResponse.BodyHandler<T> responseBodyHandler) {
return null;
}

@Override
public <T> CompletableFuture<HttpResponse<T>> sendAsync(HttpRequest request, HttpResponse.BodyHandler<T> responseBodyHandler, HttpResponse.PushPromiseHandler<T> pushPromiseHandler) {
return null;
}
}
Loading

0 comments on commit c9f4135

Please sign in to comment.