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) } }