43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
package graphql
|
|
|
|
import (
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/traggo/server/model"
|
|
"github.com/traggo/server/test"
|
|
)
|
|
|
|
func TestHandler_jsonOverHtml(t *testing.T) {
|
|
db := test.InMemoryDB(t)
|
|
defer db.Close()
|
|
resolver := NewResolver(db.DB, 4, model.Version{})
|
|
handler := Handler("/gql", resolver, NewDirective())
|
|
req := httptest.NewRequest("GET", "/gql?query="+url.QueryEscape("query {currentUser {name}}"), strings.NewReader(""))
|
|
req.Header.Set("Accept", "text/html;application/json")
|
|
recorder := httptest.NewRecorder()
|
|
handler.ServeHTTP(recorder, req)
|
|
require.Equal(t, "application/graphql-response+json", recorder.Header().Get("Content-Type"))
|
|
require.JSONEq(t, `
|
|
{
|
|
"data": { "currentUser": null }
|
|
}
|
|
`, recorder.Body.String())
|
|
}
|
|
|
|
func TestHandler_htmlIfNotJson(t *testing.T) {
|
|
db := test.InMemoryDB(t)
|
|
defer db.Close()
|
|
resolver := NewResolver(db.DB, 4, model.Version{})
|
|
handler := Handler("/gql", resolver, NewDirective())
|
|
req := httptest.NewRequest("get", "/gql", strings.NewReader(""))
|
|
req.Header.Set("Accept", "text/html;application/xml")
|
|
recorder := httptest.NewRecorder()
|
|
handler.ServeHTTP(recorder, req)
|
|
|
|
require.Contains(t, recorder.Body.String(), "Traggo Playground")
|
|
}
|