Skip to content

Commit 02e11fd

Browse files
committed
fix test
1 parent 291f2eb commit 02e11fd

File tree

6 files changed

+97
-21
lines changed

6 files changed

+97
-21
lines changed

src/main/java/org/commcare/formplayer/web/client/CommCareDefaultHeaders.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.commcare.formplayer.util.RequestUtils;
44
import org.javarosa.core.util.PropertyUtils;
5+
import org.springframework.beans.factory.annotation.Autowired;
56
import org.springframework.beans.factory.annotation.Value;
67
import org.springframework.boot.web.client.RestTemplateRequestCustomizer;
78
import org.springframework.data.redis.core.ValueOperations;
@@ -21,13 +22,18 @@ public class CommCareDefaultHeaders implements RestTemplateRequestCustomizer {
2122
private static final String ORIGIN_TOKEN_SLUG = "OriginToken";
2223
private final CommCareRequestFilter requestFilter;
2324

24-
@Resource(name = "redisTemplateString")
2525
private ValueOperations<String, String> originTokens;
2626

27+
@Autowired
2728
public CommCareDefaultHeaders(@Value("${commcarehq.host}") String commcareHost) {
2829
requestFilter = new CommCareRequestFilter(commcareHost);
2930
}
3031

32+
@Resource(name = "redisTemplateString")
33+
public void setOriginTokens(ValueOperations<String, String> originTokens) {
34+
this.originTokens = originTokens;
35+
}
36+
3137
@Override
3238
public void customize(ClientHttpRequest request) {
3339
if (!requestFilter.isMatch(request)) {

src/main/java/org/commcare/formplayer/web/client/RestTemplateConfig.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ public class RestTemplateConfig {
2020

2121
public static String MODE_REPLACE_HOST = "replace-host";
2222

23-
@Autowired
2423
private CommCareDefaultHeaders commCareDefaultHeaders;
2524

2625
@Value("${formplayer.externalRequestMode}")
@@ -65,4 +64,9 @@ public RestTemplate restTemplate(RestTemplateBuilder builder) throws URISyntaxEx
6564
new SessionAuthInterceptor(sessionAuthFilter)
6665
).build();
6766
}
67+
68+
@Autowired
69+
public void setCommCareDefaultHeaders(CommCareDefaultHeaders commCareDefaultHeaders) {
70+
this.commCareDefaultHeaders = commCareDefaultHeaders;
71+
}
6872
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.commcare.formplayer.utils;
2+
3+
import org.commcare.formplayer.web.client.CommCareDefaultHeaders;
4+
import org.commcare.formplayer.web.client.RestTemplateConfig;
5+
import org.mockito.Mock;
6+
import org.mockito.Mockito;
7+
import org.springframework.boot.web.client.RestTemplateBuilder;
8+
import org.springframework.data.redis.core.ValueOperations;
9+
import org.springframework.web.client.RestTemplate;
10+
11+
import java.net.URISyntaxException;
12+
13+
public class MockRestTemplateBuilder {
14+
15+
private String commcareHost = "";
16+
private String formpayerAuthKey = "";
17+
private String externalRequestMode = "";
18+
19+
private ValueOperations originTokens = Mockito.mock(ValueOperations.class);
20+
21+
public MockRestTemplateBuilder withCommcareHost(String commcareHost) {
22+
this.commcareHost = commcareHost;
23+
return this;
24+
}
25+
26+
public MockRestTemplateBuilder withFormpayerAuthKey(String formpayerAuthKey) {
27+
this.formpayerAuthKey = formpayerAuthKey;
28+
return this;
29+
}
30+
31+
public MockRestTemplateBuilder withExternalRequestMode(String externalRequestMode) {
32+
this.externalRequestMode = externalRequestMode;
33+
return this;
34+
}
35+
36+
public RestTemplate getRestTemplate() throws URISyntaxException {
37+
RestTemplateConfig config = new RestTemplateConfig(commcareHost, formpayerAuthKey, externalRequestMode);
38+
CommCareDefaultHeaders commCareDefaultHeaders = new CommCareDefaultHeaders(commcareHost);
39+
commCareDefaultHeaders.setOriginTokens(originTokens);
40+
config.setCommCareDefaultHeaders(commCareDefaultHeaders);
41+
return config.restTemplate(new RestTemplateBuilder());
42+
}
43+
}

src/test/java/org/commcare/formplayer/web/client/RestTemplateAuthTest.java

+19-6
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import org.commcare.formplayer.util.Constants;
44
import org.commcare.formplayer.util.RequestUtils;
55
import org.commcare.formplayer.utils.HqUserDetails;
6+
import org.commcare.formplayer.utils.MockRestTemplateBuilder;
67
import org.commcare.formplayer.utils.WithHqUserSecurityContextFactory;
78
import org.junit.jupiter.api.BeforeEach;
89
import org.junit.jupiter.api.Test;
910
import org.junit.jupiter.api.extension.ExtendWith;
1011
import org.mockito.Mock;
1112
import org.mockito.junit.jupiter.MockitoExtension;
12-
import org.springframework.boot.web.client.RestTemplateBuilder;
13+
import org.springframework.data.redis.core.ValueOperations;
1314
import org.springframework.http.HttpMethod;
1415
import org.springframework.http.HttpStatus;
1516
import org.springframework.http.MediaType;
@@ -24,7 +25,7 @@
2425
import java.nio.charset.StandardCharsets;
2526

2627
import static org.mockito.ArgumentMatchers.eq;
27-
import static org.mockito.Mockito.when;
28+
import static org.mockito.Mockito.lenient;
2829
import static org.springframework.test.web.client.match.MockRestRequestMatchers.*;
2930
import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
3031

@@ -41,27 +42,39 @@ class RestTemplateAuthTest {
4142

4243
@Mock
4344
private HttpServletRequest request;
45+
46+
@Mock
47+
ValueOperations<String, String> originTokens;
48+
4449
private final String commcareHost = "https://www.commcarehq.org";
4550
private final String formplayerAuthKey = "authKey";
4651

4752
@BeforeEach
4853
public void init() throws URISyntaxException {
49-
restTemplate = new RestTemplateConfig(commcareHost, formplayerAuthKey, "")
50-
.restTemplate(new RestTemplateBuilder());
54+
restTemplate = new MockRestTemplateBuilder()
55+
.withCommcareHost(commcareHost)
56+
.withFormpayerAuthKey(formplayerAuthKey)
57+
.getRestTemplate();
5158
mockServer = MockRestServiceServer.createServer(restTemplate);
5259
RequestContextHolder.setRequestAttributes(requestAttributes);
53-
when(requestAttributes.getRequest()).thenReturn(request);
5460
WithHqUserSecurityContextFactory.setSecurityContext(
5561
HqUserDetails.builder().username("testUser").authToken(AUTH_TOKEN).build()
5662
);
5763
}
5864

65+
private void mockGetRequest() {
66+
lenient().when(requestAttributes.getRequest()).thenReturn(request);
67+
}
68+
5969
private void mockHmacRequest() {
60-
when(request.getAttribute(eq(Constants.HMAC_REQUEST_ATTRIBUTE))).thenReturn(true);
70+
mockGetRequest();
71+
lenient().when(request.getAttribute(eq(Constants.HMAC_REQUEST_ATTRIBUTE))).thenReturn(true);
6172
}
6273

6374
@Test
6475
public void testRestTemplateSessionAuth() throws URISyntaxException {
76+
mockGetRequest();
77+
6578
String url = commcareHost + "/a/demo/receiver/1234";
6679

6780
expectRequest(url, HttpMethod.GET)

src/test/java/org/commcare/formplayer/web/client/RestTemplateReplaceHostTest.java

+21-11
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package org.commcare.formplayer.web.client;
22

3-
import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
4-
import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
5-
import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
6-
3+
import org.commcare.formplayer.utils.MockRestTemplateBuilder;
74
import org.junit.jupiter.api.BeforeEach;
85
import org.junit.jupiter.api.Test;
9-
import org.springframework.boot.web.client.RestTemplateBuilder;
6+
import org.junit.jupiter.api.extension.ExtendWith;
7+
import org.mockito.Mock;
8+
import org.mockito.junit.jupiter.MockitoExtension;
9+
import org.springframework.data.redis.core.ValueOperations;
1010
import org.springframework.http.HttpMethod;
1111
import org.springframework.http.HttpStatus;
1212
import org.springframework.http.MediaType;
@@ -17,22 +17,29 @@
1717
import java.net.URI;
1818
import java.net.URISyntaxException;
1919

20+
import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
21+
import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
22+
import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
23+
24+
@ExtendWith(MockitoExtension.class)
2025
class RestTemplateConfigTest_noCustomization {
2126

2227
private RestTemplate restTemplate;
2328

2429
private MockRestServiceServer mockServer;
2530

31+
@Mock
32+
ValueOperations<String, String> originTokens;
33+
2634
@BeforeEach
2735
public void init() throws URISyntaxException {
28-
restTemplate = getRestTemplate("https://web", "");
36+
restTemplate = getRestTemplate("https://web");
2937
mockServer = MockRestServiceServer.createServer(restTemplate);
3038
}
3139

32-
protected RestTemplate getRestTemplate(String commcareHost, String mode)
40+
protected RestTemplate getRestTemplate(String commcareHost)
3341
throws URISyntaxException {
34-
return new RestTemplateConfig(commcareHost, "authKey", mode)
35-
.restTemplate(new RestTemplateBuilder());
42+
return new MockRestTemplateBuilder().withCommcareHost("https://web").getRestTemplate();
3643
}
3744

3845
protected String getExpectedUrl() {
@@ -57,9 +64,12 @@ public void testRestTemplate() throws URISyntaxException {
5764

5865
class RestTemplateConfigTest_replaceHost extends RestTemplateConfigTest_noCustomization {
5966
@Override
60-
public RestTemplate getRestTemplate(String commcareHost, String mode)
67+
public RestTemplate getRestTemplate(String commcareHost)
6168
throws URISyntaxException {
62-
return super.getRestTemplate(commcareHost, RestTemplateConfig.MODE_REPLACE_HOST);
69+
return new MockRestTemplateBuilder()
70+
.withCommcareHost("https://web")
71+
.withExternalRequestMode(RestTemplateConfig.MODE_REPLACE_HOST)
72+
.getRestTemplate();
6373
}
6474

6575
@Override

src/test/java/org/commcare/formplayer/web/client/WebClientTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.google.common.collect.ImmutableListMultimap;
1111

1212
import org.commcare.formplayer.services.RestoreFactory;
13+
import org.commcare.formplayer.utils.MockRestTemplateBuilder;
1314
import org.junit.jupiter.api.Assertions;
1415
import org.junit.jupiter.api.BeforeEach;
1516
import org.junit.jupiter.api.Test;
@@ -41,8 +42,7 @@ public class WebClientTest {
4142

4243
@BeforeEach
4344
public void init() throws URISyntaxException {
44-
RestTemplateConfig config = new RestTemplateConfig("", "", "");
45-
RestTemplate restTemplate = config.restTemplate(new RestTemplateBuilder());
45+
RestTemplate restTemplate = new MockRestTemplateBuilder().getRestTemplate();
4646
mockServer = MockRestServiceServer.createServer(restTemplate);
4747

4848
webClient = new WebClient();

0 commit comments

Comments
 (0)