1+ import  {  TokenizationAlreadyExistingDetailsNotificationRequest  }  from  "../../typings/tokenizationWebhooks/tokenizationAlreadyExistingDetailsNotificationRequest" ; 
2+ import  {  TokenizationCreatedDetailsNotificationRequest  }  from  "../../typings/tokenizationWebhooks/tokenizationCreatedDetailsNotificationRequest" ; 
3+ import  {  TokenizationDisabledDetailsNotificationRequest  }  from  "../../typings/tokenizationWebhooks/tokenizationDisabledDetailsNotificationRequest" ; 
4+ import  {  TokenizationUpdatedDetailsNotificationRequest  }  from  "../../typings/tokenizationWebhooks/tokenizationUpdatedDetailsNotificationRequest" ; 
5+ import  {  TokenizationWebhooksHandler  }  from  "../../typings/tokenizationWebhooks/tokenizationWebhooksHandler" ; 
6+ 
7+ describe ( "TokenizationWebhooksHandler" ,  ( )  =>  { 
8+     it ( "should deserialize TokenizationAlreadyExistingDetailsNotificationRequest" ,  ( )  =>  { 
9+         const  json  =  { 
10+             "createdAt" : "2025-06-30T16:40:23+02:00" , 
11+             "eventId" : "QBQQ9DLNRHHKGK38" , 
12+             "environment" : "test" , 
13+             "data" : { 
14+                 "merchantAccount" : "YOUR_MERCHANT_ACCOUNT" , 
15+                 "storedPaymentMethodId" : "M5N7TQ4TG5PFWR50" , 
16+                 "type" : "visastandarddebit" , 
17+                 "operation" : "alreadyExisting" , 
18+                 "shopperReference" : "YOUR_SHOPPER_REFERENCE" 
19+             } , 
20+             "type" : "recurring.token.alreadyExisting" 
21+         } ; 
22+         const  handler  =  new  TokenizationWebhooksHandler ( JSON . stringify ( json ) ) ; 
23+         const  request  =  handler . getTokenizationAlreadyExistingDetailsNotificationRequest ( ) ; 
24+         expect ( request ) . toBeTruthy ( ) ; 
25+         expect ( request . type ) . toBe ( TokenizationAlreadyExistingDetailsNotificationRequest . TypeEnum . RecurringTokenAlreadyExisting ) ; 
26+         expect ( request . data . type ) . toBe ( "visastandarddebit" ) ; 
27+         // test GenericWebhook 
28+         const  genericWebhook  =  handler . getGenericWebhook ( ) ; 
29+         expect ( genericWebhook ) . toBeInstanceOf ( TokenizationAlreadyExistingDetailsNotificationRequest ) ; 
30+         expect ( genericWebhook . type ) . toBe ( "recurring.token.alreadyExisting" ) ; 
31+     } ) ; 
32+ 
33+     it ( "should deserialize TokenizationCreatedDetailsNotificationRequest" ,  ( )  =>  { 
34+         const  json  =  { 
35+             "createdAt" : "2025-06-30T16:40:23+02:00" , 
36+             "eventId" : "QBQQ9DLNRHHKGK38" , 
37+             "environment" : "test" , 
38+             "data" : { 
39+                 "merchantAccount" : "YOUR_MERCHANT_ACCOUNT" , 
40+                 "storedPaymentMethodId" : "M5N7TQ4TG5PFWR50" , 
41+                 "type" : "visastandarddebit" , 
42+                 "operation" : "created" , 
43+                 "shopperReference" : "YOUR_SHOPPER_REFERENCE" 
44+             } , 
45+             "type" : "recurring.token.created" 
46+         } ; 
47+         const  handler  =  new  TokenizationWebhooksHandler ( JSON . stringify ( json ) ) ; 
48+         const  request  =  handler . getTokenizationCreatedDetailsNotificationRequest ( ) ; 
49+         expect ( request ) . toBeTruthy ( ) ; 
50+         expect ( request . type ) . toBe ( TokenizationCreatedDetailsNotificationRequest . TypeEnum . RecurringTokenCreated ) ; 
51+         expect ( request . data . type ) . toBe ( "visastandarddebit" ) ; 
52+         // test GenericWebhook 
53+         const  genericWebhook  =  handler . getGenericWebhook ( ) ; 
54+         expect ( genericWebhook ) . toBeInstanceOf ( TokenizationCreatedDetailsNotificationRequest ) ; 
55+         expect ( genericWebhook . type ) . toBe ( "recurring.token.created" ) ; 
56+     } ) ; 
57+ 
58+     it ( "should deserialize TokenizationUpdatedDetailsNotificationRequest" ,  ( )  =>  { 
59+         const  json  =  { 
60+             "createdAt" : "2025-06-30T16:40:23+02:00" , 
61+             "eventId" : "QBQQ9DLNRHHKGK38" , 
62+             "environment" : "test" , 
63+             "data" : { 
64+                 "merchantAccount" : "YOUR_MERCHANT_ACCOUNT" , 
65+                 "storedPaymentMethodId" : "M5N7TQ4TG5PFWR50" , 
66+                 "type" : "visastandarddebit" , 
67+                 "operation" : "updated" , 
68+                 "shopperReference" : "YOUR_SHOPPER_REFERENCE" 
69+             } , 
70+             "type" : "recurring.token.updated" 
71+         } ; 
72+         const  handler  =  new  TokenizationWebhooksHandler ( JSON . stringify ( json ) ) ; 
73+         const  request  =  handler . getTokenizationUpdatedDetailsNotificationRequest ( ) ; 
74+         expect ( request ) . toBeTruthy ( ) ; 
75+         expect ( request . type ) . toBe ( TokenizationUpdatedDetailsNotificationRequest . TypeEnum . RecurringTokenUpdated ) ; 
76+         expect ( request . data . type ) . toBe ( "visastandarddebit" ) ; 
77+         // test GenericWebhook 
78+         const  genericWebhook  =  handler . getGenericWebhook ( ) ; 
79+         expect ( genericWebhook ) . toBeInstanceOf ( TokenizationUpdatedDetailsNotificationRequest ) ; 
80+         expect ( genericWebhook . type ) . toBe ( "recurring.token.updated" ) ; 
81+     } ) ; 
82+ 
83+     it ( "should deserialize TokenizationDisabledDetailsNotificationRequest" ,  ( )  =>  { 
84+         const  json  =  { 
85+             "createdAt" : "2025-06-30T16:40:23+02:00" , 
86+             "eventId" : "QBQQ9DLNRHHKGK38" , 
87+             "environment" : "test" , 
88+             "data" : { 
89+                 "merchantAccount" : "YOUR_MERCHANT_ACCOUNT" , 
90+                 "storedPaymentMethodId" : "M5N7TQ4TG5PFWR50" , 
91+                 "type" : "visastandarddebit" , 
92+                 "shopperReference" : "YOUR_SHOPPER_REFERENCE" 
93+             } , 
94+             "type" : "recurring.token.disabled" 
95+         } ; 
96+         const  handler  =  new  TokenizationWebhooksHandler ( JSON . stringify ( json ) ) ; 
97+         const  request  =  handler . getTokenizationDisabledDetailsNotificationRequest ( ) ; 
98+         expect ( request ) . toBeTruthy ( ) ; 
99+         expect ( request . type ) . toBe ( TokenizationDisabledDetailsNotificationRequest . TypeEnum . RecurringTokenDisabled ) ; 
100+         expect ( request . data . type ) . toBe ( "visastandarddebit" ) ; 
101+         // test GenericWebhook 
102+         const  genericWebhook  =  handler . getGenericWebhook ( ) ; 
103+         expect ( genericWebhook ) . toBeInstanceOf ( TokenizationDisabledDetailsNotificationRequest ) ; 
104+         expect ( genericWebhook . type ) . toBe ( "recurring.token.disabled" ) ; 
105+     } ) ; 
106+ 
107+     it ( "should throw error for unknown type" ,  ( )  =>  { 
108+         const  json  =  { 
109+             type : "unknown.type" , 
110+             data : { } 
111+         } ; 
112+         const  handler  =  new  TokenizationWebhooksHandler ( JSON . stringify ( json ) ) ; 
113+         expect ( ( )  =>  handler . getGenericWebhook ( ) ) . toThrow ( "Could not parse the json payload" ) ; 
114+     } ) ; 
115+ 
116+     it ( "should throw SyntaxError for invalid JSON" ,  ( )  =>  { 
117+         expect ( ( )  =>  new  TokenizationWebhooksHandler ( "{ invalid json }" ) ) . toThrow ( SyntaxError ) ; 
118+     } ) ; 
119+ } ) ; 
0 commit comments