@@ -10,7 +10,6 @@ import (
1010 "path/filepath"
1111 "testing"
1212
13- "github.com/kubernetes-sigs/headlamp/backend/pkg/config"
1413 "github.com/kubernetes-sigs/headlamp/backend/pkg/kubeconfig"
1514 "github.com/pkg/errors"
1615 "github.com/stretchr/testify/assert"
@@ -314,12 +313,55 @@ func createTempKubeconfig(t *testing.T, content string) string {
314313 return tempFile .Name ()
315314}
316315
316+ // setupMockK8sServer creates a test HTTP server and a temporary kubeconfig pointing to it.
317+ // Returns the server, temp kubeconfig path, and a cleanup function.
318+ func setupMockK8sServer (t * testing.T ) (* httptest.Server , string ) {
319+ t .Helper ()
320+
321+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
322+ if r .URL .Path == "/version" {
323+ w .Header ().Set ("Content-Type" , "application/json" )
324+ _ , _ = w .Write ([]byte (`{"major": "1", "minor": "20"}` ))
325+
326+ return
327+ }
328+
329+ w .WriteHeader (http .StatusNotFound )
330+ }))
331+
332+ kubeConfigContent := fmt .Sprintf (`apiVersion: v1
333+ clusters:
334+ - cluster:
335+ server: %s
336+ insecure-skip-tls-verify: true
337+ name: minikube
338+ contexts:
339+ - context:
340+ cluster: minikube
341+ namespace: default
342+ user: minikube
343+ name: minikube
344+ current-context: minikube
345+ kind: Config
346+ users:
347+ - name: minikube
348+ user:
349+ token: test-token
350+ ` , server .URL )
351+
352+ tempFile := createTempKubeconfig (t , kubeConfigContent )
353+
354+ return server , tempFile
355+ }
356+
317357func TestContext (t * testing.T ) {
318- kubeConfigFile := config .GetDefaultKubeConfigPath ()
358+ server , tempFile := setupMockK8sServer (t )
359+ defer server .Close ()
360+ defer os .Remove (tempFile )
319361
320362 configStore := kubeconfig .NewContextStore ()
321363
322- err := kubeconfig .LoadAndStoreKubeConfigs (configStore , kubeConfigFile , kubeconfig .KubeConfig , nil )
364+ err := kubeconfig .LoadAndStoreKubeConfigs (configStore , tempFile , kubeconfig .KubeConfig , nil )
323365 require .NoError (t , err )
324366
325367 testContext , err := configStore .GetContext ("minikube" )
@@ -333,18 +375,15 @@ func TestContext(t *testing.T) {
333375 require .NoError (t , err )
334376 require .NotNil (t , restConf )
335377
336- // Test proxy request handler
337-
338378 request , err := http .NewRequestWithContext (context .Background (), "GET" , "/version" , nil )
339379 require .NoError (t , err )
340380
341381 rr := httptest .NewRecorder ()
342382
343383 err = testContext .ProxyRequest (rr , request )
344384 require .NoError (t , err )
345- assert .Equal (t , http .StatusOK , rr .Code )
346385
347- t . Logf ( "Proxy request Response: %s" , rr .Body . String () )
386+ assert . Equal ( t , http . StatusOK , rr .Code )
348387 assert .Contains (t , rr .Body .String (), "major" )
349388 assert .Contains (t , rr .Body .String (), "minor" )
350389}
0 commit comments