|
14 | 14 | import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; |
15 | 15 | import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; |
16 | 16 | import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_REQUEST_ID; |
| 17 | +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SECRETSMANAGER_SECRET_ARN; |
17 | 18 | import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; |
18 | 19 | import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; |
19 | 20 | import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; |
|
79 | 80 | import software.amazon.awssdk.services.s3.S3ClientBuilder; |
80 | 81 | import software.amazon.awssdk.services.s3.model.CreateBucketRequest; |
81 | 82 | import software.amazon.awssdk.services.s3.model.GetObjectRequest; |
| 83 | +import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClient; |
| 84 | +import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClientBuilder; |
| 85 | +import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient; |
| 86 | +import software.amazon.awssdk.services.secretsmanager.SecretsManagerClientBuilder; |
| 87 | +import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest; |
| 88 | +import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse; |
82 | 89 | import software.amazon.awssdk.services.sns.SnsAsyncClient; |
83 | 90 | import software.amazon.awssdk.services.sns.SnsAsyncClientBuilder; |
84 | 91 | import software.amazon.awssdk.services.sns.SnsClient; |
@@ -112,6 +119,18 @@ public abstract class AbstractAws2ClientTest extends AbstractAws2ClientCoreTest |
112 | 119 | + " <ResponseMetadata><RequestId>0ac9cda2-bbf4-11d3-f92b-31fa5e8dbc99</RequestId></ResponseMetadata>" |
113 | 120 | + "</DeleteOptionGroupResponse>"; |
114 | 121 |
|
| 122 | + private static final String secretsManagerBodyContent = |
| 123 | + "{" |
| 124 | + + " \"ARN\": \"arn:aws:secretsmanager:us-east-1:123456789012:secret:MySecretFromCLI-sNkBwD\"," |
| 125 | + + " \"Name\": \"MySecretFromCLI\"," |
| 126 | + + " \"VersionId\": \"9959b95b-1234-5678-a19b-a4b0315ca5aa\"," |
| 127 | + + " \"SecretString\": \"super-secret-value\"," |
| 128 | + + " \"VersionStages\": [" |
| 129 | + + " \"AWSCURRENT\"" |
| 130 | + + " ]," |
| 131 | + + " \"CreatedDate\": \"1.523477145713E9\"" |
| 132 | + + "}"; |
| 133 | + |
115 | 134 | private static void assumeSupportedConfig(String operation) { |
116 | 135 | Assumptions.assumeFalse( |
117 | 136 | operation.equals("SendMessage") && isSqsAttributeInjectionEnabled(), |
@@ -214,6 +233,13 @@ private void clientAssertions( |
214 | 233 | equalTo(MESSAGING_SYSTEM, AWS_SQS)))); |
215 | 234 | } |
216 | 235 |
|
| 236 | + if (service.equals("SecretsManager")) { |
| 237 | + attributes.add( |
| 238 | + equalTo( |
| 239 | + AWS_SECRETSMANAGER_SECRET_ARN, |
| 240 | + "arn:aws:secretsmanager:us-east-1:123456789012:secret:MySecretFromCLI-sNkBwD")); |
| 241 | + } |
| 242 | + |
217 | 243 | String evaluatedOperation; |
218 | 244 | SpanKind operationKind; |
219 | 245 | if (operation.equals("SendMessage")) { |
@@ -722,4 +748,44 @@ void testS3ListNullBucket() { |
722 | 748 |
|
723 | 749 | assertThat(Context.current()).isEqualTo(Context.root()); |
724 | 750 | } |
| 751 | + |
| 752 | + @Test |
| 753 | + void testSecretsManagerSendOperationRequestWithBuilder() { |
| 754 | + SecretsManagerClientBuilder builder = SecretsManagerClient.builder(); |
| 755 | + configureSdkClient(builder); |
| 756 | + SecretsManagerClient client = |
| 757 | + builder |
| 758 | + .endpointOverride(clientUri) |
| 759 | + .region(Region.AP_NORTHEAST_1) |
| 760 | + .credentialsProvider(CREDENTIALS_PROVIDER) |
| 761 | + .build(); |
| 762 | + |
| 763 | + server.enqueue( |
| 764 | + HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, secretsManagerBodyContent)); |
| 765 | + Object response = |
| 766 | + client.getSecretValue(GetSecretValueRequest.builder().secretId("MySecretFromCLI").build()); |
| 767 | + assertThat(response.getClass().getSimpleName()) |
| 768 | + .satisfies( |
| 769 | + v -> assertThat(v).isEqualTo("GetSecretValueResponse"), |
| 770 | + v -> assertThat(response).isInstanceOf(GetSecretValueResponse.class)); |
| 771 | + clientAssertions("SecretsManager", "GetSecretValue", "POST", response, "UNKNOWN"); |
| 772 | + } |
| 773 | + |
| 774 | + @Test |
| 775 | + void testSecretsManagerAsyncSendOperationRequestWithBuilder() { |
| 776 | + SecretsManagerAsyncClientBuilder builder = SecretsManagerAsyncClient.builder(); |
| 777 | + configureSdkClient(builder); |
| 778 | + SecretsManagerAsyncClient client = |
| 779 | + builder |
| 780 | + .endpointOverride(clientUri) |
| 781 | + .region(Region.AP_NORTHEAST_1) |
| 782 | + .credentialsProvider(CREDENTIALS_PROVIDER) |
| 783 | + .build(); |
| 784 | + |
| 785 | + server.enqueue( |
| 786 | + HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, secretsManagerBodyContent)); |
| 787 | + Object response = |
| 788 | + client.getSecretValue(GetSecretValueRequest.builder().secretId("MySecretFromCLI").build()); |
| 789 | + clientAssertions("SecretsManager", "GetSecretValue", "POST", response, "UNKNOWN"); |
| 790 | + } |
725 | 791 | } |
0 commit comments