@@ -67,4 +67,39 @@ test.describe('Headlamp in-cluster API', () => {
6767 expect ( body ) . toHaveProperty ( 'items' ) ;
6868 expect ( Array . isArray ( body . items ) ) . toBe ( true ) ;
6969 } ) ;
70+
71+ test ( 'can list Helm releases with service account token' , async ( { request } ) => {
72+ const response = await request . get ( '/clusters/main/helm/releases/list' , {
73+ headers : {
74+ Authorization : `Bearer ${ saToken } ` ,
75+ } ,
76+ baseURL,
77+ } ) ;
78+
79+ expect ( response . status ( ) , 'expected 200 from Helm releases API with token' ) . toBe ( 200 ) ;
80+
81+ const body = await response . json ( ) ;
82+ // Response structure may vary depending on installed charts; just assert we get a list back.
83+ expect ( body ) . toHaveProperty ( 'releases' ) ;
84+ expect ( Array . isArray ( body . releases ) ) . toBe ( true ) ;
85+
86+ // do a follow up request to /clusters/main/helm/releases/list?all=true without a token
87+ // and expect a non-200 status
88+ const response2 = await request . get ( '/clusters/main/helm/releases/list?all=true' , {
89+ baseURL,
90+ } ) ;
91+ expect (
92+ response2 . status ( ) ,
93+ 'expected a non-200 status from Helm releases API without token'
94+ ) . not . toBe ( 200 ) ;
95+ } ) ;
96+
97+ test ( 'cannot list Helm releases without service account token' , async ( { request } ) => {
98+ const response = await request . get ( '/clusters/main/helm/releases/list' , {
99+ baseURL,
100+ } ) ;
101+
102+ // Without token, the request should fail with an error status
103+ expect ( response . status ( ) , 'expected error from Helm releases API without token' ) . not . toBe ( 200 ) ;
104+ } ) ;
70105} ) ;
0 commit comments