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