@@ -26,6 +26,7 @@ import org.junit.Before
26
26
import org.junit.Rule
27
27
import org.junit.Test
28
28
import org.junit.rules.TemporaryFolder
29
+ import org.mockito.ArgumentMatchers.nullable
29
30
import org.mockito.Mockito.doReturn
30
31
import org.mockito.Mockito.mock
31
32
import org.mockito.Mockito.spy
@@ -45,6 +46,7 @@ import software.amazon.awssdk.awscore.util.AwsHeader
45
46
import software.amazon.awssdk.http.SdkHttpResponse
46
47
import software.amazon.awssdk.services.codewhispererruntime.model.CreateUploadUrlResponse
47
48
import software.amazon.awssdk.services.codewhispererruntime.model.TransformationStatus
49
+ import software.amazon.awssdk.services.codewhispererruntime.model.UploadContext
48
50
import software.amazon.awssdk.services.ssooidc.model.SsoOidcException
49
51
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenAuthState
50
52
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerJobCompletedResult
@@ -410,12 +412,12 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
410
412
fun `CodeModernizer can create modernization job` () = runTest {
411
413
doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
412
414
.whenever(testSessionContextSpy).createZipWithModuleFiles(any())
413
- doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any())
415
+ doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) )
414
416
doNothing().whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any())
415
417
doReturn(exampleStartCodeMigrationResponse).whenever(clientAdaptorSpy).startCodeModernization(any(), any(), any())
416
418
val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
417
419
assertThat(result).isEqualTo(CodeModernizerStartJobResult .Started (jobId))
418
- verify(clientAdaptorSpy, times(1 )).createGumbyUploadUrl(any())
420
+ verify(clientAdaptorSpy, times(1 )).createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) )
419
421
verify(clientAdaptorSpy, times(1 )).startCodeModernization(any(), any(), any())
420
422
verify(clientAdaptorSpy, times(1 )).uploadArtifactToS3(any(), any(), any(), any(), any())
421
423
verifyNoMoreInteractions(clientAdaptorSpy)
@@ -425,7 +427,7 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
425
427
fun `CodeModernizer cannot upload payload due to already disposed` () = runTest {
426
428
doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
427
429
.whenever(testSessionContextSpy).createZipWithModuleFiles(any())
428
- doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any())
430
+ doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) )
429
431
doAnswer { throw AlreadyDisposedException (" mock exception" ) }.whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any())
430
432
val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
431
433
assertThat(result).isEqualTo(CodeModernizerStartJobResult .Disposed )
@@ -436,7 +438,7 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
436
438
setupConnection(BearerTokenAuthState .AUTHORIZED )
437
439
doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
438
440
.whenever(testSessionContextSpy).createZipWithModuleFiles(any())
439
- doAnswer { throw SsoOidcException .builder().build() }.whenever(clientAdaptorSpy).createGumbyUploadUrl(any())
441
+ doAnswer { throw SsoOidcException .builder().build() }.whenever(clientAdaptorSpy).createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) )
440
442
val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
441
443
assertThat(result).isEqualTo(CodeModernizerStartJobResult .ZipUploadFailed (UploadFailureReason .CREDENTIALS_EXPIRED ))
442
444
}
@@ -454,8 +456,11 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
454
456
fun `CodeModernizer cannot upload payload due to presigned url issue` () = runTest {
455
457
doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
456
458
.whenever(testSessionContextSpy).createZipWithModuleFiles(any())
457
- doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any())
458
- doAnswer { throw HttpRequests .HttpStatusException (" mock error" , 403 , " mock url" ) }.whenever(testSessionSpy).uploadPayload(any())
459
+ doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any(), nullable(UploadContext ::class .java))
460
+ doAnswer { throw HttpRequests .HttpStatusException (" mock error" , 403 , " mock url" ) }.whenever(testSessionSpy).uploadPayload(
461
+ any(),
462
+ nullable(UploadContext ::class .java)
463
+ )
459
464
val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
460
465
assertThat(result).isEqualTo(CodeModernizerStartJobResult .ZipUploadFailed (UploadFailureReason .PRESIGNED_URL_EXPIRED ))
461
466
verify(testSessionStateSpy, times(1 )).putJobHistory(any(), eq(TransformationStatus .FAILED ), any(), any())
@@ -466,8 +471,11 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
466
471
fun `CodeModernizer cannot upload payload due to other status code` () = runTest {
467
472
doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
468
473
.whenever(testSessionContextSpy).createZipWithModuleFiles(any())
469
- doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any())
470
- doAnswer { throw HttpRequests .HttpStatusException (" mock error" , 407 , " mock url" ) }.whenever(testSessionSpy).uploadPayload(any())
474
+ doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any(), nullable(UploadContext ::class .java))
475
+ doAnswer { throw HttpRequests .HttpStatusException (" mock error" , 407 , " mock url" ) }.whenever(testSessionSpy).uploadPayload(
476
+ any(),
477
+ nullable(UploadContext ::class .java)
478
+ )
471
479
val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
472
480
assertThat(result).isEqualTo(CodeModernizerStartJobResult .ZipUploadFailed (UploadFailureReason .HTTP_ERROR (407 )))
473
481
verify(testSessionStateSpy, times(1 )).putJobHistory(any(), eq(TransformationStatus .FAILED ), any(), any())
@@ -478,7 +486,7 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
478
486
fun `CodeModernizer cannot upload payload due to unknown client-side issue` () = runTest {
479
487
doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
480
488
.whenever(testSessionContextSpy).createZipWithModuleFiles(any())
481
- doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any())
489
+ doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) )
482
490
doAnswer { throw Exception (" mock client-side exception" ) }.whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any())
483
491
val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
484
492
assertThat(result).isEqualTo(CodeModernizerStartJobResult .ZipUploadFailed (UploadFailureReason .OTHER (" mock client-side exception" )))
@@ -490,8 +498,8 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
490
498
fun `CodeModernizer cannot upload payload due to connection refused` () = runTest {
491
499
doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
492
500
.whenever(testSessionContextSpy).createZipWithModuleFiles(any())
493
- doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any())
494
- doAnswer { throw ConnectException (" mock exception" ) }.whenever(testSessionSpy).uploadPayload(any())
501
+ doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) )
502
+ doAnswer { throw ConnectException (" mock exception" ) }.whenever(testSessionSpy).uploadPayload(any(), nullable( UploadContext :: class .java) )
495
503
val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
496
504
assertThat(result).isEqualTo(CodeModernizerStartJobResult .ZipUploadFailed (UploadFailureReason .CONNECTION_REFUSED ))
497
505
verify(testSessionStateSpy, times(1 )).putJobHistory(any(), eq(TransformationStatus .FAILED ), any(), any())
@@ -558,14 +566,14 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
558
566
val expectedSha256checksum: String =
559
567
Base64 .getEncoder().encodeToString(DigestUtils .sha256(FileInputStream (expectedFilePath.toAbsolutePath().toString())))
560
568
clientAdaptorSpy.stub {
561
- onGeneric { clientAdaptorSpy.createGumbyUploadUrl(any()) }
569
+ onGeneric { clientAdaptorSpy.createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) ) }
562
570
.thenReturn(gumbyUploadUrlResponse)
563
571
}
564
572
wireMock.stubFor(put(urlEqualTo(" /" )).willReturn(aResponse().withStatus(200 )))
565
- testSessionSpy.uploadPayload(expectedFilePath.toFile())
573
+ testSessionSpy.uploadPayload(expectedFilePath.toFile(), null )
566
574
567
575
val inOrder = inOrder(clientAdaptorSpy)
568
- inOrder.verify(clientAdaptorSpy).createGumbyUploadUrl(eq(expectedSha256checksum))
576
+ inOrder.verify(clientAdaptorSpy).createGumbyUploadUrl(eq(expectedSha256checksum), nullable( UploadContext :: class .java) )
569
577
inOrder.verify(clientAdaptorSpy).uploadArtifactToS3(
570
578
eq(gumbyUploadUrlResponse.uploadUrl()),
571
579
eq(expectedFilePath.toFile()),
0 commit comments