@@ -32,37 +32,40 @@ describe("loggerMiddleware", () => {
32
32
} ;
33
33
34
34
const mockResponse = {
35
- output : {
36
- $metadata : {
37
- statusCode : 200 ,
38
- requestId : "requestId" ,
35
+ response : {
36
+ statusCode : 200 ,
37
+ headers : {
38
+ "x-amzn-requestid" : "requestId" ,
39
+ "x-amz-id-2" : "extendedRequestId" ,
40
+ "x-amz-cf-id" : "cfId" ,
39
41
} ,
42
+ } ,
43
+ output : {
40
44
outputKey : "outputValue" ,
41
45
} ,
42
46
} ;
43
47
44
- beforeEach ( ( ) => {
45
- mockNext . mockResolvedValueOnce ( mockResponse ) ;
46
- } ) ;
47
-
48
48
afterEach ( ( ) => {
49
49
jest . clearAllMocks ( ) ;
50
50
} ) ;
51
51
52
52
it ( "returns without logging if context.logger is not defined" , async ( ) => {
53
+ mockNext . mockResolvedValueOnce ( mockResponse ) ;
53
54
const response = await loggerMiddleware ( ) ( mockNext , { } ) ( mockArgs ) ;
54
55
expect ( mockNext ) . toHaveBeenCalledTimes ( 1 ) ;
55
56
expect ( response ) . toStrictEqual ( mockResponse ) ;
56
57
} ) ;
57
58
58
59
it ( "returns without logging if context.logger doesn't have info function" , async ( ) => {
60
+ mockNext . mockResolvedValueOnce ( mockResponse ) ;
59
61
const logger = { } as Logger ;
60
62
const response = await loggerMiddleware ( ) ( mockNext , { logger } ) ( mockArgs ) ;
61
63
expect ( mockNext ) . toHaveBeenCalledTimes ( 1 ) ;
62
64
expect ( response ) . toStrictEqual ( mockResponse ) ;
63
65
} ) ;
64
66
65
- it ( "logs $metadata if context.logger has info function" , async ( ) => {
67
+ it ( "logs metadata if context.logger has info function" , async ( ) => {
68
+ mockNext . mockResolvedValueOnce ( mockResponse ) ;
66
69
const logger = ( { info : jest . fn ( ) } as unknown ) as Logger ;
67
70
68
71
const context = {
@@ -75,11 +78,47 @@ describe("loggerMiddleware", () => {
75
78
76
79
expect ( logger . info ) . toHaveBeenCalledTimes ( 1 ) ;
77
80
78
- const {
79
- output : { $metadata } ,
80
- } = mockResponse ;
81
81
expect ( logger . info ) . toHaveBeenCalledWith ( {
82
- $metadata,
82
+ metadata : {
83
+ statusCode : mockResponse . response . statusCode ,
84
+ requestId : mockResponse . response . headers [ "x-amzn-requestid" ] ,
85
+ extendedRequestId : mockResponse . response . headers [ "x-amz-id-2" ] ,
86
+ cfId : mockResponse . response . headers [ "x-amz-cf-id" ] ,
87
+ } ,
88
+ } ) ;
89
+ } ) ;
90
+
91
+ it ( "logs header x-amzn-request-id as requestId if x-amzn-requestid is not present" , async ( ) => {
92
+ const requestIdBackup = "requestIdBackup" ;
93
+ const customResponse = {
94
+ ...mockResponse ,
95
+ response : {
96
+ ...mockResponse . response ,
97
+ headers : {
98
+ "x-amzn-request-id" : requestIdBackup ,
99
+ } ,
100
+ } ,
101
+ } ;
102
+ mockNext . mockResolvedValueOnce ( customResponse ) ;
103
+ const logger = ( { info : jest . fn ( ) } as unknown ) as Logger ;
104
+
105
+ const context = {
106
+ logger,
107
+ } ;
108
+
109
+ const response = await loggerMiddleware ( ) ( mockNext , context ) ( mockArgs ) ;
110
+ expect ( mockNext ) . toHaveBeenCalledTimes ( 1 ) ;
111
+ expect ( response ) . toStrictEqual ( customResponse ) ;
112
+
113
+ expect ( logger . info ) . toHaveBeenCalledTimes ( 1 ) ;
114
+
115
+ expect ( logger . info ) . toHaveBeenCalledWith ( {
116
+ metadata : {
117
+ statusCode : customResponse . response . statusCode ,
118
+ requestId : requestIdBackup ,
119
+ extendedRequestId : undefined ,
120
+ cfId : undefined ,
121
+ } ,
83
122
} ) ;
84
123
} ) ;
85
124
} ) ;
0 commit comments