Skip to content

Commit f478724

Browse files
committed
Add asserts to AwsExecutionContextBuilderTest to show current behavior
1 parent 38e221b commit f478724

File tree

1 file changed

+94
-5
lines changed

1 file changed

+94
-5
lines changed

core/aws-core/src/test/java/software/amazon/awssdk/awscore/internal/AwsExecutionContextBuilderTest.java

Lines changed: 94 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
import org.junit.runner.RunWith;
3232
import org.mockito.Mock;
3333
import org.mockito.junit.MockitoJUnitRunner;
34-
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
34+
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
35+
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
3536
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
3637
import software.amazon.awssdk.awscore.client.config.AwsClientOption;
3738
import software.amazon.awssdk.core.SdkRequest;
@@ -61,12 +62,21 @@ public class AwsExecutionContextBuilderTest {
6162
ExecutionInterceptor interceptor;
6263

6364
@Mock
64-
Signer defaultSigner, clientOverrideSigner;
65+
AwsCredentialsProvider defaultCredentialsProvider;
66+
67+
@Mock
68+
Signer defaultSigner;
69+
70+
@Mock
71+
Signer clientOverrideSigner;
6572

6673
@Before
6774
public void setUp() throws Exception {
6875
when(sdkRequest.overrideConfiguration()).thenReturn(Optional.empty());
6976
when(interceptor.modifyRequest(any(), any())).thenReturn(sdkRequest);
77+
when(defaultCredentialsProvider.resolveCredentials()).thenAnswer(
78+
invocationOnMock -> AwsBasicCredentials.create("ak", "sk"));
79+
7080
}
7181

7282
@Test
@@ -101,17 +111,30 @@ public void verifyCoreExecutionAttributesTakePrecedence() {
101111
assertThat(executionContext.executionAttributes().getAttribute(SdkExecutionAttribute.SERVICE_NAME)).isEqualTo("DoNotOverrideService");
102112
}
103113

114+
// // this is post SRA case. this is asserting that AuthorizationStrategy is not used.
115+
// @Test
116+
// public void verify_doesNotResolveIdentity_doesNotAssignSigner() {
117+
// ExecutionContext executionContext =
118+
// AwsExecutionContextBuilder.invokeInterceptorsAndCreateExecutionContext(clientExecutionParams(),
119+
// testClientConfiguration().build());
120+
//
121+
// assertThat(executionContext.signer()).isNull();
122+
// verify(defaultCredentialsProvider, times(0)).resolveCredentials();
123+
// }
124+
125+
// pre SRA, AuthorizationStrategy would setup the signer and resolve identity.
104126
@Test
105-
public void signing_ifNoOverrides_assignDefaultSigner() {
127+
public void preSra_signing_ifNoOverrides_assignDefaultSigner_resolveIdentity() {
106128
ExecutionContext executionContext =
107129
AwsExecutionContextBuilder.invokeInterceptorsAndCreateExecutionContext(clientExecutionParams(),
108130
testClientConfiguration().build());
109131

110132
assertThat(executionContext.signer()).isEqualTo(defaultSigner);
133+
verify(defaultCredentialsProvider, times(1)).resolveCredentials();
111134
}
112135

113136
@Test
114-
public void signing_ifClientOverride_assignClientOverrideSigner() {
137+
public void preSra_signing_ifClientOverride_assignClientOverrideSigner_resolveIdentity() {
115138
Optional overrideConfiguration = Optional.of(AwsRequestOverrideConfiguration.builder()
116139
.signer(clientOverrideSigner)
117140
.build());
@@ -122,6 +145,72 @@ public void signing_ifClientOverride_assignClientOverrideSigner() {
122145
testClientConfiguration().build());
123146

124147
assertThat(executionContext.signer()).isEqualTo(clientOverrideSigner);
148+
verify(defaultCredentialsProvider, times(1)).resolveCredentials();
149+
}
150+
151+
@Test
152+
public void preSra_authTypeNone_doesNotAssignSigner_doesNotResolveIdentity() {
153+
ExecutionAttributes executionAttributes =
154+
ExecutionAttributes.builder()
155+
// yes, our code would put false instead of true
156+
.put(SdkInternalExecutionAttribute.IS_NONE_AUTH_TYPE_REQUEST, false)
157+
.build();
158+
159+
SdkClientConfiguration clientConfig = testClientConfiguration()
160+
.option(SdkClientOption.EXECUTION_ATTRIBUTES, executionAttributes)
161+
.build();
162+
163+
ExecutionContext executionContext =
164+
AwsExecutionContextBuilder.invokeInterceptorsAndCreateExecutionContext(clientExecutionParams(),
165+
clientConfig);
166+
167+
assertThat(executionContext.signer()).isNull();
168+
verify(defaultCredentialsProvider, times(0)).resolveCredentials();
169+
}
170+
171+
@Test
172+
public void preSra_authTypeNone_signerClientOverride_doesNotAssignSigner_doesNotResolveIdentity() {
173+
ExecutionAttributes executionAttributes =
174+
ExecutionAttributes.builder()
175+
// yes, our code would put false instead of true
176+
.put(SdkInternalExecutionAttribute.IS_NONE_AUTH_TYPE_REQUEST, false)
177+
.put(SdkInternalExecutionAttribute.SIGNER_OVERRIDDEN, true)
178+
.build();
179+
180+
SdkClientConfiguration clientConfig = testClientConfiguration()
181+
.option(SdkClientOption.EXECUTION_ATTRIBUTES, executionAttributes)
182+
.option(SdkAdvancedClientOption.SIGNER, this.clientOverrideSigner)
183+
.build();
184+
185+
ExecutionContext executionContext =
186+
AwsExecutionContextBuilder.invokeInterceptorsAndCreateExecutionContext(clientExecutionParams(), clientConfig);
187+
188+
assertThat(executionContext.signer()).isNull();
189+
verify(defaultCredentialsProvider, times(0)).resolveCredentials();
190+
}
191+
192+
@Test
193+
public void preSra_authTypeNone_signerRequestOverride_doesNotAssignSigner_doesNotResolveIdentity() {
194+
ExecutionAttributes executionAttributes =
195+
ExecutionAttributes.builder()
196+
// yes, our code would put false instead of true
197+
.put(SdkInternalExecutionAttribute.IS_NONE_AUTH_TYPE_REQUEST, false)
198+
.build();
199+
200+
SdkClientConfiguration clientConfig = testClientConfiguration()
201+
.option(SdkClientOption.EXECUTION_ATTRIBUTES, executionAttributes)
202+
.build();
203+
204+
Optional overrideConfiguration = Optional.of(AwsRequestOverrideConfiguration.builder()
205+
.signer(clientOverrideSigner)
206+
.build());
207+
when(sdkRequest.overrideConfiguration()).thenReturn(overrideConfiguration);
208+
209+
ExecutionContext executionContext =
210+
AwsExecutionContextBuilder.invokeInterceptorsAndCreateExecutionContext(clientExecutionParams(), clientConfig);
211+
212+
assertThat(executionContext.signer()).isNull();
213+
verify(defaultCredentialsProvider, times(0)).resolveCredentials();
125214
}
126215

127216
@Test
@@ -209,7 +298,7 @@ private SdkClientConfiguration.Builder testClientConfiguration() {
209298
return SdkClientConfiguration.builder()
210299
.option(SdkClientOption.EXECUTION_INTERCEPTORS, new ArrayList<>())
211300
.option(SdkClientOption.EXECUTION_INTERCEPTORS, interceptorList)
212-
.option(AwsClientOption.CREDENTIALS_PROVIDER, DefaultCredentialsProvider.create())
301+
.option(AwsClientOption.CREDENTIALS_PROVIDER, defaultCredentialsProvider)
213302
.option(SdkAdvancedClientOption.SIGNER, this.defaultSigner);
214303
}
215304
}

0 commit comments

Comments
 (0)