import "github.com/greenbone/opensight-golang-libraries/pkg/httpassert"- Constants
- func AssertJSONCanonicalEq(t *testing.T, expected, actual string) bool
- func NormalizeJSON(t *testing.T, s string) string
- type Extractor
- type Matcher
- type Request
- type RequestStart
- type Response
const IgnoreJsonValue = "<IGNORE>"func AssertJSONCanonicalEq(t *testing.T, expected, actual string) boolAssertJSONCanonicalEq compares two JSON strings by normalizing both first. On mismatch, it prints a readable diff of the normalized forms.
func NormalizeJSON
func NormalizeJSON(t *testing.T, s string) stringNormalizeJSON parses JSON and re-marshals it with stable key ordering and indentation. - Uses Decoder.UseNumber() to preserve numeric fidelity (avoid float64 surprises).
type Extractor
type Extractor func(t *testing.T, actual any) anyfunc ExtractRegexTo
func ExtractRegexTo(value string, ptr any) Extractorfunc ExtractTo
func ExtractTo(ptr any) ExtractorExtractTo sets the value read from JSONPath into the given pointer variable. Example:
var id string
request.Expect().JsonPath("$.data.id", httpassert.ExtractTo(&id))
type Matcher
type Matcher func(t *testing.T, actual any) boolfunc Contains
func Contains(v string) MatcherContains checks if a string contains the value Example: JsonPath("$.data.name", httpassert.Contains("foo"))
func HasSize
func HasSize(e int) MatcherHasSize checks the length of arrays, maps, or strings. Example: JsonPath("$.data", httpassert.HasSize(11))
func IsUUID
func IsUUID() MatcherIsUUID checks if a string is a UUID Example: JsonPath("$.id", httpassert.IsUUID())
func NotEmpty
func NotEmpty() MatcherNotEmpty checks if a string is not empty Example: JsonPath("$.data.name", httpassert.NotEmpty())
func Regex
func Regex(expr string) MatcherRegex checks if a string matches the given regular expression Example: JsonPath("$.data.name", httpassert.Regex("^foo.*bar$"))
type Request
nolint:interfacebloat Request provides fluent request configuration
type Request interface {
AuthHeader(header string) Request
Headers(headers map[string]string) Request
Header(key, value string) Request
AuthJwt(jwt string) Request
ContentType(string) Request
Content(string) Request
ContentFile(string) Request
JsonContent(string) Request
JsonContentTemplate(body string, values map[string]any) Request
JsonContentObject(any) Request
JsonContentFile(path string) Request
Expect() Response
ExpectEventually(check func(r Response), timeout time.Duration, interval time.Duration) Response
}type RequestStart
nolint:interfacebloat RequestStart provides fluent HTTP *method + path* selection. Each call returns a fresh Request
type RequestStart interface {
Get(path string) Request
Getf(format string, a ...interface{}) Request
Post(path string) Request
Postf(format string, a ...interface{}) Request
Put(path string) Request
Putf(format string, a ...interface{}) Request
Delete(path string) Request
Deletef(format string, a ...interface{}) Request
Options(path string) Request
Optionsf(format string, a ...interface{}) Request
Patch(path string) Request
Patchf(format string, a ...interface{}) Request
Perform(verb string, path string) Request
Performf(verb string, path string, a ...interface{}) Request
}func New
func New(t *testing.T, router http.Handler) RequestStartNew returns a new RequestStart instance for the given router. All method calls (Get/Post/...) return a *fresh* Request.
type Response
nolint:interfacebloat Response interface provides fluent response assertions.
type Response interface {
StatusCode(int) Response
JsonPath(string, any) Response
JsonPathJson(path string, expectedJson string) Response
ContentType(contentType string) Response
NoContent() Response
Json(json string) Response
JsonTemplate(json string, values map[string]any) Response
JsonTemplateFile(path string, values map[string]any) Response
JsonFile(path string) Response
Header(name string, value any) Response
Body(body string) Response
GetJsonBodyObject(target any) Response
GetBody() string
Log() Response
}Generated by gomarkdoc