...
1 package client
2
3 import (
4 "fmt"
5 "net/http"
6 "net/http/httptest"
7 "strings"
8 "testing"
9
10 "edge-infra.dev/pkg/edge/api/totp"
11
12 assertAPI "github.com/stretchr/testify/assert"
13 )
14
15 func TestNewBearerClient(t *testing.T) {
16 assert := assertAPI.New(t)
17 version := "v1"
18 token := "test-token"
19
20 server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
21 auth := r.Header.Get(Authorization)
22 assert.Equal(auth, "bearer "+token)
23 assert.Equal(r.Header.Get(EdgeVersion), version)
24
25 w.WriteHeader(200)
26 }))
27
28 headers := make(map[string]string)
29 headers[Authorization] = fmt.Sprintf("%s %s", BearerToken, token)
30 headers[EdgeVersion] = version
31 client := NewTokenClient(headers)
32 _, err := client.Get(server.URL)
33 assert.NoError(err)
34 }
35
36 func TestNewTotpClient(t *testing.T) {
37 assert := assertAPI.New(t)
38 totpSecret := "abcdefghij"
39 version := "v1"
40 token, err := totp.GenerateTotp(totpSecret)
41 assert.NoError(err)
42
43 server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
44 auth := r.Header.Get(Authorization)
45 assert.Equal(auth, "totp "+token.Code)
46 assert.Equal(r.Header.Get(EdgeVersion), version)
47
48 token := strings.Split(auth, " ")[1]
49 assert.NoError(totp.ValidateTotpToken(token, totpSecret))
50
51 w.WriteHeader(200)
52 }))
53
54 headers := make(map[string]string)
55 headers[Authorization] = fmt.Sprintf("%s %s", TotpToken, token.Code)
56 headers[EdgeVersion] = version
57 client := NewTokenClient(headers)
58 _, err = client.Get(server.URL)
59 assert.NoError(err)
60 }
61
View as plain text