Skip to content

Commit 3a38ac0

Browse files
author
Wenbing Li
authored
Use standard AWS SDK exception message (#291)
1 parent 5e20615 commit 3a38ac0

File tree

3 files changed

+22
-24
lines changed

3 files changed

+22
-24
lines changed

src/main/java/software/amazon/cloudformation/proxy/AmazonWebServicesClientProxy.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -572,8 +572,7 @@ public ProgressEvent<ModelT, CallbackT> done(Function<ResponseT, ProgressEvent<M
572572
if (e instanceof AwsServiceException) {
573573
AwsServiceException sdkException = (AwsServiceException) e;
574574
AwsErrorDetails details = sdkException.awsErrorDetails();
575-
String errMsg = "Exception=[" + sdkException.getClass() + "] " + "ErrorCode=[" + details.errorCode()
576-
+ "], ErrorMessage=[" + details.errorMessage() + "]";
575+
String errMsg = sdkException.getMessage();
577576
switch (details.sdkHttpResponse().statusCode()) {
578577
case HttpStatusCode.BAD_REQUEST:
579578
//

src/test/java/software/amazon/cloudformation/proxy/AmazonWebServicesClientProxyTest.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -439,18 +439,18 @@ public void badRequest() {
439439
.initiate("client:createRespository", proxy.newProxy(() -> mock(ServiceClient.class)), model, context)
440440
.translateToServiceRequest(m -> new CreateRequest.Builder().repoName(m.getRepoName()).build())
441441
.makeServiceCall((r, c) -> {
442-
throw new BadRequestException(mock(AwsServiceException.Builder.class)) {
442+
throw new BadRequestException(new AwsServiceException(AwsServiceException.builder()) {
443443
private static final long serialVersionUID = 1L;
444444

445445
@Override
446446
public AwsErrorDetails awsErrorDetails() {
447447
return AwsErrorDetails.builder().errorCode("BadRequest").errorMessage("Bad Parameter in request")
448448
.sdkHttpResponse(sdkHttpResponse).build();
449449
}
450-
};
450+
}.toBuilder());
451451
}).done(o -> ProgressEvent.success(model, context));
452452
assertThat(result.getStatus()).isEqualTo(OperationStatus.FAILED);
453-
assertThat(result.getMessage()).contains("BadRequest");
453+
assertThat(result.getMessage()).contains("Bad Parameter");
454454
}
455455

456456
@Test
@@ -470,18 +470,18 @@ public void notFound() {
470470
.initiate("client:createRespository", proxy.newProxy(() -> mock(ServiceClient.class)), model, context)
471471
.translateToServiceRequest(m -> new CreateRequest.Builder().repoName(m.getRepoName()).build())
472472
.makeServiceCall((r, c) -> {
473-
throw new NotFoundException(mock(AwsServiceException.Builder.class)) {
473+
throw new NotFoundException(new AwsServiceException(AwsServiceException.builder()) {
474474
private static final long serialVersionUID = 1L;
475475

476476
@Override
477477
public AwsErrorDetails awsErrorDetails() {
478478
return AwsErrorDetails.builder().errorCode("NotFound").errorMessage("Repo not existing")
479479
.sdkHttpResponse(sdkHttpResponse).build();
480480
}
481-
};
481+
}.toBuilder());
482482
}).done(o -> ProgressEvent.success(model, context));
483483
assertThat(result.getStatus()).isEqualTo(OperationStatus.FAILED);
484-
assertThat(result.getMessage()).contains("NotFound");
484+
assertThat(result.getMessage()).contains("Repo not existing");
485485
}
486486

487487
@Test
@@ -501,19 +501,18 @@ public void accessDenied() {
501501
.initiate("client:createRespository", proxy.newProxy(() -> mock(ServiceClient.class)), model, context)
502502
.translateToServiceRequest(m -> new CreateRequest.Builder().repoName(m.getRepoName()).build())
503503
.makeServiceCall((r, c) -> {
504-
throw new AccessDenied(AwsServiceException.builder()) {
504+
throw new AccessDenied(new AwsServiceException(AwsServiceException.builder()) {
505505
private static final long serialVersionUID = 1L;
506506

507507
@Override
508508
public AwsErrorDetails awsErrorDetails() {
509509
return AwsErrorDetails.builder().errorCode("AccessDenied: 401").errorMessage("Token Invalid")
510510
.sdkHttpResponse(sdkHttpResponse).build();
511511
}
512-
513-
};
512+
}.toBuilder());
514513
}).done(o -> ProgressEvent.success(model, context));
515514
assertThat(result.getStatus()).isEqualTo(OperationStatus.FAILED);
516-
assertThat(result.getMessage()).contains("AccessDenied");
515+
assertThat(result.getMessage()).contains("Token Invalid");
517516
}
518517

519518
@Test

src/test/java/software/amazon/cloudformation/proxy/End2EndCallChainTest.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,15 @@ public void happyCase() {
107107
//
108108
// Now reset expectation to fail with already exists
109109
//
110-
final ExistsException exists = new ExistsException(mock(AwsServiceException.Builder.class)) {
110+
final ExistsException exists = new ExistsException(new AwsServiceException(AwsServiceException.builder()) {
111111
private static final long serialVersionUID = 1L;
112112

113113
@Override
114114
public AwsErrorDetails awsErrorDetails() {
115115
return AwsErrorDetails.builder().errorCode("AlreadyExists").errorMessage("Repo already exists")
116116
.sdkHttpResponse(sdkHttpResponse).build();
117117
}
118-
};
118+
}.toBuilder());
119119
when(serviceClient.createRepository(any(CreateRequest.class))).thenThrow(exists);
120120
StdCallbackContext newContext = new StdCallbackContext();
121121
event = proxy.initiate("client:createRepository", client, model, newContext)
@@ -124,7 +124,7 @@ public AwsErrorDetails awsErrorDetails() {
124124
.done(r -> ProgressEvent.success(model, context));
125125

126126
assertThat(event.getStatus()).isEqualTo(OperationStatus.FAILED);
127-
assertThat(event.getMessage()).contains("AlreadyExists");
127+
assertThat(event.getMessage()).contains("Repo already exists");
128128
}
129129

130130
private HandlerRequest<Model, StdCallbackContext> prepareRequest(Model model) throws Exception {
@@ -196,15 +196,15 @@ public void notFound() throws Exception {
196196
final DescribeRequest describeRequest = new DescribeRequest.Builder().repoName(model.getRepoName()).overrideConfiguration(
197197
AwsRequestOverrideConfiguration.builder().credentialsProvider(StaticCredentialsProvider.create(MockCreds)).build())
198198
.build();
199-
final NotFoundException notFound = new NotFoundException(mock(AwsServiceException.Builder.class)) {
199+
final NotFoundException notFound = new NotFoundException(new AwsServiceException(AwsServiceException.builder()) {
200200
private static final long serialVersionUID = 1L;
201201

202202
@Override
203203
public AwsErrorDetails awsErrorDetails() {
204204
return AwsErrorDetails.builder().errorCode("NotFound").errorMessage("Repo not existing")
205205
.sdkHttpResponse(sdkHttpResponse).build();
206206
}
207-
};
207+
}.toBuilder());
208208
when(client.describeRepository(eq(describeRequest))).thenThrow(notFound);
209209

210210
final SdkHttpClient httpClient = mock(SdkHttpClient.class);
@@ -221,7 +221,7 @@ public AwsErrorDetails awsErrorDetails() {
221221
});
222222
assertThat(response).isNotNull();
223223
assertThat(response.getStatus()).isEqualTo(OperationStatus.FAILED);
224-
assertThat(response.getMessage()).contains("NotFound");
224+
assertThat(response.getMessage()).contains("Repo not existing");
225225
}
226226

227227
@SuppressWarnings("unchecked")
@@ -299,15 +299,15 @@ public void createHandlerAlreadyExists() throws Exception {
299299
final SdkHttpResponse sdkHttpResponse = mock(SdkHttpResponse.class);
300300
when(sdkHttpResponse.statusCode()).thenReturn(500);
301301

302-
final ExistsException exists = new ExistsException(mock(AwsServiceException.Builder.class)) {
302+
final ExistsException exists = new ExistsException(new AwsServiceException(AwsServiceException.builder()) {
303303
private static final long serialVersionUID = 1L;
304304

305305
@Override
306306
public AwsErrorDetails awsErrorDetails() {
307307
return AwsErrorDetails.builder().errorCode("AlreadyExists").errorMessage("Repo already exists")
308308
.sdkHttpResponse(sdkHttpResponse).build();
309309
}
310-
};
310+
}.toBuilder());
311311
when(client.createRepository(eq(createRequest))).thenThrow(exists);
312312

313313
final SdkHttpClient httpClient = mock(SdkHttpClient.class);
@@ -327,7 +327,7 @@ public AwsErrorDetails awsErrorDetails() {
327327
assertThat(request.getRequestData()).isNotNull();
328328
Model responseModel = response.getResourceModel();
329329
assertThat(responseModel.getRepoName()).isEqualTo("repository");
330-
assertThat(response.getMessage()).contains("AlreadyExists");
330+
assertThat(response.getMessage()).contains("Repo already exists");
331331
}
332332

333333
@Order(30)
@@ -469,7 +469,7 @@ public void accessDenied() throws Exception {
469469
final DescribeRequest describeRequest = new DescribeRequest.Builder().repoName(model.getRepoName()).overrideConfiguration(
470470
AwsRequestOverrideConfiguration.builder().credentialsProvider(StaticCredentialsProvider.create(MockCreds)).build())
471471
.build();
472-
final AccessDenied accessDenied = new AccessDenied(mock(AwsServiceException.Builder.class)) {
472+
final AccessDenied accessDenied = new AccessDenied(new AwsServiceException(AwsServiceException.builder()) {
473473
private static final long serialVersionUID = 1L;
474474

475475
@Override
@@ -478,7 +478,7 @@ public AwsErrorDetails awsErrorDetails() {
478478
.sdkHttpResponse(sdkHttpResponse).build();
479479
}
480480

481-
};
481+
}.toBuilder());
482482
when(client.describeRepository(eq(describeRequest))).thenThrow(accessDenied);
483483

484484
final SdkHttpClient httpClient = mock(SdkHttpClient.class);
@@ -495,7 +495,7 @@ public AwsErrorDetails awsErrorDetails() {
495495
});
496496
assertThat(response).isNotNull();
497497
assertThat(response.getStatus()).isEqualTo(OperationStatus.FAILED);
498-
assertThat(response.getMessage()).contains("AccessDenied");
498+
assertThat(response.getMessage()).contains("Token Invalid");
499499
}
500500

501501
}

0 commit comments

Comments
 (0)