@@ -11,6 +11,8 @@ import {
1111 MessageState ,
1212 ProcessState ,
1313 RegisterWebHookRequest ,
14+ TokenRequest ,
15+ TokenResponse ,
1416 WebHook ,
1517 WebHookEventType ,
1618} from './domain' ;
@@ -345,7 +347,7 @@ describe('Client', () => {
345347 describe ( 'Client with JWT Authentication' , ( ) => {
346348 let client : Client ;
347349 let mockHttpClient : HttpClient ;
348- const jwtToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ ' ;
350+ const jwtToken = 'fake-token-123 ' ;
349351
350352 beforeEach ( ( ) => {
351353 mockHttpClient = {
@@ -389,7 +391,7 @@ describe('Client', () => {
389391 {
390392 "Content-Type" : "application/json" ,
391393 "User-Agent" : "android-sms-gateway/3.0 (client; js)" ,
392- Authorization : `Bearer ${ jwtToken } ` ,
394+ Authorization : `Bearer fake-token-123 ` ,
393395 } ,
394396 ) ;
395397 expect ( result ) . toBe ( expectedState ) ;
@@ -416,7 +418,7 @@ describe('Client', () => {
416418 `${ BASE_URL } /message/${ messageId } ` ,
417419 {
418420 "User-Agent" : "android-sms-gateway/3.0 (client; js)" ,
419- Authorization : `Bearer ${ jwtToken } ` ,
421+ Authorization : `Bearer fake-token-123 ` ,
420422 } ,
421423 ) ;
422424 expect ( result ) . toBe ( expectedState ) ;
@@ -508,4 +510,93 @@ describe('Client', () => {
508510 ) ;
509511 expect ( result ) . toBe ( undefined ) ;
510512 } ) ;
513+
514+ // JWT Token Management Tests
515+ describe ( 'JWT Token Management' , ( ) => {
516+ let client : Client ;
517+ let mockHttpClient : HttpClient ;
518+
519+ beforeEach ( ( ) => {
520+ mockHttpClient = {
521+ get : jest . fn ( ) ,
522+ post : jest . fn ( ) ,
523+ put : jest . fn ( ) ,
524+ patch : jest . fn ( ) ,
525+ delete : jest . fn ( ) ,
526+ } as unknown as HttpClient ;
527+ client = new Client ( 'login' , 'password' , mockHttpClient ) ;
528+ } ) ;
529+
530+ it ( 'generates a new token' , async ( ) => {
531+ const tokenRequest : TokenRequest = {
532+ scopes : [ 'read' , 'write' ] ,
533+ ttl : 3600 ,
534+ } ;
535+ const expectedResponse : TokenResponse = {
536+ access_token : 'fake-token-123' ,
537+ token_type : 'Bearer' ,
538+ id : 'token-id-123' ,
539+ expires_at : '2024-12-31T23:59:59Z' ,
540+ } ;
541+
542+ ( mockHttpClient . post as jest . Mock ) . mockResolvedValue ( expectedResponse ) ;
543+
544+ const result = await client . generateToken ( tokenRequest ) ;
545+
546+ expect ( mockHttpClient . post ) . toHaveBeenCalledWith (
547+ `${ BASE_URL } /auth/token` ,
548+ tokenRequest ,
549+ {
550+ "Content-Type" : "application/json" ,
551+ "User-Agent" : "android-sms-gateway/3.0 (client; js)" ,
552+ Authorization : expect . any ( String ) ,
553+ } ,
554+ ) ;
555+ expect ( result ) . toBe ( expectedResponse ) ;
556+ } ) ;
557+
558+ it ( 'generates a new token without TTL' , async ( ) => {
559+ const tokenRequest : TokenRequest = {
560+ scopes : [ 'read' ] ,
561+ } ;
562+ const expectedResponse : TokenResponse = {
563+ access_token : 'fake-token-123' ,
564+ token_type : 'Bearer' ,
565+ id : 'token-id-456' ,
566+ expires_at : '2024-12-31T23:59:59Z' ,
567+ } ;
568+
569+ ( mockHttpClient . post as jest . Mock ) . mockResolvedValue ( expectedResponse ) ;
570+
571+ const result = await client . generateToken ( tokenRequest ) ;
572+
573+ expect ( mockHttpClient . post ) . toHaveBeenCalledWith (
574+ `${ BASE_URL } /auth/token` ,
575+ tokenRequest ,
576+ {
577+ "Content-Type" : "application/json" ,
578+ "User-Agent" : "android-sms-gateway/3.0 (client; js)" ,
579+ Authorization : expect . any ( String ) ,
580+ } ,
581+ ) ;
582+ expect ( result ) . toBe ( expectedResponse ) ;
583+ } ) ;
584+
585+ it ( 'revokes a token' , async ( ) => {
586+ const jti = 'token-id-123' ;
587+
588+ ( mockHttpClient . delete as jest . Mock ) . mockResolvedValue ( undefined ) ;
589+
590+ const result = await client . revokeToken ( jti ) ;
591+
592+ expect ( mockHttpClient . delete ) . toHaveBeenCalledWith (
593+ `${ BASE_URL } /auth/token/${ jti } ` ,
594+ {
595+ "User-Agent" : "android-sms-gateway/3.0 (client; js)" ,
596+ Authorization : expect . any ( String ) ,
597+ } ,
598+ ) ;
599+ expect ( result ) . toBe ( undefined ) ;
600+ } ) ;
601+ } ) ;
511602} ) ;
0 commit comments