Anki/http_test.go

51 lines
963 B
Go

package main
import (
"net/http"
"net/http/httptest"
"os"
"path"
"strings"
"testing"
"time"
)
func TestHTTPPostQuestionAnswers(t *testing.T) {
p := path.Join(t.TempDir(), "db.yaml")
os.WriteFile(p, []byte("{}"), os.ModePerm)
db, err := newYamlDB(p)
if err != nil {
t.Fatal(err)
}
w := httptest.NewRecorder()
r := httptest.NewRequest(
http.MethodPost,
"/api/questions/QID/answers",
strings.NewReader(`{"answer":"a", "passed": false}`),
)
r.SetBasicAuth("u", "")
withAuth(withDB(httpPostQuestionAnswers, db))(w, r)
if w.Code != http.StatusOK {
t.Error(w.Code)
}
_, got := db.LastAnswer("u", "QID")
if got == (Answer{}) {
t.Error("no answer pushed:", got)
}
if got.Q != "QID" {
t.Error(got.Q)
} else if got.A != "a" {
t.Error(got.A)
} else if time.Since(time.Unix(0, got.TS)) > time.Minute {
t.Error(got.TS)
} else if got.Author != "u" {
t.Error(got.Author)
} else if got.Pass != false {
t.Error(got.Pass)
}
}