mirror of
https://github.com/grafana/loki.git
synced 2025-07-26 08:32:26 +08:00

* Fork Cortex `tools/querytee`. * Use forked querytee instead of Cortex one. * Add `loki/tools` to list of possible paths. * Add opts to querytee proxy.
73 lines
2.0 KiB
Go
73 lines
2.0 KiB
Go
package querytee
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func Test_ProxyBackend_createBackendRequest_HTTPBasicAuthentication(t *testing.T) {
|
|
tests := map[string]struct {
|
|
clientUser string
|
|
clientPass string
|
|
backendUser string
|
|
backendPass string
|
|
expectedUser string
|
|
expectedPass string
|
|
}{
|
|
"no auth": {
|
|
expectedUser: "",
|
|
expectedPass: "",
|
|
},
|
|
"if the request is authenticated and the backend has no auth it should forward the request auth": {
|
|
clientUser: "marco",
|
|
clientPass: "marco-secret",
|
|
expectedUser: "marco",
|
|
expectedPass: "marco-secret",
|
|
},
|
|
"if the request is authenticated and the backend has an username set it should forward the request password only": {
|
|
clientUser: "marco",
|
|
clientPass: "marco-secret",
|
|
backendUser: "backend",
|
|
expectedUser: "backend",
|
|
expectedPass: "marco-secret",
|
|
},
|
|
"if the request is authenticated and the backend is authenticated it should use the backend auth": {
|
|
clientUser: "marco",
|
|
clientPass: "marco-secret",
|
|
backendUser: "backend",
|
|
backendPass: "backend-secret",
|
|
expectedUser: "backend",
|
|
expectedPass: "backend-secret",
|
|
},
|
|
"if the request is NOT authenticated and the backend is authenticated it should use the backend auth": {
|
|
backendUser: "backend",
|
|
backendPass: "backend-secret",
|
|
expectedUser: "backend",
|
|
expectedPass: "backend-secret",
|
|
},
|
|
}
|
|
|
|
for testName, testData := range tests {
|
|
t.Run(testName, func(t *testing.T) {
|
|
u, err := url.Parse(fmt.Sprintf("http://%s:%s@test", testData.backendUser, testData.backendPass))
|
|
require.NoError(t, err)
|
|
|
|
orig := httptest.NewRequest("GET", "/test", nil)
|
|
orig.SetBasicAuth(testData.clientUser, testData.clientPass)
|
|
|
|
b := NewProxyBackend("test", u, time.Second, false)
|
|
r := b.createBackendRequest(orig, nil)
|
|
|
|
actualUser, actualPass, _ := r.BasicAuth()
|
|
assert.Equal(t, testData.expectedUser, actualUser)
|
|
assert.Equal(t, testData.expectedPass, actualPass)
|
|
})
|
|
}
|
|
}
|