|
23 | 23 | import com.amazonaws.services.lambda.runtime.Context;
|
24 | 24 | import com.amazonaws.services.lambda.runtime.LambdaLogger;
|
25 | 25 | import com.fasterxml.jackson.core.type.TypeReference;
|
| 26 | +import com.google.common.collect.ImmutableList; |
| 27 | +import com.google.common.collect.ImmutableMap; |
26 | 28 | import java.io.ByteArrayOutputStream;
|
27 | 29 | import java.io.File;
|
28 | 30 | import java.io.FileInputStream;
|
29 | 31 | import java.io.FileNotFoundException;
|
30 | 32 | import java.io.IOException;
|
31 | 33 | import java.io.InputStream;
|
32 | 34 | import java.io.OutputStream;
|
| 35 | +import java.util.Collections; |
33 | 36 | import java.util.List;
|
34 | 37 | import java.util.Map;
|
| 38 | +import org.junit.jupiter.api.Assertions; |
35 | 39 | import org.junit.jupiter.api.BeforeEach;
|
| 40 | +import org.junit.jupiter.api.Test; |
36 | 41 | import org.junit.jupiter.api.extension.ExtendWith;
|
37 | 42 | import org.junit.jupiter.params.ParameterizedTest;
|
38 | 43 | import org.junit.jupiter.params.provider.CsvSource;
|
39 | 44 | import org.mockito.Mock;
|
40 | 45 | import org.mockito.junit.jupiter.MockitoExtension;
|
41 | 46 | import software.amazon.awssdk.http.SdkHttpClient;
|
42 | 47 | import software.amazon.cloudformation.encryption.KMSCipher;
|
| 48 | +import software.amazon.cloudformation.exceptions.TerminalException; |
43 | 49 | import software.amazon.cloudformation.injection.CredentialsProvider;
|
44 | 50 | import software.amazon.cloudformation.loggers.CloudWatchLogPublisher;
|
45 | 51 | import software.amazon.cloudformation.loggers.LogPublisher;
|
|
50 | 56 | import software.amazon.cloudformation.proxy.ProgressEvent;
|
51 | 57 | import software.amazon.cloudformation.proxy.hook.HookHandlerRequest;
|
52 | 58 | import software.amazon.cloudformation.proxy.hook.HookProgressEvent;
|
| 59 | +import software.amazon.cloudformation.proxy.hook.HookRequestData; |
53 | 60 | import software.amazon.cloudformation.proxy.hook.HookStatus;
|
54 | 61 | import software.amazon.cloudformation.proxy.hook.targetmodel.ChangedResource;
|
55 | 62 | import software.amazon.cloudformation.proxy.hook.targetmodel.StackHookTargetModel;
|
@@ -387,37 +394,35 @@ public void invokeHandler_WithStackLevelHook_returnsSuccess(final String request
|
387 | 394 | }
|
388 | 395 | }
|
389 | 396 |
|
390 |
| - // @Test |
391 |
| - // public void testIsHookInvocationPayloadRemote() { |
392 |
| - // List<HookRequestData> invalidHookRequestDataObjects = ImmutableList.of( |
393 |
| - // HookRequestData.builder().targetModel(null).build(), |
394 |
| - // HookRequestData.builder().targetModel(null).payload(null).build(), |
395 |
| - // HookRequestData.builder().targetModel(Collections.emptyMap()).payload(null).build(), |
396 |
| - // HookRequestData.builder().targetModel(Collections.emptyMap()).payload(null).build() |
397 |
| - // ); |
398 |
| - // |
399 |
| - // invalidHookRequestDataObjects.forEach(requestData -> { |
400 |
| - // Assertions.assertThrows(TerminalException.class, () -> |
401 |
| - // wrapper.isHookInvocationPayloadRemote(requestData)); |
402 |
| - // }); |
403 |
| - // |
404 |
| - // Assertions.assertThrows(TerminalException.class, () -> |
405 |
| - // wrapper.isHookInvocationPayloadRemote(null)); |
406 |
| - // |
407 |
| - // HookRequestData bothFieldsPopulated = |
408 |
| - // HookRequestData.builder().targetModel(ImmutableMap.of("foo", "bar")) |
409 |
| - // .payload("http://s3PresignedUrl").build(); |
410 |
| - // HookRequestData onlyTargetModelPopulated = |
411 |
| - // HookRequestData.builder().targetModel(ImmutableMap.of("foo", "bar")) |
412 |
| - // .payload(null).build(); |
413 |
| - // HookRequestData onlyPayloadPopulated = |
414 |
| - // HookRequestData.builder().targetModel(Collections.emptyMap()) |
415 |
| - // .payload("http://s3PresignedUrl").build(); |
416 |
| - // |
417 |
| - // Assertions.assertFalse(wrapper.isHookInvocationPayloadRemote(bothFieldsPopulated)); |
418 |
| - // Assertions.assertFalse(wrapper.isHookInvocationPayloadRemote(onlyTargetModelPopulated)); |
419 |
| - // Assertions.assertTrue(wrapper.isHookInvocationPayloadRemote(onlyPayloadPopulated)); |
420 |
| - // } |
| 397 | + @Test |
| 398 | + public void testIsHookInvocationPayloadRemote() { |
| 399 | + List<HookRequestData> invalidHookRequestDataObjects = ImmutableList.of( |
| 400 | + HookRequestData.builder().targetModel(null).build(), |
| 401 | + HookRequestData.builder().targetModel(null).payload(null).build(), |
| 402 | + HookRequestData.builder().targetModel(Collections.emptyMap()).payload(null).build() |
| 403 | + ); |
| 404 | + |
| 405 | + invalidHookRequestDataObjects.forEach(requestData -> { |
| 406 | + Assertions.assertThrows(TerminalException.class, () -> wrapper.isHookInvocationPayloadRemote(requestData)); |
| 407 | + }); |
| 408 | + |
| 409 | + Assertions.assertThrows(TerminalException.class, () -> wrapper.isHookInvocationPayloadRemote(null)); |
| 410 | + |
| 411 | + HookRequestData bothFieldsPopulated = HookRequestData.builder() |
| 412 | + .targetModel(ImmutableMap.of("foo", "bar")) |
| 413 | + .payload("http://s3PresignedUrl") |
| 414 | + .build(); |
| 415 | + HookRequestData onlyTargetModelPopulated = HookRequestData.builder() |
| 416 | + .targetModel(ImmutableMap.of("foo", "bar")) |
| 417 | + .payload(null).build(); |
| 418 | + HookRequestData onlyPayloadPopulated = HookRequestData.builder() |
| 419 | + .targetModel(Collections.emptyMap()) |
| 420 | + .payload("http://s3PresignedUrl").build(); |
| 421 | + |
| 422 | + Assertions.assertFalse(wrapper.isHookInvocationPayloadRemote(bothFieldsPopulated)); |
| 423 | + Assertions.assertFalse(wrapper.isHookInvocationPayloadRemote(onlyTargetModelPopulated)); |
| 424 | + Assertions.assertTrue(wrapper.isHookInvocationPayloadRemote(onlyPayloadPopulated)); |
| 425 | + } |
421 | 426 |
|
422 | 427 | private final String expectedStringWhenStrictDeserializingWithExtraneousFields = "Unrecognized field \"targetName\" (class software.amazon.cloudformation.proxy.hook.HookInvocationRequest), not marked as ignorable (10 known properties: \"requestContext\", \"stackId\", \"clientRequestToken\", \"hookModel\", \"hookTypeName\", \"requestData\", \"actionInvocationPoint\", \"awsAccountId\", \"changeSetId\", \"hookTypeVersion\"])\n"
|
423 | 428 | + " at [Source: (String)\"{\n" + " \"clientRequestToken\": \"123456\",\n" + " \"awsAccountId\": \"123456789012\",\n"
|
|
0 commit comments