@@ -111,6 +111,72 @@ describe('CustomOnsitePaymentsAppExtensionSchema', () => {
111111 ] ) ,
112112 )
113113 } )
114+
115+ test ( 'validates a configuration with valid start_verification_session_url' , async ( ) => {
116+ // Given
117+ const configWithVerificationUrl = {
118+ ...config ,
119+ start_verification_session_url : 'https://example.com/verify' ,
120+ }
121+
122+ // When
123+ const { success} = CustomOnsitePaymentsAppExtensionSchema . safeParse ( configWithVerificationUrl )
124+
125+ // Then
126+ expect ( success ) . toBe ( true )
127+ } )
128+
129+ test ( 'validates a configuration without start_verification_session_url' , async ( ) => {
130+ // Given
131+ const configWithoutVerificationUrl = {
132+ ...config ,
133+ start_verification_session_url : undefined ,
134+ }
135+
136+ // When
137+ const { success} = CustomOnsitePaymentsAppExtensionSchema . safeParse ( configWithoutVerificationUrl )
138+
139+ // Then
140+ expect ( success ) . toBe ( true )
141+ } )
142+
143+ test ( 'returns an error if start_verification_session_url is not a valid URL' , async ( ) => {
144+ // When/Then
145+ expect ( ( ) =>
146+ CustomOnsitePaymentsAppExtensionSchema . parse ( {
147+ ...config ,
148+ start_verification_session_url : 'not-a-valid-url' ,
149+ } ) ,
150+ ) . toThrowError (
151+ new zod . ZodError ( [
152+ {
153+ validation : 'url' ,
154+ code : zod . ZodIssueCode . invalid_string ,
155+ message : 'Invalid url' ,
156+ path : [ 'start_verification_session_url' ] ,
157+ } ,
158+ ] ) ,
159+ )
160+ } )
161+
162+ test ( 'returns an error if start_verification_session_url is an empty string' , async ( ) => {
163+ // When/Then
164+ expect ( ( ) =>
165+ CustomOnsitePaymentsAppExtensionSchema . parse ( {
166+ ...config ,
167+ start_verification_session_url : '' ,
168+ } ) ,
169+ ) . toThrowError (
170+ new zod . ZodError ( [
171+ {
172+ validation : 'url' ,
173+ code : zod . ZodIssueCode . invalid_string ,
174+ message : 'Invalid url' ,
175+ path : [ 'start_verification_session_url' ] ,
176+ } ,
177+ ] ) ,
178+ )
179+ } )
114180} )
115181
116182describe ( 'customOnsitePaymentsAppExtensionDeployConfig' , ( ) => {
@@ -144,4 +210,36 @@ describe('customOnsitePaymentsAppExtensionDeployConfig', () => {
144210 ui_extension_handle : config . ui_extension_handle ,
145211 } )
146212 } )
213+
214+ test ( 'maps start_verification_session_url when provided in extension configuration' , async ( ) => {
215+ // Given
216+ const configWithVerificationUrl = {
217+ ...config ,
218+ start_verification_session_url : 'https://example.com/verify' ,
219+ }
220+
221+ // When
222+ const result = await customOnsitePaymentsAppExtensionDeployConfig ( configWithVerificationUrl )
223+
224+ // Then
225+ expect ( result ) . toMatchObject ( {
226+ start_verification_session_url : 'https://example.com/verify' ,
227+ } )
228+ } )
229+
230+ test ( 'does not include start_verification_session_url when not provided in extension configuration' , async ( ) => {
231+ // Given
232+ const configWithoutVerificationUrl = {
233+ ...config ,
234+ start_verification_session_url : undefined ,
235+ }
236+
237+ // When
238+ const result = await customOnsitePaymentsAppExtensionDeployConfig ( configWithoutVerificationUrl )
239+
240+ // Then
241+ expect ( result ) . toMatchObject ( {
242+ start_verification_session_url : undefined ,
243+ } )
244+ } )
147245} )
0 commit comments