htest

package module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2023 License: MIT Imports: 11 Imported by: 0

README

htest

Go Reference

Chainable light-weight http client for testing golang http.Handler

package main_test

import (
	"net/http"
	"testing"

	"github.com/labstack/echo/v4"
	"github.com/stretchr/testify/require"
	"github.com/trim21/htest"
)

func TestGet(t *testing.T) {
	t.Parallel()
	app := echo.New()

	app.GET("/test", func(c echo.Context) error {
		return c.JSON(http.StatusOK, res{I: 5, Q: c.QueryParam("q")})
	})

	var r res
	htest.New(t, app).
		Query("q", "v").
		Get("/test").
		JSON(&r).
		ExpectCode(http.StatusOK)

	require.Equal(t, 5, r.I)
	require.Equal(t, "v", r.Q)
}

JSON

package main_test

import (
	"net/http"
	"testing"

	"github.com/labstack/echo/v4"
	"github.com/stretchr/testify/require"
	"github.com/trim21/htest"
)

func TestJSON(t *testing.T) {
	t.Parallel()

	app := echo.New()
	app.POST("/", func(c echo.Context) error {
		var r json.RawMessage
		err := json.NewDecoder(c.Request().Body).Decode(&r)
		require.NoError(t, err)

		return c.JSON(http.StatusOK, r)
	})

	var r struct {
		Hello int `json:"hello"`
		World int `json:"world"`
	}

	htest.New(t, app).
		BodyJSON(map[string]int{"hello": 1, "world": 2}).
		Post("/").
		ExpectCode(http.StatusOK).
		JSON(&r)

	require.Equal(t, 1, r.Hello)
	require.Equal(t, 2, r.World)
}

Form

package main_test

import (
	"net/http"
	"testing"

	"github.com/labstack/echo/v4"
	"github.com/stretchr/testify/require"
	"github.com/trim21/htest"
)

func TestForm(t *testing.T) {
	t.Parallel()

	app := echo.New()
	app.POST("/", func(c echo.Context) error {
		form, err := c.FormParams()
		require.NoError(t, err)

		return c.JSON(http.StatusOK, res{Q: form.Get("q")})
	})

	var r res
	res := htest.New(t, app).
		Form("q", "form-value").
		Post("/").
		ExpectCode(http.StatusOK).
		JSON(&r)

	require.Equal(t, "form-value", r.Q, res.BodyString())
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Request

type Request struct {
	// contains filtered or unexported fields
}

func New

func New(t *testing.T, server http.Handler) *Request

func (*Request) BodyJSON

func (r *Request) BodyJSON(v any) *Request

func (*Request) Cookie

func (r *Request) Cookie(key, value string) *Request

func (*Request) Delete

func (r *Request) Delete(entrypoint string) *Response

func (*Request) Form

func (r *Request) Form(key, value string) *Request

func (*Request) Get

func (r *Request) Get(entrypoint string) *Response

func (*Request) Header

func (r *Request) Header(key, value string) *Request

func (*Request) Patch

func (r *Request) Patch(path string) *Response

func (*Request) Post

func (r *Request) Post(entrypoint string) *Response

func (*Request) Put

func (r *Request) Put(entrypoint string) *Response

func (*Request) Query

func (r *Request) Query(key, value string) *Request

func (*Request) StdRequest

func (r *Request) StdRequest() *http.Request

type Response

type Response struct {
	Header http.Header
	Body   []byte

	StatusCode int
	Req        *http.Request
	// contains filtered or unexported fields
}

func (*Response) BodyString

func (r *Response) BodyString() string

func (*Response) Cookies

func (r *Response) Cookies() []*http.Cookie

func (*Response) ExpectCode

func (r *Response) ExpectCode(t int) *Response

func (*Response) JSON

func (r *Response) JSON(v any) *Response

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL