Skip to content

Instantly share code, notes, and snippets.

@quentinalbertone
Created August 5, 2026 15:33
Show Gist options
  • Select an option

  • Save quentinalbertone/1a2541156af9f2ff09042e1ede549a60 to your computer and use it in GitHub Desktop.

Select an option

Save quentinalbertone/1a2541156af9f2ff09042e1ede549a60 to your computer and use it in GitHub Desktop.
fake http client
package main
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
"net/http"
"testing"
egoscale "github.com/exoscale/egoscale/v3"
"github.com/exoscale/egoscale/v3/credentials"
)
type fakeSKSVersionsTransport struct {
versions []string
}
func (t *fakeSKSVersionsTransport) RoundTrip(req *http.Request) (*http.Response, error) {
body, err := json.Marshal(map[string]any{
"sks-cluster-versions": t.versions,
})
if err != nil {
return nil, err
}
return &http.Response{
StatusCode: http.StatusOK,
Body: io.NopCloser(bytes.NewReader(body)),
Header: make(http.Header),
}, nil
}
func TestRun(t *testing.T) {
fakeVersions := []string{"0.0.0", "1.1.1", "2.2.2"}
fakeHTTPClient := &http.Client{
Transport: &fakeSKSVersionsTransport{versions: fakeVersions},
}
client, err := egoscale.NewClient(
credentials.NewStaticCredentials("test-key", "test-secret"),
egoscale.ClientOptWithEndpoint(egoscale.CHGva2),
egoscale.ClientOptWithHTTPClient(fakeHTTPClient),
)
if err != nil {
t.Fatalf("failed to create egoscale client: %v", err)
}
resp, err := client.ListSKSClusterVersions(context.Background())
if err != nil {
t.Fatalf("ListSKSClusterVersions returned an error: %v", err)
}
for _, v := range resp.SKSClusterVersions {
fmt.Println(v)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment