Skip to content

Commit 049b9ff

Browse files
authored
test: add Unit Tests to core package (#243)
1 parent acb303e commit 049b9ff

16 files changed

+736
-11
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ dependencies {
2929
implementation 'org.apache.httpcomponents:httpclient:4.5.13'
3030
implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.0'
3131

32-
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
32+
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0','org.mockito:mockito-core:4.11.0'
3333
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
3434
testAnnotationProcessor 'org.projectlombok:lombok:1.18.24'
3535
}

src/main/java/com/crowdin/client/core/CrowdinApi.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import com.crowdin.client.core.http.impl.json.JacksonJsonTransformer;
77
import com.crowdin.client.core.model.ClientConfig;
88
import com.crowdin.client.core.model.Credentials;
9+
import org.apache.http.client.config.CookieSpecs;
10+
import org.apache.http.client.config.RequestConfig;
11+
import org.apache.http.impl.client.HttpClientBuilder;
912

1013
import java.util.Collections;
1114
import java.util.HashMap;
@@ -18,7 +21,12 @@ public abstract class CrowdinApi {
1821
protected final String url;
1922

2023
public CrowdinApi(Credentials credentials) {
21-
this(credentials, ClientConfig.builder().httpClient(new ApacheHttpClient(credentials, new JacksonJsonTransformer(), Collections.emptyMap())).build());
24+
this(credentials, ClientConfig.builder()
25+
.httpClient(new ApacheHttpClient(credentials, new JacksonJsonTransformer(), Collections.emptyMap(), HttpClientBuilder
26+
.create()
27+
.setDefaultRequestConfig(RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build())
28+
.build()))
29+
.build());
2230
}
2331

2432
public CrowdinApi(Credentials credentials, ClientConfig clientConfig) {

src/main/java/com/crowdin/client/core/http/impl/http/ApacheHttpClient.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,11 @@ public class ApacheHttpClient implements HttpClient {
4949

5050
private final CloseableHttpClient httpClient;
5151

52-
public ApacheHttpClient(Credentials credentials, JsonTransformer jsonTransformer, Map<String, ?> defaultHeaders) {
52+
public ApacheHttpClient(Credentials credentials, JsonTransformer jsonTransformer, Map<String, ?> defaultHeaders, CloseableHttpClient httpClient) {
5353
this.credentials = credentials;
5454
this.jsonTransformer = jsonTransformer;
5555
this.defaultHeaders = defaultHeaders;
56-
this.httpClient = HttpClientBuilder
57-
.create()
58-
.setDefaultRequestConfig(RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build())
59-
.build();
56+
this.httpClient = httpClient;
6057
}
6158

6259
public ApacheHttpClient(Credentials credentials, JsonTransformer jsonTransformer, Map<String, ?> defaultHeaders, ClientConfig.Host proxy, ClientConfig.UsernamePasswordCredentials proxyCreds, Integer timeoutMs) {

src/main/java/com/crowdin/client/core/http/impl/json/EmptyArrayToNullDeserializer.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.crowdin.client.core.http.impl.json;
22

3-
import com.fasterxml.jackson.core.JacksonException;
43
import com.fasterxml.jackson.core.JsonParser;
54
import com.fasterxml.jackson.core.JsonToken;
65
import com.fasterxml.jackson.databind.*;
@@ -23,7 +22,7 @@ public EmptyArrayToNullDeserializer(JavaType type) {
2322
}
2423

2524
@Override
26-
public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JacksonException {
25+
public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
2726
if (p.getCurrentToken() == JsonToken.VALUE_NULL) {
2827
return null;
2928
}
@@ -43,11 +42,11 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOEx
4342
}
4443

4544
private static boolean isCollectionType(Class<?> type) {
46-
return type.isArray() && Collection.class.isAssignableFrom(type);
45+
return type.isArray() || Collection.class.isAssignableFrom(type);
4746
}
4847

4948
@Override
50-
public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property) throws JsonMappingException {
49+
public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property) {
5150
return new EmptyArrayToNullDeserializer(property.getType());
5251
}
5352
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.crowdin.client.core.http;
2+
3+
import com.crowdin.client.Client;
4+
import com.crowdin.client.core.model.ClientConfig;
5+
import com.crowdin.client.core.model.Credentials;
6+
7+
public class CrowdinApiConstructorTest extends Client {
8+
9+
public CrowdinApiConstructorTest(Credentials credentials, ClientConfig clientConfig) {
10+
super(credentials, clientConfig);
11+
}
12+
13+
public CrowdinApiConstructorTest(Credentials credentials) {
14+
super(credentials);
15+
}
16+
17+
public HttpClient getHttpClient() {
18+
return this.httpClient;
19+
}
20+
21+
public String geturl() {
22+
return this.url;
23+
}
24+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.crowdin.client.core.http;
2+
3+
import com.crowdin.client.core.http.impl.http.ApacheHttpClient;
4+
import com.crowdin.client.core.http.impl.json.JacksonJsonTransformer;
5+
import com.crowdin.client.core.model.ClientConfig;
6+
import com.crowdin.client.core.model.Credentials;
7+
import com.crowdin.client.framework.TestHttpClient;
8+
import org.junit.jupiter.api.Test;
9+
import org.junit.jupiter.api.TestInstance;
10+
11+
import static org.junit.jupiter.api.Assertions.*;
12+
13+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
14+
public class CrowdinApiTest {
15+
16+
private final String organization = "testOrganization";
17+
private final String token = "testToken";
18+
private final String regularUrl = "https://api.crowdin.com/api/v2";
19+
private final String organizationUrl = "https://testOrganization.api.crowdin.com/api/v2";
20+
21+
@Test
22+
public void testCrowdinApiWithNullInputs() {
23+
CrowdinApiConstructorTest client = new CrowdinApiConstructorTest(new Credentials(null, null, null), ClientConfig.builder()
24+
.userAgent("User-Agent")
25+
.build());
26+
assertNotNull(client);
27+
assertInstanceOf(ApacheHttpClient.class, client.getHttpClient());
28+
}
29+
30+
@Test
31+
public void testCrowdinApiWithAgent() {
32+
CrowdinApiConstructorTest client = new CrowdinApiConstructorTest(new Credentials(null, null, null), ClientConfig.builder()
33+
.integrationUserAgent("X-Crowdin-Integrations-User-Agent")
34+
.jsonTransformer(new JacksonJsonTransformer())
35+
.build());
36+
assertNotNull(client);
37+
assertInstanceOf(ApacheHttpClient.class, client.getHttpClient());
38+
assertEquals(client.geturl(), regularUrl);
39+
}
40+
41+
@Test
42+
public void testCrowdinApiWithBaseUrl() {
43+
CrowdinApiConstructorTest client = new CrowdinApiConstructorTest(new Credentials(token, organization, "/"), ClientConfig.builder()
44+
.httpClient(new TestHttpClient()).build());
45+
assertEquals(client.geturl(), "/api/v2");
46+
}
47+
48+
@Test
49+
public void testCrowdinApiWithBaseUrlEmpty() {
50+
CrowdinApiConstructorTest client = new CrowdinApiConstructorTest(new Credentials(token, organization, ""), ClientConfig.builder()
51+
.userAgent("User-Agent")
52+
.httpClient(new TestHttpClient()).build());
53+
assertEquals(client.geturl(), "/api/v2");
54+
}
55+
56+
@Test
57+
public void testCrowdinApiForRegularUrl() {
58+
CrowdinApiConstructorTest client = new CrowdinApiConstructorTest(new Credentials(token, null, null), ClientConfig.builder()
59+
.userAgent("User-Agent")
60+
.httpClient(new TestHttpClient()).build());
61+
assertEquals(client.geturl(), regularUrl);
62+
}
63+
64+
@Test
65+
public void testCrowdinApiForOrganizationUrl() {
66+
CrowdinApiConstructorTest client = new CrowdinApiConstructorTest(new Credentials(token, organization, null), ClientConfig.builder()
67+
.userAgent("User-Agent")
68+
.httpClient(new TestHttpClient()).build());
69+
assertEquals(client.geturl(), organizationUrl);
70+
}
71+
72+
@Test
73+
public void testCrowdinApiConstructor() {
74+
CrowdinApiConstructorTest client = new CrowdinApiConstructorTest(new Credentials(token, organization, null));
75+
assertInstanceOf(ApacheHttpClient.class, client.getHttpClient());
76+
assertEquals(client.geturl(), organizationUrl);
77+
}
78+
79+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.crowdin.client.core.http.exception;
2+
3+
import com.crowdin.client.core.http.exceptions.HttpException;
4+
import org.junit.jupiter.api.Test;
5+
6+
import static org.junit.jupiter.api.Assertions.assertEquals;
7+
8+
public class HttpExceptionTest {
9+
10+
@Test
11+
public void httpExceptionFromTest() {
12+
HttpException message = HttpException.fromMessage("Exception message!");
13+
assertEquals(message.getError().getMessage(), "Exception message!");
14+
}
15+
}

0 commit comments

Comments
 (0)