@@ -168,6 +168,66 @@ describe('LinkSDK', () => {
168168 } ) ;
169169 } ) ;
170170
171+ describe ( 'logout' , ( ) => {
172+ test ( 'Calling "logout" method before an init will fail' , async ( ) => {
173+ expect ( ( ) => {
174+ linkSDK . logout ( ) ;
175+ } ) . toThrow ( 'SDK not initialized' ) ;
176+ } ) ;
177+
178+ test ( 'default params' , async ( ) => {
179+ const open = ( window . open = jest . fn ( ) ) ;
180+
181+ linkSDK . init . call ( mockValue , {
182+ clientId : value
183+ } ) ;
184+ // @ts -ignore Ignores missing arguments to test user passing no arguments
185+ linkSDK . logout . call ( mockValue ) ;
186+
187+ expect ( open ) . toBeCalled ( ) ;
188+
189+ const [ [ url , isNewTab ] ] = open . mock . calls ; // [0][1]
190+
191+ const host = `https://${ mockValue . domains . myaccount } /${ MY_ACCOUNT . PATHS . LOGOUT } ` ;
192+ expect ( url ) . toContain ( host ) ;
193+ expect ( isNewTab ) . toBe ( '_self' ) ;
194+
195+ const { params, oauthParams } = mockValue ;
196+
197+ const configs = encodeURIComponent ( `sdk_platform=js;sdk_version=${ packageJSON . version } ` ) ;
198+ const qs =
199+ `client_id=${ params . client_id } &redirect_uri=${ encodeURIComponent ( oauthParams . redirect_uri ) } ` +
200+ `&response_type=token&configs=${ configs } ` ;
201+ expect ( url ) . toBe ( `${ host } ?${ qs } ` ) ;
202+ } ) ;
203+
204+ test ( 'with params' , async ( ) => {
205+ const open = ( window . open = jest . fn ( ) ) ;
206+
207+ linkSDK . init . call ( mockValue , {
208+ clientId : value ,
209+ scope : [ value ]
210+ } ) ;
211+ linkSDK . logout . call ( mockValue , {
212+ newTab : true
213+ } ) ;
214+
215+ expect ( open ) . toBeCalled ( ) ;
216+
217+ const [ [ url , isNewTab ] ] = open . mock . calls ; // [0][1]
218+ expect ( isNewTab ) . toBe ( '_blank' ) ;
219+
220+ const { params, domains, oauthParams } = mockValue ;
221+ const host = `https://${ domains . myaccount } /${ MY_ACCOUNT . PATHS . LOGOUT } ` ;
222+ const qs =
223+ `client_id=${ params . client_id } &redirect_uri=${ encodeURIComponent ( oauthParams . redirect_uri ) } ` +
224+ `&response_type=token&scope=${ value } ` ;
225+ const configs = encodeURIComponent ( `sdk_platform=js;sdk_version=${ packageJSON . version } ` ) ;
226+
227+ expect ( url ) . toBe ( `${ host } ?${ qs } &configs=${ configs } ` ) ;
228+ } ) ;
229+ } ) ;
230+
171231 describe ( 'openVault' , ( ) => {
172232 test ( 'Calling "openVault" method before an init will fail' , async ( ) => {
173233 expect ( ( ) => {
0 commit comments