This package provides a few simple helper types and functions to create functional tests that call a running REST based WebService.
Most functions require a t argument that implements the forest.T interface which is a subset of *testing.T.
go get github.com/emicklei/forest
package main
import (
"net/http"
"testing"
. "github.com/emicklei/forest"
)
var github = NewClient("https://api.github.com", new(http.Client))
func TestForestProjectExists(t *testing.T) {
cfg := NewConfig("/repos/emicklei/{repo}", "forest").Header("Accept", "application/json")
r := github.GET(t, cfg)
ExpectStatus(t, r, 200)
}
The GraphQLRequest can be used to construct a request for a GraphQL endpoint.
query := forest.NewGraphQLRequest(list_matrices_query, "ListMatrices")
query, err = query.WithVariablesFromString(`
{
"repositoryID":"99426e24-..........-6bf9770f1fd5",
"page":{
"first":20
},
}`)
// ... handle error
cfg := forest.NewRequestConfig(...)
cfg.Content(query, "application/json")
r := SkillsAPI.POST(t, cfg)
ExpectStatus(t, r, 200)
func NewGraphQLRequest(query, operation string, vars ...Map) GraphQLRequestfunc (r GraphQLRequest) WithVariablesFromString(jsonhash string) (GraphQLRequest, error)
func CheckError(t T, err error) boolfunc CookieNamed(resp *http.Response, name string) *http.Cookiefunc Dump(t T, resp *http.Response)func Errorf(t *testing.T, format string, args ...interface{})func ExpectHeader(t T, r *http.Response, name, value string)func ExpectJSONArray(t T, r *http.Response, callback func(array []interface{}))func ExpectJSONDocument(t T, r *http.Response, doc interface{})func ExpectJSONHash(t T, r *http.Response, callback func(hash map[string]interface{}))func ExpectStatus(t T, r *http.Response, status int) boolfunc ExpectString(t T, r *http.Response, callback func(content string))func ExpectXMLDocument(t T, r *http.Response, doc interface{})func Fatalf(t *testing.T, format string, args ...interface{})func JSONArrayPath(t T, r *http.Response, dottedPath string) interface{}func JSONPath(t T, r *http.Response, dottedPath string) interface{}func ProcessTemplate(t T, templateContent string, value interface{}) stringfunc ReadJUnitReport(filename string) (r JUnitReport, err error)func Scolorf(syntaxCode string, format string, args ...interface{}) stringfunc SkipUnless(s skippeable, labels ...string)func VerboseOnFailure(verbose bool)func XMLPath(t T, r *http.Response, xpath string) interface{}
© 2016-2025, https://ernestmicklei.com. MIT License. Contributions welcome.
