@@ -44,7 +44,11 @@ jest.mock('commerce-sdk-isomorphic', () => {
4444 loginGuestUserPrivate : jest . fn ( ) . mockResolvedValue ( '' ) ,
4545 loginRegisteredUserB2C : jest . fn ( ) . mockResolvedValue ( '' ) ,
4646 logout : jest . fn ( ) . mockResolvedValue ( '' ) ,
47- handleTokenResponse : jest . fn ( ) . mockResolvedValue ( '' )
47+ handleTokenResponse : jest . fn ( ) . mockResolvedValue ( '' ) ,
48+ loginIDPUser : jest . fn ( ) . mockResolvedValue ( '' ) ,
49+ authorizeIDP : jest . fn ( ) . mockResolvedValue ( '' ) ,
50+ authorizePasswordless : jest . fn ( ) . mockResolvedValue ( '' ) ,
51+ getPasswordLessAccessToken : jest . fn ( ) . mockResolvedValue ( '' )
4852 } ,
4953 ShopperCustomers : jest . fn ( ) . mockImplementation ( ( ) => {
5054 return {
@@ -59,7 +63,8 @@ jest.mock('../utils', () => ({
5963 onClient : ( ) => true ,
6064 getParentOrigin : jest . fn ( ) . mockResolvedValue ( '' ) ,
6165 isOriginTrusted : ( ) => false ,
62- getDefaultCookieAttributes : ( ) => { }
66+ getDefaultCookieAttributes : ( ) => { } ,
67+ isAbsoluteUrl : ( ) => true
6368} ) )
6469
6570/** The auth data we store has a slightly different shape than what we use. */
@@ -72,7 +77,8 @@ const config = {
7277 siteId : 'siteId' ,
7378 proxy : 'proxy' ,
7479 redirectURI : 'redirectURI' ,
75- logger : console
80+ logger : console ,
81+ passwordlessLoginCallbackURI : 'passwordlessLoginCallbackURI'
7682}
7783
7884const configSLASPrivate = {
@@ -96,10 +102,21 @@ const JWTExpired = jwt.sign(
96102 'secret'
97103)
98104
105+ const configPasswordlessSms = {
106+ clientId : 'clientId' ,
107+ organizationId : 'organizationId' ,
108+ shortCode : 'shortCode' ,
109+ siteId : 'siteId' ,
110+ proxy : 'proxy' ,
111+ redirectURI : 'redirectURI' ,
112+ logger : console
113+ }
114+
99115const FAKE_SLAS_EXPIRY = DEFAULT_SLAS_REFRESH_TOKEN_REGISTERED_TTL - 1
100116
101117const TOKEN_RESPONSE : ShopperLoginTypes . TokenResponse = {
102- access_token : 'access_token_xyz' ,
118+ access_token :
119+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjYy1zbGFzOjp6enJmXzAwMTo6c2NpZDpjOWM0NWJmZC0wZWQzLTRhYTIteHh4eC00MGY4ODk2MmI4MzY6OnVzaWQ6YjQ4NjUyMzMtZGU5Mi00MDM5LXh4eHgtYWEyZGZjOGMxZWE1IiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJpc2IiOiJ1aWRvOmVjb206OnVwbjpHdWVzdHx8am9obi5kb2VAZXhhbXBsZS5jb206OnVpZG46Sm9obiBEb2U6OmdjaWQ6Z3Vlc3QtMTIzNDU6OnJjaWQ6cmVnaXN0ZXJlZC02Nzg5MCIsImRudCI6InRlc3QifQ.9yKtUb22ExO-Q4VNQRAyIgTm63l3x5z45Uu1FIQa5dQ' ,
103120 customer_id : 'customer_id_xyz' ,
104121 enc_user_id : 'enc_user_id_xyz' ,
105122 expires_in : 1800 ,
@@ -596,6 +613,73 @@ describe('Auth', () => {
596613 clientSecret : SLAS_SECRET_PLACEHOLDER
597614 } )
598615 } )
616+
617+ test ( 'loginIDPUser calls isomorphic loginIDPUser' , async ( ) => {
618+ const auth = new Auth ( config )
619+ await auth . loginIDPUser ( { redirectURI : 'redirectURI' , code : 'test' } )
620+ expect ( helpers . loginIDPUser ) . toHaveBeenCalled ( )
621+ const functionArg = ( helpers . loginIDPUser as jest . Mock ) . mock . calls [ 0 ] [ 2 ]
622+ expect ( functionArg ) . toMatchObject ( { redirectURI : 'redirectURI' , code : 'test' } )
623+ } )
624+
625+ test ( 'loginIDPUser adds clientSecret to parameters when using private client' , async ( ) => {
626+ const auth = new Auth ( configSLASPrivate )
627+ await auth . loginIDPUser ( { redirectURI : 'test' , code : 'test' } )
628+ expect ( helpers . loginIDPUser ) . toHaveBeenCalled ( )
629+ const functionArg = ( helpers . loginIDPUser as jest . Mock ) . mock . calls [ 0 ] [ 1 ]
630+ expect ( functionArg ) . toMatchObject ( {
631+ clientSecret : SLAS_SECRET_PLACEHOLDER
632+ } )
633+ } )
634+
635+ test ( 'authorizeIDP calls isomorphic authorizeIDP' , async ( ) => {
636+ const auth = new Auth ( config )
637+ await auth . authorizeIDP ( { redirectURI : 'redirectURI' , hint : 'test' } )
638+ expect ( helpers . authorizeIDP ) . toHaveBeenCalled ( )
639+ const functionArg = ( helpers . authorizeIDP as jest . Mock ) . mock . calls [ 0 ] [ 1 ]
640+ expect ( functionArg ) . toMatchObject ( { redirectURI : 'redirectURI' , hint : 'test' } )
641+ } )
642+
643+ test ( 'authorizeIDP adds clientSecret to parameters when using private client' , async ( ) => {
644+ const auth = new Auth ( configSLASPrivate )
645+ await auth . authorizeIDP ( { redirectURI : 'test' , hint : 'test' } )
646+ expect ( helpers . authorizeIDP ) . toHaveBeenCalled ( )
647+ const privateClient = ( helpers . authorizeIDP as jest . Mock ) . mock . calls [ 0 ] [ 2 ]
648+ expect ( privateClient ) . toBe ( true )
649+ } )
650+
651+ test ( 'authorizePasswordless calls isomorphic authorizePasswordless' , async ( ) => {
652+ const auth = new Auth ( config )
653+ await auth . authorizePasswordless ( {
654+ callbackURI : 'callbackURI' ,
655+ userid : 'userid' ,
656+ mode : 'callback'
657+ } )
658+ expect ( helpers . authorizePasswordless ) . toHaveBeenCalled ( )
659+ const functionArg = ( helpers . authorizePasswordless as jest . Mock ) . mock . calls [ 0 ] [ 2 ]
660+ expect ( functionArg ) . toMatchObject ( {
661+ callbackURI : 'callbackURI' ,
662+ userid : 'userid' ,
663+ mode : 'callback'
664+ } )
665+ } )
666+
667+ test ( 'authorizePasswordless sets mode to sms as configured' , async ( ) => {
668+ const auth = new Auth ( configPasswordlessSms )
669+ await auth . authorizePasswordless ( { userid : 'userid' , mode : 'sms' } )
670+ expect ( helpers . authorizePasswordless ) . toHaveBeenCalled ( )
671+ const functionArg = ( helpers . authorizePasswordless as jest . Mock ) . mock . calls [ 0 ] [ 2 ]
672+ expect ( functionArg ) . toMatchObject ( { userid : 'userid' , mode : 'sms' } )
673+ } )
674+
675+ test ( 'getPasswordLessAccessToken calls isomorphic getPasswordLessAccessToken' , async ( ) => {
676+ const auth = new Auth ( config )
677+ await auth . getPasswordLessAccessToken ( { pwdlessLoginToken : '12345678' } )
678+ expect ( helpers . getPasswordLessAccessToken ) . toHaveBeenCalled ( )
679+ const functionArg = ( helpers . getPasswordLessAccessToken as jest . Mock ) . mock . calls [ 0 ] [ 2 ]
680+ expect ( functionArg ) . toMatchObject ( { pwdlessLoginToken : '12345678' } )
681+ } )
682+
599683 test ( 'logout as registered user calls isomorphic logout' , async ( ) => {
600684 const auth = new Auth ( config )
601685
0 commit comments