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