@@ -643,6 +643,23 @@ 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+ 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+ } ) ;
646663 } ) ;
647664
648665 describe ( 'findHome' , ( ) => {
@@ -1787,4 +1804,25 @@ describe('KubeConfig', () => {
17871804 strictEqual ( opts . headers ! . Authorization , 'Bearer test-token' ) ;
17881805 } ) ;
17891806 } ) ;
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+ } ) ;
17901828} ) ;
0 commit comments