mirror of
https://github.com/caddyserver/caddy.git
synced 2025-02-24 08:49:01 +01:00
Json response initial test for browse.go
This commit is contained in:
parent
bfc61824b9
commit
730269743f
1 changed files with 91 additions and 2 deletions
|
@ -1,14 +1,17 @@
|
||||||
package browse
|
package browse
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
//"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"github.com/mholt/caddy/middleware"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
|
"net/url"
|
||||||
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
"testing"
|
"testing"
|
||||||
"text/template"
|
"text/template"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/mholt/caddy/middleware"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// "sort" package has "IsSorted" function, but no "IsReversed";
|
// "sort" package has "IsSorted" function, but no "IsReversed";
|
||||||
|
@ -154,4 +157,90 @@ func TestBrowseTemplate(t *testing.T) {
|
||||||
if respBody != expectedBody {
|
if respBody != expectedBody {
|
||||||
t.Fatalf("Expected body: %v got: %v", expectedBody, respBody)
|
t.Fatalf("Expected body: %v got: %v", expectedBody, respBody)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBrowseJson(t *testing.T) {
|
||||||
|
|
||||||
|
b := Browse{
|
||||||
|
Next: middleware.HandlerFunc(func(w http.ResponseWriter, r *http.Request) (int, error) {
|
||||||
|
t.Fatalf("Next shouldn't be called")
|
||||||
|
return 0, nil
|
||||||
|
}),
|
||||||
|
Root: "./testdata",
|
||||||
|
Configs: []Config{
|
||||||
|
Config{
|
||||||
|
PathScope: "/photos",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", "/photos/", nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Test: Could not create HTTP request: %v", err)
|
||||||
|
}
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
rec := httptest.NewRecorder()
|
||||||
|
|
||||||
|
b.ServeHTTP(rec, req)
|
||||||
|
if rec.Code != http.StatusOK {
|
||||||
|
t.Fatalf("Wrong status, expected %d, got %d", http.StatusOK, rec.Code)
|
||||||
|
}
|
||||||
|
if rec.HeaderMap.Get("Content-Type") != "application/json; charset=utf-8" {
|
||||||
|
t.Fatalf("Expected Content type to be application/json; charset=utf-8, but got %s ", rec.HeaderMap.Get("Content-Type"))
|
||||||
|
}
|
||||||
|
|
||||||
|
actualJsonResponseString := rec.Body.String()
|
||||||
|
//t.Logf("json response body: %s\n", respBody)
|
||||||
|
//generating the listing to compare it with the response body
|
||||||
|
file, err := os.Open(b.Root + req.URL.Path)
|
||||||
|
if err != nil {
|
||||||
|
if os.IsPermission(err) {
|
||||||
|
t.Fatalf("Os Permission Error")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
files, err := file.Readdir(-1)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unable to Read Contents of the directory")
|
||||||
|
}
|
||||||
|
var fileinfos []FileInfo
|
||||||
|
for _, f := range files {
|
||||||
|
name := f.Name()
|
||||||
|
|
||||||
|
if f.IsDir() {
|
||||||
|
name += "/"
|
||||||
|
}
|
||||||
|
|
||||||
|
url := url.URL{Path: name}
|
||||||
|
|
||||||
|
fileinfos = append(fileinfos, FileInfo{
|
||||||
|
IsDir: f.IsDir(),
|
||||||
|
Name: f.Name(),
|
||||||
|
Size: f.Size(),
|
||||||
|
URL: url.String(),
|
||||||
|
ModTime: f.ModTime(),
|
||||||
|
Mode: f.Mode(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
listing := Listing{
|
||||||
|
Items: fileinfos,
|
||||||
|
}
|
||||||
|
listing.Sort = "name"
|
||||||
|
listing.Order = "asc"
|
||||||
|
listing.applySort()
|
||||||
|
|
||||||
|
//var buf bytes.Buffer
|
||||||
|
marsh, err := json.Marshal(listing.Items)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unable to Marshal the listing ")
|
||||||
|
}
|
||||||
|
//t.Logf("json value: %s\n", string(marsh))
|
||||||
|
expectedJsonString := string(marsh)
|
||||||
|
if actualJsonResponseString != expectedJsonString {
|
||||||
|
t.Errorf("Json response string doesnt match the expected Json response ")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue