forest - for testing REST api-s in Go
This package provides a few simple helper types and functions to create functional tests that call a running REST based WebService.
install
go get github.com/emicklei/forest
simple example
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)
}
graphql support
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)
other helper functions
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) bool
func ExpectString(t T, r *http.Response, callback func(content string))
func ExpectXMLDocument(t T, r *http.Response, doc 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{}) string
func Scolorf(syntaxCode string, format string, args ...interface{}) string
func SkipUnless(s skippeable, labels ...string)
func XMLPath(t T, r *http.Response, xpath string) interface{}
func Dump(t T, resp *http.Response)
more docs
© 2016+, http://ernestmicklei.com. MIT License. Contributions welcome.