@@ -525,6 +525,80 @@ describe('ImsClient', () => {
525525 } ) ;
526526 } ) ;
527527
528+ describe ( 'getImsAdminOrganizations' , ( ) => {
529+ let client ;
530+ const testImsId = '6E14161F62BEB2990A49401A@0b2414d95e6abf580a49403d' ;
531+
532+ beforeEach ( ( ) => {
533+ client = ImsClient . createFrom ( mockContext ) ;
534+ } ) ;
535+
536+ it ( 'throws error when imsId is not provided' , async ( ) => {
537+ await expect ( client . getImsAdminOrganizations ( ) )
538+ . to . be . rejectedWith ( 'imsId param is required.' ) ;
539+ } ) ;
540+
541+ it ( 'successfully fetches admin organizations' , async ( ) => {
542+ const mockAdminOrgs = [
543+ {
544+ orgRef : { ident : '1234567890ABCDEF12345678' , authSrc : 'AdobeOrg' } ,
545+ orgName : 'Example Org' ,
546+ orgType : 'Enterprise' ,
547+ countryCode : 'US' ,
548+ } ,
549+ ] ;
550+
551+ // Mock service token endpoint
552+ mockImsTokenResponse ( ) ;
553+
554+ // Mock admin organizations endpoint
555+ nock ( `https://${ DUMMY_HOST } ` )
556+ . post ( '/ims/admin_organizations/v4' )
557+ . reply ( 200 , mockAdminOrgs ) ;
558+
559+ const result = await client . getImsAdminOrganizations ( testImsId ) ;
560+ expect ( result ) . to . deep . equal ( mockAdminOrgs ) ;
561+ } ) ;
562+
563+ it ( 'throws error when admin organizations request fails' , async ( ) => {
564+ // Mock service token endpoint
565+ mockImsTokenResponse ( ) ;
566+
567+ // Mock failed admin organizations response
568+ nock ( `https://${ DUMMY_HOST } ` )
569+ . post ( '/ims/admin_organizations/v4' )
570+ . reply ( 404 ) ;
571+
572+ await expect ( client . getImsAdminOrganizations ( testImsId ) )
573+ . to . be . rejectedWith ( 'IMS getImsAdminOrganizations request failed with status: 404' ) ;
574+ } ) ;
575+
576+ it ( 'reuses existing service token if available' , async ( ) => {
577+ const mockAdminOrgs = [
578+ {
579+ orgRef : { ident : '1234567890ABCDEF12345678' , authSrc : 'AdobeOrg' } ,
580+ orgName : 'Example Org' ,
581+ } ,
582+ ] ;
583+
584+ // Set existing service token
585+ client . serviceAccessToken = {
586+ access_token : 'ZHVtbXktYWNjZXNzLXRva2Vu' ,
587+ expires_in : 86400 ,
588+ token_type : 'bearer' ,
589+ } ;
590+
591+ // Mock only admin organizations endpoint (token endpoint should not be called)
592+ nock ( `https://${ DUMMY_HOST } ` )
593+ . post ( '/ims/admin_organizations/v4' )
594+ . reply ( 200 , mockAdminOrgs ) ;
595+
596+ const result = await client . getImsAdminOrganizations ( testImsId ) ;
597+ expect ( result ) . to . deep . equal ( mockAdminOrgs ) ;
598+ expect ( nock . isDone ( ) ) . to . be . true ;
599+ } ) ;
600+ } ) ;
601+
528602 describe ( 'getAccountCluster' , ( ) => {
529603 let client ;
530604 const testAccessToken = 'eyJhbGciOiJIUzI1NiJ9.eyJpZCI6IjEyMzQ1IiwidHlwZSI6ImFjY2Vzc190b2tlbiIsImNsaWVudF9pZCI6ImV4YW1wbGVfYXBwIiwidXNlcl9pZCI6Ijk4NzY1NDc4OTBBQkNERUYxMjM0NTY3OEBhYmNkZWYxMjM0NTY3ODkuZSIsImFzIjoiaW1zLW5hMSIsImFhX2lkIjoiMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1Njc4QGFkb2JlLmNvbSIsImNyZWF0ZWRfYXQiOiIxNzEwMjQ3MDAwMDAwIn0.MRDpxgxSHDj4DmA182hPnjMAnKkly-VUJ_bXpQ-J8EQ' ;
0 commit comments