@@ -26,6 +26,7 @@ import org.junit.Before
2626import org.junit.Rule
2727import org.junit.Test
2828import org.junit.rules.TemporaryFolder
29+ import org.mockito.ArgumentMatchers.nullable
2930import org.mockito.Mockito.doReturn
3031import org.mockito.Mockito.mock
3132import org.mockito.Mockito.spy
@@ -45,6 +46,7 @@ import software.amazon.awssdk.awscore.util.AwsHeader
4546import software.amazon.awssdk.http.SdkHttpResponse
4647import software.amazon.awssdk.services.codewhispererruntime.model.CreateUploadUrlResponse
4748import software.amazon.awssdk.services.codewhispererruntime.model.TransformationStatus
49+ import software.amazon.awssdk.services.codewhispererruntime.model.UploadContext
4850import software.amazon.awssdk.services.ssooidc.model.SsoOidcException
4951import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenAuthState
5052import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerJobCompletedResult
@@ -410,12 +412,12 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
410412 fun `CodeModernizer can create modernization job` () = runTest {
411413 doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
412414 .whenever(testSessionContextSpy).createZipWithModuleFiles(any())
413- doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any())
415+ doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) )
414416 doNothing().whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any())
415417 doReturn(exampleStartCodeMigrationResponse).whenever(clientAdaptorSpy).startCodeModernization(any(), any(), any())
416418 val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
417419 assertThat(result).isEqualTo(CodeModernizerStartJobResult .Started (jobId))
418- verify(clientAdaptorSpy, times(1 )).createGumbyUploadUrl(any())
420+ verify(clientAdaptorSpy, times(1 )).createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) )
419421 verify(clientAdaptorSpy, times(1 )).startCodeModernization(any(), any(), any())
420422 verify(clientAdaptorSpy, times(1 )).uploadArtifactToS3(any(), any(), any(), any(), any())
421423 verifyNoMoreInteractions(clientAdaptorSpy)
@@ -425,7 +427,7 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
425427 fun `CodeModernizer cannot upload payload due to already disposed` () = runTest {
426428 doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
427429 .whenever(testSessionContextSpy).createZipWithModuleFiles(any())
428- doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any())
430+ doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) )
429431 doAnswer { throw AlreadyDisposedException (" mock exception" ) }.whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any())
430432 val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
431433 assertThat(result).isEqualTo(CodeModernizerStartJobResult .Disposed )
@@ -436,7 +438,7 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
436438 setupConnection(BearerTokenAuthState .AUTHORIZED )
437439 doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
438440 .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) )
440442 val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
441443 assertThat(result).isEqualTo(CodeModernizerStartJobResult .ZipUploadFailed (UploadFailureReason .CREDENTIALS_EXPIRED ))
442444 }
@@ -454,8 +456,11 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
454456 fun `CodeModernizer cannot upload payload due to presigned url issue` () = runTest {
455457 doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
456458 .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+ )
459464 val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
460465 assertThat(result).isEqualTo(CodeModernizerStartJobResult .ZipUploadFailed (UploadFailureReason .PRESIGNED_URL_EXPIRED ))
461466 verify(testSessionStateSpy, times(1 )).putJobHistory(any(), eq(TransformationStatus .FAILED ), any(), any())
@@ -466,8 +471,11 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
466471 fun `CodeModernizer cannot upload payload due to other status code` () = runTest {
467472 doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
468473 .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+ )
471479 val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
472480 assertThat(result).isEqualTo(CodeModernizerStartJobResult .ZipUploadFailed (UploadFailureReason .HTTP_ERROR (407 )))
473481 verify(testSessionStateSpy, times(1 )).putJobHistory(any(), eq(TransformationStatus .FAILED ), any(), any())
@@ -478,7 +486,7 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
478486 fun `CodeModernizer cannot upload payload due to unknown client-side issue` () = runTest {
479487 doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
480488 .whenever(testSessionContextSpy).createZipWithModuleFiles(any())
481- doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any())
489+ doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) )
482490 doAnswer { throw Exception (" mock client-side exception" ) }.whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any())
483491 val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
484492 assertThat(result).isEqualTo(CodeModernizerStartJobResult .ZipUploadFailed (UploadFailureReason .OTHER (" mock client-side exception" )))
@@ -490,8 +498,8 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
490498 fun `CodeModernizer cannot upload payload due to connection refused` () = runTest {
491499 doReturn(ZipCreationResult .Succeeded (File (" ./tst-resources/codemodernizer/test.txt" )))
492500 .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) )
495503 val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult .Success (File (" ./mock/path/" )))
496504 assertThat(result).isEqualTo(CodeModernizerStartJobResult .ZipUploadFailed (UploadFailureReason .CONNECTION_REFUSED ))
497505 verify(testSessionStateSpy, times(1 )).putJobHistory(any(), eq(TransformationStatus .FAILED ), any(), any())
@@ -558,14 +566,14 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa
558566 val expectedSha256checksum: String =
559567 Base64 .getEncoder().encodeToString(DigestUtils .sha256(FileInputStream (expectedFilePath.toAbsolutePath().toString())))
560568 clientAdaptorSpy.stub {
561- onGeneric { clientAdaptorSpy.createGumbyUploadUrl(any()) }
569+ onGeneric { clientAdaptorSpy.createGumbyUploadUrl(any(), nullable( UploadContext :: class .java) ) }
562570 .thenReturn(gumbyUploadUrlResponse)
563571 }
564572 wireMock.stubFor(put(urlEqualTo(" /" )).willReturn(aResponse().withStatus(200 )))
565- testSessionSpy.uploadPayload(expectedFilePath.toFile())
573+ testSessionSpy.uploadPayload(expectedFilePath.toFile(), null )
566574
567575 val inOrder = inOrder(clientAdaptorSpy)
568- inOrder.verify(clientAdaptorSpy).createGumbyUploadUrl(eq(expectedSha256checksum))
576+ inOrder.verify(clientAdaptorSpy).createGumbyUploadUrl(eq(expectedSha256checksum), nullable( UploadContext :: class .java) )
569577 inOrder.verify(clientAdaptorSpy).uploadArtifactToS3(
570578 eq(gumbyUploadUrlResponse.uploadUrl()),
571579 eq(expectedFilePath.toFile()),
0 commit comments