feat: ship Barkstack UI plugin
This commit is contained in:
62
internal/adminui/handler_test.go
Normal file
62
internal/adminui/handler_test.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package adminui
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestManifestEndpointDescribesPawSQLPlugin(t *testing.T) {
|
||||
response := httptest.NewRecorder()
|
||||
Handler(nil).ServeHTTP(response, httptest.NewRequest(http.MethodGet, "/barkstack/ui/manifest.json", nil))
|
||||
if response.Code != http.StatusOK {
|
||||
t.Fatalf("status = %d", response.Code)
|
||||
}
|
||||
if got := response.Header().Get("Content-Type"); got != "application/json" {
|
||||
t.Fatalf("content type = %q", got)
|
||||
}
|
||||
var got manifest
|
||||
if err := json.Unmarshal(response.Body.Bytes(), &got); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got.APIVersion != "barkstack.dev/ui/v1" || got.ID != "pawsql" || got.Entry != entryPath || got.Element != "barkstack-pawsql" {
|
||||
t.Fatalf("manifest = %+v", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEmbeddedEntryAssetIsServedWithJavaScriptContentType(t *testing.T) {
|
||||
response := httptest.NewRecorder()
|
||||
Handler(nil).ServeHTTP(response, httptest.NewRequest(http.MethodGet, entryPath, nil))
|
||||
if response.Code != http.StatusOK {
|
||||
t.Fatalf("status = %d", response.Code)
|
||||
}
|
||||
if got := response.Header().Get("Content-Type"); !strings.Contains(got, "javascript") {
|
||||
t.Fatalf("content type = %q", got)
|
||||
}
|
||||
if response.Body.Len() == 0 {
|
||||
t.Fatal("embedded entry asset is empty")
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatusEndpointReportsConfiguredRoutes(t *testing.T) {
|
||||
routes := []RouteSummary{{Name: "reporting", Hostname: "reports.example.com", Managed: true}}
|
||||
response := httptest.NewRecorder()
|
||||
Handler(routes).ServeHTTP(response, httptest.NewRequest(http.MethodGet, "/barkstack/ui/status.json", nil))
|
||||
var got statusResponse
|
||||
if err := json.Unmarshal(response.Body.Bytes(), &got); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got.Status != "running" || len(got.Routes) != 1 || got.Routes[0] != routes[0] {
|
||||
t.Fatalf("status response = %+v", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnknownAssetReturnsNotFound(t *testing.T) {
|
||||
response := httptest.NewRecorder()
|
||||
Handler(nil).ServeHTTP(response, httptest.NewRequest(http.MethodGet, "/barkstack/ui/assets/missing.js", nil))
|
||||
if response.Code != http.StatusNotFound {
|
||||
t.Fatalf("status = %d, want 404", response.Code)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user