@@ -352,4 +352,170 @@ describe('run', () => {
352352 // Act & Assert
353353 await expect ( run ( ) ) . rejects . toThrow ( errorMessage ) ;
354354 } ) ;
355+
356+ // Tests for endpoint handling logic
357+ test ( 'should use custom endpoint when provided' , async ( ) => {
358+ // Arrange
359+ const mockResult = {
360+ data : {
361+ tempUserName : 'temp-user' ,
362+ authorizationToken : 'temp-token'
363+ }
364+ } ;
365+
366+ const mockROAClient = {
367+ request : jest . fn ( ) . mockResolvedValue ( mockResult )
368+ } ;
369+
370+ ROAClient . mockImplementation ( ( ) => mockROAClient ) ;
371+
372+ Docker . getExecOutput . mockResolvedValue ( {
373+ stderr : '' ,
374+ exitCode : 0
375+ } ) ;
376+
377+ core . getInput . mockImplementation ( ( name ) => {
378+ switch ( name ) {
379+ case 'access-key-id' :
380+ return 'test-access-key-id' ;
381+ case 'access-key-secret' :
382+ return 'test-access-key-secret' ;
383+ case 'region-id' :
384+ return 'cn-hangzhou' ;
385+ case 'instance-id' :
386+ return '' ;
387+ case 'endpoint' :
388+ return 'https://custom.endpoint.com' ;
389+ case 'login-server' :
390+ return '' ;
391+ default :
392+ return '' ;
393+ }
394+ } ) ;
395+
396+ // Act
397+ await run ( ) ;
398+
399+ // Assert
400+ expect ( ROAClient ) . toHaveBeenCalledWith ( {
401+ accessKeyId : 'test-access-key-id' ,
402+ accessKeySecret : 'test-access-key-secret' ,
403+ securityToken : '' ,
404+ endpoint : 'https://custom.endpoint.com' , // Should use custom endpoint
405+ apiVersion : '2016-06-07'
406+ } ) ;
407+
408+ expect ( mockROAClient . request ) . toHaveBeenCalledWith ( 'GET' , '/tokens' ) ;
409+ } ) ;
410+
411+ test ( 'should use default endpoint when endpoint is not provided' , async ( ) => {
412+ // Arrange
413+ const mockResult = {
414+ data : {
415+ tempUserName : 'temp-user' ,
416+ authorizationToken : 'temp-token'
417+ }
418+ } ;
419+
420+ const mockROAClient = {
421+ request : jest . fn ( ) . mockResolvedValue ( mockResult )
422+ } ;
423+
424+ ROAClient . mockImplementation ( ( ) => mockROAClient ) ;
425+
426+ Docker . getExecOutput . mockResolvedValue ( {
427+ stderr : '' ,
428+ exitCode : 0
429+ } ) ;
430+
431+ core . getInput . mockImplementation ( ( name ) => {
432+ switch ( name ) {
433+ case 'access-key-id' :
434+ return 'test-access-key-id' ;
435+ case 'access-key-secret' :
436+ return 'test-access-key-secret' ;
437+ case 'region-id' :
438+ return 'cn-hangzhou' ;
439+ case 'instance-id' :
440+ return '' ;
441+ case 'endpoint' :
442+ return '' ; // Empty endpoint
443+ case 'login-server' :
444+ return '' ;
445+ default :
446+ return '' ;
447+ }
448+ } ) ;
449+
450+ // Spy on getAPIEndpoint
451+ const { getAPIEndpoint } = require ( '../src/login.js' ) ;
452+ jest . spyOn ( { getAPIEndpoint } , 'getAPIEndpoint' ) ;
453+ // Act
454+ await run ( ) ;
455+
456+ // Assert
457+ expect ( ROAClient ) . toHaveBeenCalledWith ( {
458+ accessKeyId : 'test-access-key-id' ,
459+ accessKeySecret : 'test-access-key-secret' ,
460+ securityToken : '' ,
461+ endpoint : 'https://cr.cn-hangzhou.aliyuncs.com' , // Should use default endpoint
462+ apiVersion : '2016-06-07'
463+ } ) ;
464+
465+ expect ( mockROAClient . request ) . toHaveBeenCalledWith ( 'GET' , '/tokens' ) ;
466+ } ) ;
467+
468+ test ( 'should use default endpoint when endpoint is empty string' , async ( ) => {
469+ // Arrange
470+ const mockResult = {
471+ data : {
472+ tempUserName : 'temp-user' ,
473+ authorizationToken : 'temp-token'
474+ }
475+ } ;
476+
477+ const mockROAClient = {
478+ request : jest . fn ( ) . mockResolvedValue ( mockResult )
479+ } ;
480+
481+ ROAClient . mockImplementation ( ( ) => mockROAClient ) ;
482+
483+ Docker . getExecOutput . mockResolvedValue ( {
484+ stderr : '' ,
485+ exitCode : 0
486+ } ) ;
487+
488+ core . getInput . mockImplementation ( ( name ) => {
489+ switch ( name ) {
490+ case 'access-key-id' :
491+ return 'test-access-key-id' ;
492+ case 'access-key-secret' :
493+ return 'test-access-key-secret' ;
494+ case 'region-id' :
495+ return 'cn-hangzhou' ;
496+ case 'instance-id' :
497+ return '' ;
498+ case 'endpoint' :
499+ return '' ; // Empty string endpoint
500+ case 'login-server' :
501+ return '' ;
502+ default :
503+ return '' ;
504+ }
505+ } ) ;
506+
507+ // Act
508+ await run ( ) ;
509+
510+ // Assert
511+ expect ( ROAClient ) . toHaveBeenCalledWith ( {
512+ accessKeyId : 'test-access-key-id' ,
513+ accessKeySecret : 'test-access-key-secret' ,
514+ securityToken : '' ,
515+ endpoint : 'https://cr.cn-hangzhou.aliyuncs.com' , // Should use default endpoint
516+ apiVersion : '2016-06-07'
517+ } ) ;
518+
519+ expect ( mockROAClient . request ) . toHaveBeenCalledWith ( 'GET' , '/tokens' ) ;
520+ } ) ;
355521} ) ;
0 commit comments