schema

package
v1.6.5 Latest Latest
Warning

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

Go to latest
Published: Dec 16, 2020 License: MIT Imports: 16 Imported by: 0

README

Swagger Schema Validation

This packages provides functionality for validate http responses, including body schema against a swagger definition using go-swagger library.

Open Banking Specs

Setup

This package uses flattened version of Open Banking API specs, you will the swaggger CLI tool from:

https://goswagger.io/install.html

To flatten a spec use command:

swagger flatten --with-expand -o account-info-swagger.flattened.json account-info-swagger.json
Usage

This package is a wrapper around swagger library validator with adicional status code and content type check, also allowing implementing other custom validator and version variations.

func main() {
    v, err := NewSwaggerValidator("https://raw.githubusercontent.com/OpenBankingUK/read-write-api-specs/v3.1.0/dist/account-info-swagger.json")
    if err != nil {
        panic(err)
    }
    
    failures, err := v.Validate(r)
    if err != nil {
        panic(err)
    }

    fmt.Printf("Validation failures found:\n%v", failures)    
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNotFound = errors.New("operation for method/path not found")

Functions

func CheckRequestSchema added in v1.2.0

func CheckRequestSchema()

func NewNullValidator

func NewNullValidator() nullValidator

Types

type Failure

type Failure struct {
	Message string
}

Failure represents a validation failure

type Matcher

type Matcher interface {
	Match(pathWithParams, path2 string) bool
}

Matcher exposes a path comparison interface Expected usage to compare a path that has placeholder and a real path. Ex: /accounts/{account_id} == /accounts/1234567890

func NewMatcher

func NewMatcher() Matcher

type Response

type Response struct {
	Method     string
	Path       string
	Header     http.Header
	Body       io.Reader
	StatusCode int
}

Response represents a response object from a HTTP Call

type Validator

type Validator interface {
	Validate(Response) ([]Failure, error)
	IsRequestProperty(method, path, propertpath string) (bool, string, error)
}

Validator validates a HTTP response object against a schema

func NewSwaggerOBSpecValidator

func NewSwaggerOBSpecValidator(specName, version string) (Validator, error)

func NewSwaggerValidator

func NewSwaggerValidator(schemaPath string) (Validator, error)

NewSwaggerValidator returns a swagger validator implementation Takes a schema file path as source, can be remote http(s) or local

Jump to

Keyboard shortcuts

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