mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-10-31 10:37:24 -04:00 
			
		
		
		
	Json response initial test for browse.go
This commit is contained in:
		
							parent
							
								
									bfc61824b9
								
							
						
					
					
						commit
						730269743f
					
				| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user