Skip to content

Commit 572c2ca

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

File tree

1 file changed

+99
-5
lines changed

1 file changed

+99
-5
lines changed

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

Lines changed: 99 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,77 @@ 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+
Optional overrideConfiguration = Optional.of(AwsRequestOverrideConfiguration.builder()
186+
.signer(clientOverrideSigner)
187+
.build());
188+
when(sdkRequest.overrideConfiguration()).thenReturn(overrideConfiguration);
189+
190+
ExecutionContext executionContext =
191+
AwsExecutionContextBuilder.invokeInterceptorsAndCreateExecutionContext(clientExecutionParams(), clientConfig);
192+
193+
assertThat(executionContext.signer()).isNull();
194+
verify(defaultCredentialsProvider, times(0)).resolveCredentials();
195+
}
196+
197+
@Test
198+
public void preSra_authTypeNone_signerRequestOverride_doesNotAssignSigner_doesNotResolveIdentity() {
199+
ExecutionAttributes executionAttributes =
200+
ExecutionAttributes.builder()
201+
// yes, our code would put false instead of true
202+
.put(SdkInternalExecutionAttribute.IS_NONE_AUTH_TYPE_REQUEST, false)
203+
.build();
204+
205+
SdkClientConfiguration clientConfig = testClientConfiguration()
206+
.option(SdkClientOption.EXECUTION_ATTRIBUTES, executionAttributes)
207+
.build();
208+
209+
Optional overrideConfiguration = Optional.of(AwsRequestOverrideConfiguration.builder()
210+
.signer(clientOverrideSigner)
211+
.build());
212+
when(sdkRequest.overrideConfiguration()).thenReturn(overrideConfiguration);
213+
214+
ExecutionContext executionContext =
215+
AwsExecutionContextBuilder.invokeInterceptorsAndCreateExecutionContext(clientExecutionParams(), clientConfig);
216+
217+
assertThat(executionContext.signer()).isNull();
218+
verify(defaultCredentialsProvider, times(0)).resolveCredentials();
125219
}
126220

127221
@Test
@@ -209,7 +303,7 @@ private SdkClientConfiguration.Builder testClientConfiguration() {
209303
return SdkClientConfiguration.builder()
210304
.option(SdkClientOption.EXECUTION_INTERCEPTORS, new ArrayList<>())
211305
.option(SdkClientOption.EXECUTION_INTERCEPTORS, interceptorList)
212-
.option(AwsClientOption.CREDENTIALS_PROVIDER, DefaultCredentialsProvider.create())
306+
.option(AwsClientOption.CREDENTIALS_PROVIDER, defaultCredentialsProvider)
213307
.option(SdkAdvancedClientOption.SIGNER, this.defaultSigner);
214308
}
215309
}

0 commit comments

Comments
 (0)