55 lines
1.5 KiB
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)
|
|
}
|
|
}
|