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