@@ -137,7 +137,7 @@ describe('Auth', () => {
137137 } ) ;
138138 } ) ;
139139
140- describe ( 'username extraction ' , ( ) => {
140+ describe ( 'mapOidcUserToDomainModel ' , ( ) => {
141141 it ( 'extracts username from id token when present' , ( ) => {
142142 const mockOidcUser = {
143143 id_token : 'token' ,
@@ -158,6 +158,88 @@ describe('Auth', () => {
158158 expect ( result . profile . username ) . toEqual ( 'username123' ) ;
159159 } ) ;
160160
161+ it ( 'extracts zkEvm chain data from passport metadata' , ( ) => {
162+ const mockOidcUser = {
163+ id_token : 'token' ,
164+ access_token : 'access' ,
165+ refresh_token : 'refresh' ,
166+ expired : false ,
167+ profile : { sub : 'user-123' , email : 'test@example.com' , nickname : 'tester' } ,
168+ } ;
169+
170+ ( decodeJwtPayload as jest . Mock ) . mockReturnValue ( {
171+ passport : {
172+ zkevm_eth_address : '0xzkevmaddress' ,
173+ zkevm_user_admin_address : '0xzkevmadmin' ,
174+ } ,
175+ } ) ;
176+
177+ const result = ( Auth as any ) . mapOidcUserToDomainModel ( mockOidcUser ) ;
178+
179+ expect ( result . zkEvm ) . toEqual ( {
180+ ethAddress : '0xzkevmaddress' ,
181+ userAdminAddress : '0xzkevmadmin' ,
182+ } ) ;
183+ } ) ;
184+
185+ it ( 'extracts arbitrum_one chain data from nested passport metadata' , ( ) => {
186+ const mockOidcUser = {
187+ id_token : 'token' ,
188+ access_token : 'access' ,
189+ refresh_token : 'refresh' ,
190+ expired : false ,
191+ profile : { sub : 'user-123' , email : 'test@example.com' , nickname : 'tester' } ,
192+ } ;
193+
194+ ( decodeJwtPayload as jest . Mock ) . mockReturnValue ( {
195+ passport : {
196+ arbitrum_one : {
197+ eth_address : '0xarbaddress' ,
198+ user_admin_address : '0xarbadmin' ,
199+ } ,
200+ } ,
201+ } ) ;
202+
203+ const result = ( Auth as any ) . mapOidcUserToDomainModel ( mockOidcUser ) ;
204+
205+ expect ( result . arbitrum_one ) . toEqual ( {
206+ ethAddress : '0xarbaddress' ,
207+ userAdminAddress : '0xarbadmin' ,
208+ } ) ;
209+ } ) ;
210+
211+ it ( 'extracts both zkEvm and arbitrum_one when present' , ( ) => {
212+ const mockOidcUser = {
213+ id_token : 'token' ,
214+ access_token : 'access' ,
215+ refresh_token : 'refresh' ,
216+ expired : false ,
217+ profile : { sub : 'user-123' , email : 'test@example.com' , nickname : 'tester' } ,
218+ } ;
219+
220+ ( decodeJwtPayload as jest . Mock ) . mockReturnValue ( {
221+ passport : {
222+ zkevm_eth_address : '0xzkevmaddress' ,
223+ zkevm_user_admin_address : '0xzkevmadmin' ,
224+ arbitrum_one : {
225+ eth_address : '0xarbaddress' ,
226+ user_admin_address : '0xarbadmin' ,
227+ } ,
228+ } ,
229+ } ) ;
230+
231+ const result = ( Auth as any ) . mapOidcUserToDomainModel ( mockOidcUser ) ;
232+
233+ expect ( result . zkEvm ) . toEqual ( {
234+ ethAddress : '0xzkevmaddress' ,
235+ userAdminAddress : '0xzkevmadmin' ,
236+ } ) ;
237+ expect ( result . arbitrum_one ) . toEqual ( {
238+ ethAddress : '0xarbaddress' ,
239+ userAdminAddress : '0xarbadmin' ,
240+ } ) ;
241+ } ) ;
242+
161243 it ( 'maps username when creating OIDC user from device tokens' , ( ) => {
162244 const tokenResponse = {
163245 id_token : 'token' ,
0 commit comments