package client import ( "fmt" "net/http" "net/http/httptest" "strings" "testing" "edge-infra.dev/pkg/edge/api/totp" assertAPI "github.com/stretchr/testify/assert" ) func TestNewBearerClient(t *testing.T) { assert := assertAPI.New(t) version := "v1" token := "test-token" server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { auth := r.Header.Get(Authorization) assert.Equal(auth, "bearer "+token) assert.Equal(r.Header.Get(EdgeVersion), version) w.WriteHeader(200) })) headers := make(map[string]string) headers[Authorization] = fmt.Sprintf("%s %s", BearerToken, token) headers[EdgeVersion] = version client := NewTokenClient(headers) _, err := client.Get(server.URL) assert.NoError(err) } func TestNewTotpClient(t *testing.T) { assert := assertAPI.New(t) totpSecret := "abcdefghij" version := "v1" token, err := totp.GenerateTotp(totpSecret) assert.NoError(err) server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { auth := r.Header.Get(Authorization) assert.Equal(auth, "totp "+token.Code) assert.Equal(r.Header.Get(EdgeVersion), version) token := strings.Split(auth, " ")[1] assert.NoError(totp.ValidateTotpToken(token, totpSecret)) w.WriteHeader(200) })) headers := make(map[string]string) headers[Authorization] = fmt.Sprintf("%s %s", TotpToken, token.Code) headers[EdgeVersion] = version client := NewTokenClient(headers) _, err = client.Get(server.URL) assert.NoError(err) }