@@ -642,6 +642,20 @@ describe('KubeConfig', () => {
642
642
strictEqual ( password , users [ 0 ] . password ) ;
643
643
strictEqual ( username , users [ 0 ] . username ) ;
644
644
strictEqual ( name , users [ 0 ] . name ) ;
645
+ strictEqual ( undefined , users [ 0 ] . impersonateUser ) ;
646
+ } ) ;
647
+ it ( 'should load impersonation information' , ( ) => {
648
+ const name = 'some-name' ;
649
+ const as = 'impersonated-user' ;
650
+ const users = newUsers ( [
651
+ {
652
+ name,
653
+ as : 'impersonated-user' ,
654
+ user : { } ,
655
+ } ,
656
+ ] ) ;
657
+ strictEqual ( name , users [ 0 ] . name ) ;
658
+ strictEqual ( as , users [ 0 ] . impersonateUser ) ;
645
659
} ) ;
646
660
} ) ;
647
661
@@ -1787,4 +1801,25 @@ describe('KubeConfig', () => {
1787
1801
strictEqual ( opts . headers ! . Authorization , 'Bearer test-token' ) ;
1788
1802
} ) ;
1789
1803
} ) ;
1804
+
1805
+ describe ( 'Impersonation' , ( ) => {
1806
+ it ( 'injects Impersonate-User header' , async ( ) => {
1807
+ const kc = new KubeConfig ( ) ;
1808
+ const cluster : Cluster = {
1809
+ name : 'test-cluster' ,
1810
+ server : 'https://localhost:6443' ,
1811
+ skipTLSVerify : false ,
1812
+ } ;
1813
+ const user : User = {
1814
+ name : 'test-user' ,
1815
+ authProvider : 'custom' ,
1816
+ impersonateUser : 'impersonate-user' ,
1817
+ } ;
1818
+
1819
+ kc . loadFromClusterAndUser ( cluster , user ) ;
1820
+ const opts : RequestOptions = { } ;
1821
+ await kc . applyToHTTPSOptions ( opts ) ;
1822
+ strictEqual ( opts . headers ! [ 'Impersonate-User' ] , 'impersonate-user' ) ;
1823
+ } ) ;
1824
+ } ) ;
1790
1825
} ) ;
0 commit comments