mirror of
https://github.com/amir20/dozzle.git
synced 2025-12-21 13:23:07 +01:00
55 lines
1.7 KiB
Go
55 lines
1.7 KiB
Go
package web
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
|
|
"testing"
|
|
|
|
"github.com/amir20/dozzle/internal/auth"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/spf13/afero"
|
|
)
|
|
|
|
func Test_createRoutes_proxy_missing_headers(t *testing.T) {
|
|
fs := afero.NewMemMapFs()
|
|
require.NoError(t, afero.WriteFile(fs, "index.html", []byte("index page"), 0644), "WriteFile should have no error.")
|
|
|
|
handler := createHandler(nil, afero.NewIOFS(fs), Config{Base: "/",
|
|
Authorization: Authorization{
|
|
Provider: ForwardProxy,
|
|
Authorizer: auth.NewForwardProxyAuth("Remote-User", "Remote-Email", "Remote-Name", "Remote-Filter"),
|
|
},
|
|
})
|
|
req, err := http.NewRequest("GET", "/", nil)
|
|
require.NoError(t, err, "NewRequest should not return an error.")
|
|
rr := httptest.NewRecorder()
|
|
|
|
handler.ServeHTTP(rr, req)
|
|
|
|
assert.Equal(t, 401, rr.Code, "Response code should be 401.")
|
|
}
|
|
|
|
func Test_createRoutes_proxy_happy(t *testing.T) {
|
|
fs := afero.NewMemMapFs()
|
|
require.NoError(t, afero.WriteFile(fs, "index.html", []byte("index page"), 0644), "WriteFile should have no error.")
|
|
|
|
handler := createHandler(nil, afero.NewIOFS(fs), Config{Base: "/",
|
|
Authorization: Authorization{
|
|
Provider: ForwardProxy,
|
|
Authorizer: auth.NewForwardProxyAuth("Remote-User", "Remote-Email", "Remote-Name", "Remote-Filter"),
|
|
},
|
|
})
|
|
req, err := http.NewRequest("GET", "/", nil)
|
|
req.Header.Set("Remote-Email", "amir@test.com")
|
|
req.Header.Set("Remote-Name", "Amir")
|
|
req.Header.Set("Remote-User", "amir")
|
|
require.NoError(t, err, "NewRequest should not return an error.")
|
|
rr := httptest.NewRecorder()
|
|
|
|
handler.ServeHTTP(rr, req)
|
|
assert.Equal(t, 200, rr.Code, "Response code should be 200.")
|
|
}
|