@@ -10,16 +10,22 @@ const mockSuccessResponse = {
10
10
object : 'event' ,
11
11
} as any ;
12
12
13
- const mockError = new Error ( 'Missing required Svix headers: svix-id, svix-timestamp, svix-signature' ) ;
14
-
15
13
vi . mock ( '@clerk/backend/webhooks' , ( ) => ( {
16
- verifyWebhook : vi . fn ( ) . mockImplementation ( ( request : Request ) => {
17
- const svixId = request . headers . get ( 'svix-id' ) ;
18
- const svixTimestamp = request . headers . get ( 'svix-timestamp' ) ;
19
- const svixSignature = request . headers . get ( 'svix-signature' ) ;
14
+ verifyWebhook : vi . fn ( ) . mockImplementation ( async ( request : any ) => {
15
+ // Support both Fetch API Request and plain object
16
+ const getHeader = ( key : string ) => {
17
+ if ( request instanceof Request ) {
18
+ return request . headers . get ( key ) ;
19
+ }
20
+ return request . headers ?. [ key ] ;
21
+ } ;
22
+
23
+ const svixId = getHeader ( 'svix-id' ) ;
24
+ const svixTimestamp = getHeader ( 'svix-timestamp' ) ;
25
+ const svixSignature = getHeader ( 'svix-signature' ) ;
20
26
21
27
if ( ! svixId || ! svixTimestamp || ! svixSignature ) {
22
- throw mockError ;
28
+ throw new Error ( 'Missing required Svix headers: svix-id, svix-timestamp, svix-signature' ) ;
23
29
}
24
30
25
31
return mockSuccessResponse ;
@@ -88,7 +94,9 @@ describe('verifyWebhook', () => {
88
94
aborted : false ,
89
95
} as unknown as NextApiRequest ;
90
96
91
- await expect ( verifyWebhook ( mockNextApiRequest ) ) . rejects . toThrow ( mockError ) ;
97
+ await expect ( verifyWebhook ( mockNextApiRequest ) ) . rejects . toThrow (
98
+ 'Missing required Svix headers: svix-id, svix-timestamp, svix-signature' ,
99
+ ) ;
92
100
} ) ;
93
101
} ) ;
94
102
} ) ;
0 commit comments