Created
December 10, 2023 23:06
-
-
Save maciejwalkowiak/59979a62e97f2da9ee455af13e0bcf37 to your computer and use it in GitHub Desktop.
IMDS + Wiremock
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package io.awspring.cloud.autoconfigure.imds; | |
import java.net.URI; | |
import com.github.tomakehurst.wiremock.WireMockServer; | |
import org.junit.jupiter.api.AfterEach; | |
import org.junit.jupiter.api.BeforeEach; | |
import org.junit.jupiter.api.Test; | |
import software.amazon.awssdk.imds.Ec2MetadataClient; | |
import static com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder.responseDefinition; | |
import static com.github.tomakehurst.wiremock.client.WireMock.get; | |
import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; | |
import static com.github.tomakehurst.wiremock.client.WireMock.put; | |
import static com.github.tomakehurst.wiremock.client.WireMock.putRequestedFor; | |
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; | |
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options; | |
import static org.assertj.core.api.Assertions.assertThat; | |
class ImdsUtilsIntegrationTests { | |
private WireMockServer wireMockServer = new WireMockServer(options().dynamicPort()); | |
private ImdsUtils imdsUtils; | |
@BeforeEach | |
void init() { | |
wireMockServer.start(); | |
imdsUtils = new ImdsUtils(Ec2MetadataClient.builder() | |
.endpoint(URI.create(wireMockServer.baseUrl())) | |
.build()); | |
} | |
@AfterEach | |
void stop() { | |
wireMockServer.stop(); | |
} | |
@Test | |
void foo() { | |
// stub metadata responses with as most realistic data as possible: | |
wireMockServer.stubFor(put(urlEqualTo("/latest/api/token")).willReturn( | |
responseDefinition().withHeader("x-aws-ec2-metadata-token-ttl-seconds", "100").withBody("a-token"))); | |
wireMockServer.stubFor(get(urlEqualTo("/latest/meta-data/ami-id")).willReturn( | |
responseDefinition().withBody("sample-ami-id"))); | |
assertThat(imdsUtils.isRunningOnCloudEnvironment()).isTrue(); | |
// optionally, where makes sense you can also verify if correct requests were sent: | |
wireMockServer.verify(putRequestedFor(urlEqualTo("/latest/api/token"))); | |
wireMockServer.verify(getRequestedFor(urlEqualTo("/latest/meta-data/ami-id"))); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In
spring-cloud-aws-autoconfigure/pom.xml
: