Skip to content

Commit 76ede68

Browse files
committed
Revert "[CYB-207] use https for mock server for all tests."
This reverts commit 9a2e01e.
1 parent 3b9cb5d commit 76ede68

File tree

12 files changed

+217
-110
lines changed

12 files changed

+217
-110
lines changed

flink-cyber/flink-enrichment/flink-enrichment-lookup-rest/src/main/java/com/cloudera/cyber/enrichment/rest/AsyncHttpRequest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.ArrayList;
2727
import java.util.Collection;
2828
import java.util.Collections;
29+
import java.util.function.Predicate;
2930
import java.util.List;
3031

3132
import static com.cloudera.cyber.DataQualityMessageLevel.ERROR;

flink-cyber/flink-enrichment/flink-enrichment-lookup-rest/src/main/java/com/cloudera/cyber/enrichment/rest/RestLookupJob.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;
2121
import lombok.extern.slf4j.Slf4j;
2222
import org.apache.flink.api.java.utils.ParameterTool;
23+
import org.apache.flink.streaming.api.TimeCharacteristic;
2324
import org.apache.flink.streaming.api.datastream.AsyncDataStream;
2425
import org.apache.flink.streaming.api.datastream.DataStream;
2526
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
@@ -29,7 +30,6 @@
2930
import java.nio.file.Files;
3031
import java.nio.file.Paths;
3132
import java.util.ArrayList;
32-
import java.util.Base64;
3333
import java.util.List;
3434
import java.util.Map;
3535
import java.util.concurrent.TimeUnit;
@@ -60,7 +60,7 @@ private static DataStream<Message> enrich(DataStream<Message> source, List<RestE
6060
Preconditions.checkNotNull(config.getSources(),"specify a list of source names or ANY to match any source");
6161
Preconditions.checkArgument(!config.getSources().isEmpty(), "specify a list of source names or ANY to match any source");
6262
AsyncHttpRequest asyncHttpRequest = new AsyncHttpRequest(config);
63-
String processId = "rest-" + Base64.getEncoder().encodeToString(md5(source + config.getEndpointTemplate()));
63+
String processId = "rest-" + md5(source + config.getEndpointTemplate());
6464

6565
return AsyncDataStream.unorderedWait(
6666
in,
@@ -72,6 +72,7 @@ private static DataStream<Message> enrich(DataStream<Message> source, List<RestE
7272

7373
protected StreamExecutionEnvironment createPipeline(ParameterTool params) throws IOException {
7474
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
75+
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
7576
env.enableCheckpointing(5000);
7677
FlinkUtils.setupEnv(env, params);
7778

flink-cyber/flink-enrichment/flink-enrichment-lookup-rest/src/test/java/com/cloudera/cyber/enrichment/rest/AsyncHttpRequestTest.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,16 @@
3232

3333
public class AsyncHttpRequestTest extends RestRequestTest {
3434

35+
private static MockRestServer mockRestServer;
36+
3537
@BeforeClass
36-
public static void createMockServices() {
37-
startMockServer();
38+
public static void startMockServer() {
39+
mockRestServer = new MockRestServer(false);
3840
}
3941

4042
@AfterClass
41-
public static void stopMockServices() {
42-
stopMockServer();
43+
public static void stopMockServer() {
44+
mockRestServer.close();
4345
}
4446

4547
private Message buildMessage(String source, String fieldName, String fieldValue) {
@@ -131,7 +133,7 @@ public void testGetError() throws Exception {
131133
}};
132134

133135
String mockHostAndPort = mockRestServer.getMockHostAndPort();
134-
String url = String.format("%s://%s/asset?id=56", MockRestServer.ENCRYPTED_PROTOCOL, mockHostAndPort);
136+
String url = String.format("http://%s/asset?id=56", mockHostAndPort);
135137
String exceptionMessage = String.format(RestRequest.REST_REQUEST_HTTP_FAILURE, "HTTP/1.1 503 Service Unavailable");
136138
List<DataQualityMessage> expectedQualityMessages = Collections.singletonList(DataQualityMessage.builder().
137139
feature(AsyncHttpRequest.REST_ENRICHMENT_FEATURE).
@@ -177,7 +179,7 @@ private void testGetAsset(String fieldName, String assetId, Map<String, Object>
177179
}
178180

179181
private void testGetAsset(ArrayList<String> enrichmentSources, String messageSource, String fieldName, String assetId, Map<String, Object> expectedExtensions, Collection<DataQualityMessage> expectedDataQualityMessages) throws Exception {
180-
AsyncHttpRequest request = new AsyncHttpRequest(mockRestServer.configureGetAssetRequest(MockRestServer.ENCRYPTED_PROTOCOL).sources(enrichmentSources).build());
182+
AsyncHttpRequest request = new AsyncHttpRequest(mockRestServer.configureGetAssetRequest().sources(enrichmentSources).build());
181183
request.open(new Configuration());
182184

183185
AsyncResult result = new AsyncResult();

flink-cyber/flink-enrichment/flink-enrichment-lookup-rest/src/test/java/com/cloudera/cyber/enrichment/rest/GetRestRequestTest.java

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,30 +15,25 @@
1515
import com.cloudera.cyber.enrichment.rest.impl.MockRestServer;
1616
import com.google.common.collect.Lists;
1717
import lombok.extern.slf4j.Slf4j;
18-
import org.junit.AfterClass;
1918
import org.junit.Assert;
20-
import org.junit.BeforeClass;
19+
import org.junit.Ignore;
2120
import org.junit.Test;
2221

2322
import java.util.HashMap;
2423
import java.util.Map;
2524

2625
@Slf4j
26+
// tests will run either with or without tls when junit runs derived classes
27+
@Ignore
2728
public class GetRestRequestTest extends RestRequestTest {
2829

29-
@BeforeClass
30-
public static void createMockServices() {
31-
startMockServer();
32-
}
33-
34-
@AfterClass
35-
public static void stopMockServices() {
36-
stopMockServer();
30+
public static void createMockService(boolean enableTlsMutualAuth) {
31+
startMockServer(enableTlsMutualAuth);
3732
}
3833

3934
@Test
4035
public void testSimpleGet() throws Exception {
41-
RestEnrichmentConfig config = mockRestServer.configureGetUserRequest(MockRestServer.ENCRYPTED_PROTOCOL).build();
36+
RestEnrichmentConfig config = mockRestServer.configureGetUserRequest().build();
4237

4338
Map<String, String> variables = new HashMap<String, String>() {{
4439
put("name", "Chris");
@@ -49,7 +44,7 @@ public void testSimpleGet() throws Exception {
4944

5045
@Test
5146
public void testPropertiesNull() throws Exception {
52-
RestEnrichmentConfig config = mockRestServer.getBuilder(null, MockRestServer.ENCRYPTED_PROTOCOL).sources(Lists.newArrayList(MockRestServer.USER_SOURCE)).
47+
RestEnrichmentConfig config = mockRestServer.getBuilder(null).sources(Lists.newArrayList(MockRestServer.USER_SOURCE)).
5348
endpointTemplate(String.format("%s://%s/user?name=${name}", mockRestServer.getMockProtocol(), mockRestServer.getMockHostAndPort())).build();
5449

5550
Map<String, String> variables = new HashMap<String, String>() {{
@@ -62,18 +57,18 @@ public void testPropertiesNull() throws Exception {
6257

6358
@Test
6459
public void testBasicAuthGet() throws Exception {
65-
RestRequestResult result = makeAssetRequest(MockRestServer.ASSET_ID, mockRestServer);
60+
RestRequestResult result = makeAssetRequest(MockRestServer.ASSET_ID);
6661
Assert.assertEquals(MockRestServer.ASSET_LOCATION, result.getExtensions().get(MockRestServer.ASSET_LOCATION_PROPERTY));
6762
}
6863

6964
@Test
7065
public void testServerError() throws Exception {
71-
RestRequestResult result = makeAssetRequest(MockRestServer.SERVER_ERROR_ASSET_ID, mockRestServer);
72-
verifyErrorResult(result, "Rest request url='%s://%s/asset?id=56' entity='null' failed 'Rest request failed due to 'HTTP/1.1 503 Service Unavailable'.'", mockRestServer);
66+
RestRequestResult result = makeAssetRequest(MockRestServer.SERVER_ERROR_ASSET_ID);
67+
verifyErrorResult(result, "Rest request url='%s://%s/asset?id=56' entity='null' failed 'Rest request failed due to 'HTTP/1.1 503 Service Unavailable'.'");
7368
}
7469

75-
private RestRequestResult makeAssetRequest(String assetId, MockRestServer mockRestServer) throws Exception {
76-
RestEnrichmentConfig config = mockRestServer.configureGetAssetRequest(MockRestServer.ENCRYPTED_PROTOCOL).build();
70+
private RestRequestResult makeAssetRequest(String assetId) throws Exception {
71+
RestEnrichmentConfig config = mockRestServer.configureGetAssetRequest().build();
7772
Map<String, String> variables = new HashMap<String, String>() {{
7873
put("id", assetId);
7974
}};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright 2020 - 2022 Cloudera. All Rights Reserved.
3+
*
4+
* This file is licensed under the Apache License Version 2.0 (the "License"). You may not use this file
5+
* except in compliance with the License. You may obtain a copy of the License at
6+
* http://www.apache.org/licenses/LICENSE-2.0.
7+
*
8+
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
9+
* either express or implied. Refer to the License for the specific permissions and
10+
* limitations governing your use of the file.
11+
*/
12+
13+
package com.cloudera.cyber.enrichment.rest;
14+
15+
import org.junit.AfterClass;
16+
import org.junit.BeforeClass;
17+
18+
public class NonSecureGetRequestTest extends GetRestRequestTest {
19+
@BeforeClass
20+
public static void createMockService() {
21+
createMockService(false);
22+
}
23+
24+
@AfterClass
25+
public static void stopMockServer() {
26+
mockRestServer.close();
27+
}
28+
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Copyright 2020 - 2022 Cloudera. All Rights Reserved.
3+
*
4+
* This file is licensed under the Apache License Version 2.0 (the "License"). You may not use this file
5+
* except in compliance with the License. You may obtain a copy of the License at
6+
* http://www.apache.org/licenses/LICENSE-2.0.
7+
*
8+
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
9+
* either express or implied. Refer to the License for the specific permissions and
10+
* limitations governing your use of the file.
11+
*/
12+
13+
package com.cloudera.cyber.enrichment.rest;
14+
15+
import org.junit.AfterClass;
16+
import org.junit.BeforeClass;
17+
18+
public class NonSecurePostRestRequestTest extends PostRestRequestTest {
19+
20+
@BeforeClass
21+
public static void createMockService() {
22+
createMockService(false);
23+
}
24+
25+
@AfterClass
26+
public static void stopMockServer() {
27+
mockRestServer.close();
28+
}
29+
30+
}

flink-cyber/flink-enrichment/flink-enrichment-lookup-rest/src/test/java/com/cloudera/cyber/enrichment/rest/PostRestRequestTest.java

Lines changed: 18 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,8 @@
1515
import com.cloudera.cyber.enrichment.rest.impl.MockRestServer;
1616
import com.google.common.collect.Lists;
1717
import org.apache.http.client.methods.HttpPost;
18-
import org.hamcrest.Matcher;
19-
import org.junit.AfterClass;
2018
import org.junit.Assert;
21-
import org.junit.BeforeClass;
19+
import org.junit.Ignore;
2220
import org.junit.Test;
2321

2422
import javax.annotation.Nonnull;
@@ -30,29 +28,22 @@
3028
import java.util.concurrent.CompletableFuture;
3129
import java.util.concurrent.Executors;
3230

33-
import static org.hamcrest.Matchers.containsString;
34-
import static org.junit.Assert.assertThat;
35-
31+
// tests will run either with or without tls when junit runs derived classes
32+
@Ignore
3633
public class PostRestRequestTest extends RestRequestTest {
3734
private static RestEnrichmentConfig modelResultPostRequest;
3835

39-
@BeforeClass
40-
public static void createMockServices() {
41-
startMockServer();
42-
modelResultPostRequest = mockRestServer.configureModelPostRequest(MockRestServer.ENCRYPTED_PROTOCOL).build();
43-
}
44-
45-
@AfterClass
46-
public static void stopMockServices() {
47-
stopMockServer();
36+
public static void createMockService(boolean enableTlsMutualAuth) {
37+
startMockServer(enableTlsMutualAuth);
38+
modelResultPostRequest = mockRestServer.configureModelPostRequest().build();
4839
}
4940

5041
@Test
5142
public void testSimplePostCModel() throws Exception {
5243
testSuccessfulModelPosts(modelResultPostRequest);
5344
}
5445

55-
private void testSuccessfulModelPosts(RestEnrichmentConfig config) throws Exception {
46+
protected void testSuccessfulModelPosts(RestEnrichmentConfig config) throws Exception {
5647
for(MockRestServer.ExpectedModelResult expectedModelResult : MockRestServer.expectedModelResults) {
5748
if (expectedModelResult.isSuccess()) {
5849
testDomain(config, expectedModelResult.getDomainName(), expectedModelResult.isLegit());
@@ -63,24 +54,24 @@ private void testSuccessfulModelPosts(RestEnrichmentConfig config) throws Except
6354
@Test
6455
public void testHttp200StatusButResultIndicatesError() throws Exception {
6556
String expectedErrorFormat = "Rest request url='%s://%s/model' entity='{\"accessKey\":\"mup8kz1hsl3erczwepbt8jupamita6y6\",\"request\":{\"domain\":\"unsuccessfuldomain\"}}' failed 'Rest request returned a success code but the content indicated failure.'";
66-
testHttpFailedRequest(MockRestServer.UNSUCCESSFUL_DOMAIN, expectedErrorFormat, modelResultPostRequest, mockRestServer);
67-
}
57+
testHttpFailedRequest(MockRestServer.UNSUCCESSFUL_DOMAIN, expectedErrorFormat);
6858

59+
}
6960
@Test
7061
public void testHttp400Exception() throws Exception {
7162
String expectedErrorFormat = "Rest request url='%s://%s/model' entity='{\"accessKey\":\"mup8kz1hsl3erczwepbt8jupamita6y6\",\"request\":{\"domain\":\"clienterror\"}}' failed 'Rest request failed due to 'HTTP/1.1 400 Bad Request'.'";
72-
testHttpFailedRequest(MockRestServer.CLIENT_ERROR_DOMAIN, expectedErrorFormat, modelResultPostRequest, mockRestServer);
63+
testHttpFailedRequest(MockRestServer.CLIENT_ERROR_DOMAIN, expectedErrorFormat);
7364
}
7465

75-
private void testHttpFailedRequest(String domainName, String errorMessageFormat, RestEnrichmentConfig modelResultPostRequest, MockRestServer mockRestServer) throws Exception {
66+
public void testHttpFailedRequest(String domainName, String errorMessageFormat) throws Exception {
7667
RestRequest request = modelResultPostRequest.createRestEnrichmentRequest();
7768
Map<String, String> variables = new HashMap<String, String>() {
7869
{
7970
put(MockRestServer.DOMAIN_EXTENSION_NAME, domainName);
8071
}
8172
};
8273
RestRequestResult result = request.getResult(true, variables).get();
83-
verifyErrorResult(result, errorMessageFormat, mockRestServer);
74+
verifyErrorResult(result, errorMessageFormat);
8475
}
8576

8677
private static class MockThrowingPostRequest extends PostRestRequest {
@@ -96,52 +87,30 @@ protected void addEntityToRequest(@Nonnull HttpPost postRequest, @Nonnull String
9687

9788
@Test
9889
public void testUnsupportedCharacterSetException() throws Exception {
90+
9991
MockThrowingPostRequest throwingPostRequest = new MockThrowingPostRequest(modelResultPostRequest);
10092
RestRequestKey key = throwingPostRequest.getKey(new HashMap<String, String>() {{ put(MockRestServer.DOMAIN_EXTENSION_NAME, "mydomain");}});
10193
CompletableFuture<RestRequestResult> future = new MockThrowingPostRequest(modelResultPostRequest).asyncLoad(key, Executors.newFixedThreadPool(1));
10294
RestRequestResult result = future.get();
10395
String expectedErrorFormat = "Rest request url='%s://%s/model' entity='{\"accessKey\":\"mup8kz1hsl3erczwepbt8jupamita6y6\",\"request\":{\"domain\":\"mydomain\"}}' failed 'Default UnsupportedEndcodingException message'";
104-
verifyErrorResult(result, expectedErrorFormat, mockRestServer);
96+
verifyErrorResult(result, expectedErrorFormat);
10597
}
10698

10799
@Test
108100
public void testUndefinedVariableWithAnyMatchIgnoresKeyErrors() throws Exception {
109-
RestEnrichmentConfig anyMatchRequest = mockRestServer.configureModelPostRequest(MockRestServer.ENCRYPTED_PROTOCOL).sources(Lists.newArrayList(AsyncHttpRequest.ANY_SOURCE_NAME)).build();
101+
RestEnrichmentConfig anyMatchRequest = mockRestServer.configureModelPostRequest().sources(Lists.newArrayList(AsyncHttpRequest.ANY_SOURCE_NAME)).build();
110102
// accessing an undefined field in a key with any source match does not report an error
111103
testDomain(anyMatchRequest, new ArrayList<>());
112104
}
113105

114-
@Test
115-
public void testTlsWithAlias() throws Exception {
116-
RestEnrichmentConfig.RestEnrichmentConfigBuilder modelResultPostRequestWithKeyAlias = mockRestServer.configureTLS(mockRestServer.configureModelPostRequest(MockRestServer.ENCRYPTED_PROTOCOL), "client");
117-
testSuccessfulModelPosts(modelResultPostRequestWithKeyAlias.build());
118-
}
119-
120-
@Test
121-
public void testTlsHandshakeException() throws Exception {
122-
RestEnrichmentConfig.RestEnrichmentConfigBuilder modelResultPostRequestWithKeyAlias = mockRestServer.configureTLS(mockRestServer.configureModelPostRequest(MockRestServer.ENCRYPTED_PROTOCOL), "nosuchkeyalias");
123-
RestRequest badHandshakePost = new PostRestRequest(modelResultPostRequestWithKeyAlias.build());
124-
MockRestServer.ExpectedModelResult expectedResult = MockRestServer.expectedModelResults.get(0);
125-
Map<String, String> extensions = new HashMap<String, String>() {{
126-
put(MockRestServer.DOMAIN_EXTENSION_NAME, expectedResult.getDomainName());
127-
}};
128-
RestRequestResult result = badHandshakePost.getResult(true, extensions).get();
129-
130-
Assert.assertTrue(result.getExtensions().isEmpty());
131-
List<String> errors = result.getErrors();
132-
Assert.assertEquals(1, errors.size());
133-
Matcher<String> expectedString = containsString(String.format("Rest request url='%s://%s/model' entity='{\"accessKey\":\"mup8kz1hsl3erczwepbt8jupamita6y6\",\"request\":{\"domain\":\"google\"}}'", mockRestServer.getMockProtocol(), mockRestServer.getMockHostAndPort()));
134-
assertThat(errors.get(0), expectedString);
135-
}
136-
137106
@Test
138107
public void testUndefinedVariableWithSpecificMatchReturnsKeyErrors() throws Exception {
139-
RestEnrichmentConfig anyMatchRequest = mockRestServer.configureModelPostRequest(MockRestServer.ENCRYPTED_PROTOCOL).build();
108+
RestEnrichmentConfig anyMatchRequest = mockRestServer.configureModelPostRequest().build();
140109
// accessing an undefined field in a key with a specific source match fails with a key error
141110
testDomain(anyMatchRequest, Lists.newArrayList("Variable(s) 'domain' required by rest entity are undefined"));
142111
}
143112

144-
private void testDomain(RestEnrichmentConfig config, String domainName, Boolean legit) throws Exception {
113+
protected void testDomain(RestEnrichmentConfig config, String domainName, Boolean legit) throws Exception {
145114
Map<String, String> variables = new HashMap<String, String>() {{
146115
put(MockRestServer.DOMAIN_EXTENSION_NAME, domainName);
147116
}};
@@ -150,7 +119,7 @@ private void testDomain(RestEnrichmentConfig config, String domainName, Boolean
150119
Assert.assertTrue(result.getErrors().isEmpty());
151120
}
152121

153-
private void testDomain(RestEnrichmentConfig config, List<String> expectedErrors) throws Exception {
122+
protected void testDomain(RestEnrichmentConfig config, List<String> expectedErrors) throws Exception {
154123
Map<String, String> variables = new HashMap<String, String>() {{
155124
put("wrong field name", "testdomain");
156125
}};

flink-cyber/flink-enrichment/flink-enrichment-lookup-rest/src/test/java/com/cloudera/cyber/enrichment/rest/RestLookupJobTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ public static void startMockRestServer() throws IOException {
5959
mockRestServer = new MockRestServer(true);
6060
File configFile = configTempFolder.newFile("rest-job-test.json");
6161
List<RestEnrichmentConfig> modelRestConfig = new ArrayList<>();
62-
modelRestConfig.add(mockRestServer.configureModelPostRequest(MockRestServer.ENCRYPTED_PROTOCOL).build());
63-
modelRestConfig.add(mockRestServer.configureGetAssetRequest(MockRestServer.ENCRYPTED_PROTOCOL).build());
64-
modelRestConfig.add(mockRestServer.configureGetUserRequest(MockRestServer.ENCRYPTED_PROTOCOL).build());
62+
modelRestConfig.add(mockRestServer.configureModelPostRequest().build());
63+
modelRestConfig.add(mockRestServer.configureGetAssetRequest().build());
64+
modelRestConfig.add(mockRestServer.configureGetUserRequest().build());
6565
ObjectWriter ow = getConfigObjectMapper().writerFor(new TypeReference<ArrayList<RestEnrichmentConfig>>() {
6666
});
6767
ow.writeValue(configFile, modelRestConfig);

flink-cyber/flink-enrichment/flink-enrichment-lookup-rest/src/test/java/com/cloudera/cyber/enrichment/rest/RestRequestTest.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,8 @@ public abstract class RestRequestTest {
2222
protected static MockRestServer mockRestServer;
2323

2424

25-
protected static void startMockServer() {
26-
mockRestServer = new MockRestServer(true);
27-
}
28-
29-
protected static void stopMockServer() {
30-
if (mockRestServer != null) {
31-
mockRestServer.close();
32-
}
25+
protected static void startMockServer(boolean enableTlsMutualAuth) {
26+
mockRestServer = new MockRestServer(enableTlsMutualAuth);
3327
}
3428

3529
protected RestRequestResult makeRequest(RestEnrichmentConfig config, Map<String, String> variables) throws Exception {
@@ -38,7 +32,7 @@ protected RestRequestResult makeRequest(RestEnrichmentConfig config, Map<String,
3832
}
3933
}
4034

41-
protected void verifyErrorResult(RestRequestResult result, String expectedErrorFormat, MockRestServer mockRestServer) {
35+
protected void verifyErrorResult(RestRequestResult result, String expectedErrorFormat) {
4236
Assert.assertTrue(result.getExtensions().isEmpty());
4337
List<String> errors = result.getErrors();
4438
Assert.assertEquals(1, errors.size());

0 commit comments

Comments
 (0)