Skip to content

Latest commit

 

History

History
238 lines (165 loc) · 7.13 KB

File metadata and controls

238 lines (165 loc) · 7.13 KB

httpassert

import "github.com/greenbone/opensight-golang-libraries/pkg/httpassert"

Index

Constants

const IgnoreJsonValue = "<IGNORE>"

func AssertJSONCanonicalEq(t *testing.T, expected, actual string) bool

AssertJSONCanonicalEq compares two JSON strings by normalizing both first. On mismatch, it prints a readable diff of the normalized forms.

func NormalizeJSON(t *testing.T, s string) string

NormalizeJSON parses JSON and re-marshals it with stable key ordering and indentation. - Uses Decoder.UseNumber() to preserve numeric fidelity (avoid float64 surprises).

type Extractor func(t *testing.T, actual any) any

func ExtractRegexTo(value string, ptr any) Extractor

func ExtractTo(ptr any) Extractor

ExtractTo 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) bool

func Contains(v string) Matcher

Contains checks if a string contains the value Example: JsonPath("$.data.name", httpassert.Contains("foo"))

func HasSize

func HasSize(e int) Matcher

HasSize checks the length of arrays, maps, or strings. Example: JsonPath("$.data", httpassert.HasSize(11))

func IsUUID

func IsUUID() Matcher

IsUUID checks if a string is a UUID Example: JsonPath("$.id", httpassert.IsUUID())

func NotEmpty() Matcher

NotEmpty checks if a string is not empty Example: JsonPath("$.data.name", httpassert.NotEmpty())

func Regex

func Regex(expr string) Matcher

Regex 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
}

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) RequestStart

New returns a new RequestStart instance for the given router. All method calls (Get/Post/...) return a *fresh* Request.

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