api-testing

module
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jun 18, 2020 License: MIT

README

API testing tools for Golang

Go Report Card CI

assertjson package

The assertjson package provides methods for testing JSON values. Selecting JSON values provided by JSON Pointer Syntax.

Example

package yours

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")
    })
}

assertxml package

The assertjson package provides methods for testing XML values. Selecting XML values provided by XML Path Syntax.

Example

package yours

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

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

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

    assertxml.Has(t, recorder.Body.Bytes(), func(xml *AssertXML) {
        // common assertions
        xml.Node("/root/stringNode").Exists()
        xml.Node("/root/notExistingNode").DoesNotExist()
  
        // string assertions
        xml.Node("/root/stringNode").EqualToTheString("stringValue")
    })
}

Directories

Path Synopsis
Package assertjson provides methods for testing JSON values.
Package assertjson provides methods for testing JSON values.
Package assertxml provides methods for testing XML values.
Package assertxml provides methods for testing XML values.

Jump to

Keyboard shortcuts

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