assertjson

package
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2021 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package assertjson provides methods for testing JSON values. Selecting JSON values provided by JSON Pointer Syntax (https://tools.ietf.org/html/rfc6901).

Example usage

import (
   "net/http"
   "net/http/httptest"
   "testing"
   "github.com/muonsoft/api-testing/assertjson"
)

func TestYourAPI(t *testing.T) {
   recorder := httptest.NewRecorder()
   handler := createHTTPHandler()

   request, _ := http.NewRequest("GET", "/content", nil)
   handler.ServeHTTP(recorder, request)

   assertjson.Has(t, recorder.Body.Bytes(), func(json *assertjson.AssertJSON) {
       // common assertions
       json.Node("/nullNode").Exists()
       json.Node("/notExistingNode").DoesNotExist()
       json.Node("/nullNode").IsNull()
       json.Node("/stringNode").IsNotNull()
       json.Node("/trueBooleanNode").IsTrue()
       json.Node("/falseBooleanNode").IsFalse()

       // string assertions
       json.Node("/stringNode").IsString()
       json.Node("/stringNode").EqualToTheString("stringValue")
       json.Node("/stringNode").Matches("^string.*$")
       json.Node("/stringNode").DoesNotMatch("^notMatch$")
       json.Node("/stringNode").Contains("string")
       json.Node("/stringNode").DoesNotContain("notContain")
       json.Node("/stringNode").IsStringWithLength(11)
       json.Node("/stringNode").IsStringWithLengthInRange(11, 11)

       // numeric assertions
       json.Node("/integerNode").IsInteger()
       json.Node("/integerNode").EqualToTheInteger(123)
       json.Node("/integerNode").IsNumberInRange(122, 124)
       json.Node("/integerNode").IsNumberGreaterThan(122)
       json.Node("/integerNode").IsNumberGreaterThanOrEqual(123)
       json.Node("/integerNode").IsNumberLessThan(124)
       json.Node("/integerNode").IsNumberLessThanOrEqual(123)
       json.Node("/floatNode").IsFloat()
       json.Node("/floatNode").EqualToTheFloat(123.123)
       json.Node("/floatNode").IsNumberInRange(122, 124)
       json.Node("/floatNode").IsNumberGreaterThan(122)
       json.Node("/floatNode").IsNumberGreaterThanOrEqual(123.123)
       json.Node("/floatNode").IsNumberLessThan(124)
       json.Node("/floatNode").IsNumberLessThanOrEqual(123.123)

       // array assertions
       json.Node("/arrayNode").IsArrayWithElementsCount(1)
       // object assertions
       json.Node("/objectNode").IsObjectWithPropertiesCount(1)

       // json pointer expression
       json.Node("/complexNode/items/1/key").EqualToTheString("value")
   })
}

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FileHas

func FileHas(t testing.TB, filename string, jsonAssert JSONAssertFunc)

FileHas loads JSON from file and runs user callback for testing its nodes.

func Has

func Has(t testing.TB, data []byte, jsonAssert JSONAssertFunc)

Has - loads JSON from byte slice and runs user callback for testing its nodes.

Types

type AssertJSON

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

AssertJSON - main structure that holds parsed JSON.

func (*AssertJSON) At added in v0.3.0

func (j *AssertJSON) At(path string) *AssertJSON

At is used to test assertions on some node in a batch. It returns AssertJSON object on that node.

func (*AssertJSON) Atf added in v0.3.0

func (j *AssertJSON) Atf(format string, a ...interface{}) *AssertJSON

Atf is used to test assertions on some node in a batch. It returns AssertJSON object on that node. It calculates path by applying fmt.Sprintf function.

func (*AssertJSON) Node

func (j *AssertJSON) Node(path string) *AssertNode

Node searches for JSON node by JSON Path Syntax. Returns struct for asserting the node values.

func (*AssertJSON) Nodef added in v0.3.0

func (j *AssertJSON) Nodef(format string, a ...interface{}) *AssertNode

Nodef searches for JSON node by JSON Path Syntax. Returns struct for asserting the node values. It calculates path by applying fmt.Sprintf function.

type AssertNode

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

AssertNode - structure for asserting JSON node.

func (*AssertNode) AssertString added in v0.2.1

func (node *AssertNode) AssertString(assertFunc func(t testing.TB, value string))

AssertString asserts that the JSON node has a string value and it is satisfied by the user function assertFunc.

func (*AssertNode) Contains

func (node *AssertNode) Contains(contain string, msgAndArgs ...interface{})

Contains asserts that the JSON node has a string value that contains a string.

func (*AssertNode) DoesNotContain

func (node *AssertNode) DoesNotContain(contain string, msgAndArgs ...interface{})

DoesNotContain asserts that the JSON node has a string value that does not contain a string.

func (*AssertNode) DoesNotExist

func (node *AssertNode) DoesNotExist(msgAndArgs ...interface{})

DoesNotExist asserts that the JSON node does not exist.

func (*AssertNode) DoesNotMatch

func (node *AssertNode) DoesNotMatch(regexp string, msgAndArgs ...interface{})

DoesNotMatch asserts that the JSON node has a string value that does not match the regular expression.

func (*AssertNode) EqualToTheFloat

func (node *AssertNode) EqualToTheFloat(expectedValue float64, msgAndArgs ...interface{})

EqualToTheFloat asserts that the JSON node has a float value equals to the given value.

func (*AssertNode) EqualToTheInteger

func (node *AssertNode) EqualToTheInteger(expectedValue int, msgAndArgs ...interface{})

EqualToTheInteger asserts that the JSON node has an integer value equals to the given value.

func (*AssertNode) EqualToTheString

func (node *AssertNode) EqualToTheString(expectedValue string, msgAndArgs ...interface{})

EqualToTheString asserts that the JSON node has a string value equals to the given value.

func (*AssertNode) Exists

func (node *AssertNode) Exists(msgAndArgs ...interface{})

Exists asserts that the JSON node exists.

func (*AssertNode) IsArrayWithElementsCount

func (node *AssertNode) IsArrayWithElementsCount(count int, msgAndArgs ...interface{})

IsArrayWithElementsCount asserts that the JSON node is an array with given elements count.

func (*AssertNode) IsFalse

func (node *AssertNode) IsFalse(msgAndArgs ...interface{})

IsFalse asserts that the JSON node equals to the boolean with `false` value.

func (*AssertNode) IsFloat

func (node *AssertNode) IsFloat(msgAndArgs ...interface{})

IsFloat asserts that the JSON node has a float value.

func (*AssertNode) IsInteger

func (node *AssertNode) IsInteger(msgAndArgs ...interface{})

IsInteger asserts that the JSON node has an integer value.

func (*AssertNode) IsNotNull

func (node *AssertNode) IsNotNull(msgAndArgs ...interface{})

IsNotNull asserts that the JSON node not equals to `null` value.

func (*AssertNode) IsNull

func (node *AssertNode) IsNull(msgAndArgs ...interface{})

IsNull asserts that the JSON node equals to `null` value.

func (*AssertNode) IsNumberGreaterThan

func (node *AssertNode) IsNumberGreaterThan(value float64, msgAndArgs ...interface{})

IsNumberGreaterThan asserts that the JSON node has a number greater than the given value.

func (*AssertNode) IsNumberGreaterThanOrEqual

func (node *AssertNode) IsNumberGreaterThanOrEqual(value float64, msgAndArgs ...interface{})

IsNumberGreaterThanOrEqual asserts that the JSON node has a number greater than or equal to the given value.

func (*AssertNode) IsNumberInRange

func (node *AssertNode) IsNumberInRange(min float64, max float64, msgAndArgs ...interface{})

IsNumberInRange asserts that the JSON node has a number with value in the given range.

func (*AssertNode) IsNumberLessThan

func (node *AssertNode) IsNumberLessThan(value float64, msgAndArgs ...interface{})

IsNumberLessThan asserts that the JSON node has a number less than the given value.

func (*AssertNode) IsNumberLessThanOrEqual

func (node *AssertNode) IsNumberLessThanOrEqual(value float64, msgAndArgs ...interface{})

IsNumberLessThanOrEqual asserts that the JSON node has a number less than or equal to the given value.

func (*AssertNode) IsObjectWithPropertiesCount

func (node *AssertNode) IsObjectWithPropertiesCount(count int, msgAndArgs ...interface{})

IsObjectWithPropertiesCount asserts that the JSON node is an object with given properties count.

func (*AssertNode) IsString

func (node *AssertNode) IsString(msgAndArgs ...interface{})

IsString asserts that the JSON node has a string value.

func (*AssertNode) IsStringWithLength

func (node *AssertNode) IsStringWithLength(length int, msgAndArgs ...interface{})

IsStringWithLength asserts that the JSON node has a string value with length equal to the given value.

func (*AssertNode) IsStringWithLengthInRange

func (node *AssertNode) IsStringWithLengthInRange(min int, max int, msgAndArgs ...interface{})

IsStringWithLengthInRange asserts that the JSON node has a string value with length in the given range.

func (*AssertNode) IsTrue

func (node *AssertNode) IsTrue(msgAndArgs ...interface{})

IsTrue asserts that the JSON node equals to the boolean with `true` value.

func (*AssertNode) Matches

func (node *AssertNode) Matches(regexp string, msgAndArgs ...interface{})

Matches asserts that the JSON node has a string value that matches the regular expression.

type JSONAssertFunc

type JSONAssertFunc func(json *AssertJSON)

JSONAssertFunc - callback function used for asserting JSON nodes.

Jump to

Keyboard shortcuts

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