github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/logcli/client/client_test.go (about) 1 package client 2 3 import ( 4 "encoding/base64" 5 "net/http" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func Test_buildURL(t *testing.T) { 12 tests := []struct { 13 name string 14 u, p, q string 15 want string 16 wantErr bool 17 }{ 18 {"err", "8://2", "/bar", "", "", true}, 19 {"strip /", "http://localhost//", "//bar", "a=b", "http://localhost/bar?a=b", false}, 20 {"sub path", "https://localhost/loki/", "/bar/foo", "c=d&e=f", "https://localhost/loki/bar/foo?c=d&e=f", false}, 21 } 22 for _, tt := range tests { 23 t.Run(tt.name, func(t *testing.T) { 24 got, err := buildURL(tt.u, tt.p, tt.q) 25 if (err != nil) != tt.wantErr { 26 t.Errorf("buildURL() error = %v, wantErr %v", err, tt.wantErr) 27 return 28 } 29 if got != tt.want { 30 t.Errorf("buildURL() = %v, want %v", got, tt.want) 31 } 32 }) 33 } 34 } 35 36 func Test_getHTTPRequestHeader(t *testing.T) { 37 tests := []struct { 38 name string 39 client DefaultClient 40 want http.Header 41 wantErr bool 42 }{ 43 {"empty", DefaultClient{}, http.Header{}, false}, 44 {"partial-headers", DefaultClient{ 45 OrgID: "124", 46 QueryTags: "source=abc", 47 }, http.Header{ 48 "X-Scope-OrgID": []string{"124"}, 49 "X-Query-Tags": []string{"source=abc"}, 50 }, false}, 51 {"basic-auth", DefaultClient{ 52 Username: "123", 53 Password: "secure", 54 }, http.Header{ 55 "Authorization": []string{"Basic " + base64.StdEncoding.EncodeToString([]byte("123:secure"))}, 56 }, false}, 57 {"bearer-token", DefaultClient{ 58 BearerToken: "secureToken", 59 }, http.Header{ 60 "Authorization": []string{"Bearer " + "secureToken"}, 61 }, false}, 62 } 63 for _, tt := range tests { 64 t.Run(tt.name, func(t *testing.T) { 65 got, err := tt.client.getHTTPRequestHeader() 66 if (err != nil) != tt.wantErr { 67 t.Errorf("getHTTPRequestHeader() error = %v, wantErr %v", err, tt.wantErr) 68 return 69 } 70 71 // User-Agent should be set all the time. 72 assert.Equal(t, got["User-Agent"], []string{userAgent}) 73 74 for k := range tt.want { 75 ck := http.CanonicalHeaderKey(k) 76 assert.Equal(t, tt.want[k], got[ck]) 77 } 78 }) 79 } 80 }