test server put, tree, get

This commit is contained in:
Bel LaPointe
2022-02-08 12:52:53 -07:00
parent 09b3e4a002
commit 34b964e0bb
6 changed files with 90 additions and 0 deletions

View File

@@ -1,6 +1,8 @@
package main
import (
"bytes"
"encoding/json"
"net/http"
"net/http/httptest"
"path"
@@ -98,3 +100,64 @@ func TestServerRoutes(t *testing.T) {
})
}
}
func TestServerPutTreeGetFile(t *testing.T) {
server := NewServer(t.TempDir())
if err := server.Routes(); err != nil {
t.Fatal(err)
}
server.tree().Put("my pid", Branch{})
var id string
t.Run("post", func(t *testing.T) {
r := httptest.NewRequest(http.MethodPost, "/", strings.NewReader("body"))
r.Header.Set("Title", "my title")
r.Header.Set("PID", "my pid")
w := httptest.NewRecorder()
if err := server.apiV0FilesHandler(w, r); err != nil {
t.Fatal(err)
}
if w.Code != http.StatusOK {
t.Fatal(w)
}
var resp struct {
Data struct {
FilePath string `json:"filePath"`
} `json:"data"`
}
if err := json.NewDecoder(w.Body).Decode(&resp); err != nil {
t.Fatal(err)
}
id = path.Base(resp.Data.FilePath)
})
t.Run("tree", func(t *testing.T) {
r := httptest.NewRequest(http.MethodGet, "/", nil)
w := httptest.NewRecorder()
if err := server.apiV0TreeHandler(w, r); err != nil {
t.Fatal(err)
}
if w.Code != http.StatusOK {
t.Fatal(w)
}
if !bytes.Contains(w.Body.Bytes(), []byte(`{"Title":"my title","Deleted":false,"Updated":"`)) {
t.Fatal(w)
}
})
t.Run("get", func(t *testing.T) {
r := httptest.NewRequest(http.MethodGet, "/"+id, nil)
w := httptest.NewRecorder()
if err := server.apiV0FilesIDHandler(w, r); err != nil {
t.Fatal(err)
}
if w.Code != http.StatusOK {
t.Fatal(w)
}
if !bytes.Contains(w.Body.Bytes(), []byte(`body`)) {
t.Fatal(w)
}
if title := w.Header().Get("Title"); title != "my title" {
t.Fatal(title)
} else if pid := w.Header().Get("PID"); pid != "my pid" {
t.Fatal(pid)
}
})
}