Files
codit/backend/internal/rpm/http_test.go

55 lines
1.5 KiB
Go

package rpm
import "bytes"
import "net/http"
import "net/http/httptest"
import "os"
import "path/filepath"
import "testing"
import "codit/internal/util"
func TestHTTPServerUnauthorizedWithoutBasicAuth(t *testing.T) {
var dir string
var logger *util.Logger
var server *HTTPServer
var req *http.Request
var recorder *httptest.ResponseRecorder
dir = t.TempDir()
logger = util.NewLogger("test", &bytes.Buffer{}, util.LOG_ALL)
defer logger.Close()
server = NewHTTPServer(dir, func(username, password string) (bool, error) {
return true, nil
}, logger)
req = httptest.NewRequest(http.MethodGet, "/x", nil)
recorder = httptest.NewRecorder()
server.ServeHTTP(recorder, req)
if recorder.Code != http.StatusUnauthorized {
t.Fatalf("expected 401, got %d", recorder.Code)
}
}
func TestHTTPServerAuthorized(t *testing.T) {
var dir string
var logger *util.Logger
var server *HTTPServer
var req *http.Request
var recorder *httptest.ResponseRecorder
var path string
dir = t.TempDir()
path = filepath.Join(dir, "a.txt")
_ = os.WriteFile(path, []byte("ok"), 0o644)
logger = util.NewLogger("test", &bytes.Buffer{}, util.LOG_ALL)
defer logger.Close()
server = NewHTTPServer(dir, func(username, password string) (bool, error) {
return username == "u" && password == "p", nil
}, logger)
req = httptest.NewRequest(http.MethodGet, "/a.txt", nil)
req.SetBasicAuth("u", "p")
recorder = httptest.NewRecorder()
server.ServeHTTP(recorder, req)
if recorder.Code != http.StatusOK {
t.Fatalf("expected 200, got %d", recorder.Code)
}
}