/
doc.go
67 lines (66 loc) · 1.86 KB
/
doc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Copyright (c) 2020, Maxime Soulé
// All rights reserved.
//
// This source code is licensed under the BSD-style license found in the
// LICENSE file in the root directory of this source tree.
// Package tdhttp, from [go-testdeep], provides some functions to easily
// test HTTP handlers.
//
// Combined to [td] package it provides powerful testing features.
//
// # TestAPI
//
// The better way to test HTTP APIs using this package.
//
// ta := tdhttp.NewTestAPI(t, mux)
//
// ta.Get("/person/42", "Accept", "application/xml").
// CmpStatus(http.StatusOK).
// CmpHeader(td.ContainsKey("X-Custom-Header")).
// CmpCookie(td.SuperBagOf(td.Smuggle("Name", "cookie_session"))).
// CmpXMLBody(Person{
// ID: ta.Anchor(td.NotZero(), uint64(0)).(uint64),
// Name: "Bob",
// Age: 26,
// })
//
// ta.Get("/person/42", "Accept", "application/json").
// CmpStatus(http.StatusOK).
// CmpHeader(td.ContainsKey("X-Custom-Header")).
// CmpCookies(td.SuperBagOf(td.Struct(&http.Cookie{Name: "cookie_session"}, nil))).
// CmpJSONBody(td.JSON(`
// {
// "id": $1,
// "name": "Bob",
// "age": 26
// }`,
// td.NotZero()))
//
// See the full example below.
//
// # Cmp…Response functions
//
// Historically, it was the only way to test HTTP APIs using
// this package.
//
// ok := tdhttp.CmpJSONResponse(t,
// tdhttp.Get("/person/42"),
// myAPI.ServeHTTP,
// Response{
// Status: http.StatusOK,
// Header: td.ContainsKey("X-Custom-Header"),
// Cookies: td.SuperBagOf(td.Smuggle("Name", "cookie_session")),
// Body: Person{
// ID: 42,
// Name: "Bob",
// Age: 26,
// },
// },
// "/person/{id} route")
//
// It now uses [TestAPI] behind the scene. It is better to directly
// use [TestAPI] and its methods instead, as it is more flexible and
// readable.
//
// [go-testdeep]: https://go-testdeep.zetta.rocks/
package tdhttp