@@ -28,7 +28,7 @@ import {
2828 deleteChangeSetHandler ,
2929 describeChangeSetDeletionStatusHandler ,
3030 getChangeSetDeletionStatusHandler ,
31- getStackOutputsHandler ,
31+ describeStackHandler ,
3232 describeChangeSetHandler ,
3333} from '../../../src/handlers/StackHandler' ;
3434import { analyzeCapabilities } from '../../../src/stacks/actions/CapabilityAnalyzer' ;
@@ -45,7 +45,7 @@ import {
4545 ListStacksParams ,
4646 ListStacksResult ,
4747 ListStackResourcesResult ,
48- GetStackOutputsResult ,
48+ DescribeStackResult ,
4949 DescribeChangeSetParams ,
5050 DescribeChangeSetResult ,
5151} from '../../../src/stacks/StackRequestType' ;
@@ -71,7 +71,7 @@ vi.mock('../../../src/stacks/actions/StackActionParser', () => ({
7171 parseCreateDeploymentParams : vi . fn ( ( input ) => input ) ,
7272 parseDeleteChangeSetParams : vi . fn ( ( input ) => input ) ,
7373 parseListStackResourcesParams : vi . fn ( ( input ) => input ) ,
74- parseGetStackOutputsParams : vi . fn ( ( input ) => input ) ,
74+ parseDescribeStackParams : vi . fn ( ( input ) => input ) ,
7575 parseDescribeChangeSetParams : vi . fn ( ( input ) => input ) ,
7676} ) ) ;
7777
@@ -713,56 +713,55 @@ describe('StackActionHandler', () => {
713713 } ) ;
714714 } ) ;
715715
716- describe ( 'getStackOutputsHandler ' , ( ) => {
717- it ( 'returns outputs for a stack' , async ( ) => {
716+ describe ( 'describeStackHandler ' , ( ) => {
717+ it ( 'returns stack info ' , async ( ) => {
718718 const params = { stackName : 'MyStack' } ;
719719 const mockOutputs = [
720720 { OutputKey : 'BucketName' , OutputValue : 'my-bucket' , Description : 'S3 Bucket' } ,
721721 { OutputKey : 'FunctionArn' , OutputValue : 'arn:aws:lambda:...' , ExportName : 'MyFunction' } ,
722722 ] ;
723+ const mockParams = [
724+ { ParameterKey : 'RoleName' , ParameterValue : 'MyRole' } ,
725+ { ParameterKey : 'LambdaName' , ParameterValue : 'MyLambda' } ,
726+ ] ;
727+ const mockTags = [
728+ { Key : 'Org' , Value : 'Aws' } ,
729+ { Key : 'CostCenter' , Value : '123' } ,
730+ ] ;
723731
724732 mockComponents . cfnService . describeStacks . resolves ( {
725- Stacks : [ { StackName : 'MyStack' , Outputs : mockOutputs } ] ,
726- } as any ) ;
727-
728- const handler = getStackOutputsHandler ( mockComponents ) ;
729- const result = ( await handler ( params , { } as any ) ) as GetStackOutputsResult ;
730-
731- expect ( result . outputs ) . toHaveLength ( 2 ) ;
732- expect ( result . outputs [ 0 ] . OutputKey ) . toBe ( 'BucketName' ) ;
733- expect ( result . outputs [ 1 ] . ExportName ) . toBe ( 'MyFunction' ) ;
734- } ) ;
735-
736- it ( 'returns empty array when stack has no outputs' , async ( ) => {
737- const params = { stackName : 'MyStack' } ;
738-
739- mockComponents . cfnService . describeStacks . resolves ( {
740- Stacks : [ { StackName : 'MyStack' , Outputs : undefined } ] ,
733+ Stacks : [ { StackName : 'MyStack' , Outputs : mockOutputs , Parameters : mockParams , Tags : mockTags } ] ,
741734 } as any ) ;
742735
743- const handler = getStackOutputsHandler ( mockComponents ) ;
744- const result = ( await handler ( params , { } as any ) ) as GetStackOutputsResult ;
736+ const handler = describeStackHandler ( mockComponents ) ;
737+ const result = ( await handler ( params , { } as any ) ) as DescribeStackResult ;
745738
746- expect ( result . outputs ) . toEqual ( [ ] ) ;
739+ expect ( result . stack ?. Outputs ) . toHaveLength ( 2 ) ;
740+ expect ( result . stack ?. Outputs ?. [ 0 ] . OutputKey ) . toBe ( 'BucketName' ) ;
741+ expect ( result . stack ?. Outputs ?. [ 1 ] . ExportName ) . toBe ( 'MyFunction' ) ;
742+ expect ( result . stack ?. Parameters ?. [ 0 ] . ParameterKey ) . toBe ( 'RoleName' ) ;
743+ expect ( result . stack ?. Parameters ?. [ 1 ] . ParameterValue ) . toBe ( 'MyLambda' ) ;
744+ expect ( result . stack ?. Tags ?. [ 0 ] . Key ) . toBe ( 'Org' ) ;
745+ expect ( result . stack ?. Tags ?. [ 1 ] . Value ) . toBe ( '123' ) ;
747746 } ) ;
748747
749- it ( 'returns empty array when Stacks array is empty' , async ( ) => {
748+ it ( 'returns undefined when Stacks array is empty' , async ( ) => {
750749 const params = { stackName : 'MyStack' } ;
751750
752751 mockComponents . cfnService . describeStacks . resolves ( {
753752 Stacks : [ ] ,
754753 } as any ) ;
755754
756- const handler = getStackOutputsHandler ( mockComponents ) ;
757- const result = ( await handler ( params , { } as any ) ) as GetStackOutputsResult ;
755+ const handler = describeStackHandler ( mockComponents ) ;
756+ const result = ( await handler ( params , { } as any ) ) as DescribeStackResult ;
758757
759- expect ( result . outputs ) . toEqual ( [ ] ) ;
758+ expect ( result . stack ) . toBeUndefined ( ) ;
760759 } ) ;
761760
762761 it ( 'throws ResponseError for invalid stack name' , async ( ) => {
763762 const params = { stackName : '' } ;
764763
765- const handler = getStackOutputsHandler ( mockComponents ) ;
764+ const handler = describeStackHandler ( mockComponents ) ;
766765
767766 await expect ( handler ( params , { } as any ) ) . rejects . toThrow ( ResponseError ) ;
768767 } ) ;
@@ -772,7 +771,7 @@ describe('StackActionHandler', () => {
772771
773772 mockComponents . cfnService . describeStacks . rejects ( new Error ( 'Stack not found' ) ) ;
774773
775- const handler = getStackOutputsHandler ( mockComponents ) ;
774+ const handler = describeStackHandler ( mockComponents ) ;
776775
777776 await expect ( handler ( params , { } as any ) ) . rejects . toThrow ( ResponseError ) ;
778777 } ) ;
0 commit comments