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  }