Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pawelwritescode/gdutils
Library with methods for testing HTTP(s) API
https://github.com/pawelwritescode/gdutils
e2e e2e-tests gdutils godog http json testing xml yaml
Last synced: 16 days ago
JSON representation
Library with methods for testing HTTP(s) API
- Host: GitHub
- URL: https://github.com/pawelwritescode/gdutils
- Owner: pawelWritesCode
- License: mit
- Created: 2021-03-23T08:14:38.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-10-01T14:34:34.000Z (about 1 year ago)
- Last Synced: 2024-06-20T22:38:19.217Z (5 months ago)
- Topics: e2e, e2e-tests, gdutils, godog, http, json, testing, xml, yaml
- Language: Go
- Homepage:
- Size: 303 KB
- Stars: 0
- Watchers: 2
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![gdutils](https://github.com/pawelWritesCode/gdutils/workflows/gdutils/badge.svg)](https://github.com/pawelWritesCode/gdutils/actions) [![Go Reference](https://pkg.go.dev/badge/github.com/pawelWritesCode/gdutils.svg)](https://pkg.go.dev/github.com/pawelWritesCode/gdutils) ![Coverage](https://img.shields.io/badge/Coverage-66%25-brightgreen)
# GDUTILS
## Simple library with methods useful for e2e testing of HTTP(s) API using JSON/YAML/XML.
### Downloading
`go get github.com/pawelWritesCode/gdutils`
### Related project:
Skeleton that allows to write E2E tests covering any HTTP API using *godog & gdutils* almost instantly with minimal configuration.
https://github.com/pawelWritesCode/godog-http-api### Simple usage:
```go
ac := gdutils.NewDefaultAPIContext(false, "")if err := ac.RequestPrepare("GET", "https://random-d.uk/api/v2/list", "DUCK_GIFS_LIST"); err != nil {
return err
}if err := ac.RequestSend("DUCK_GIFS_LIST"); err != nil {
return err
}if err := ac.AssertStatusCodeIs(200); err != nil {
return err
}if err := ac.AssertResponseFormatIs(format.JSON); err != nil {
return err
}if err := ac.AssertNodeIsType(format.JSON, "$.gifs", types.Array); err != nil {
return err
}```
### Available methods:
| NAME | DESCRIPTION |
|-------------------------------------------|:----------------------------------------------------------------------------------------:|
| | |
| **Sending HTTP(s) requests:** | |
| | |
| RequestSendWithBodyAndHeaders | Sends HTTP(s) request with provided body and headers. |
| RequestPrepare | Prepare HTTP(s) request |
| RequestSetHeaders | Sets provided headers for previously prepared request |
| RequestSetForm | Sets provided form for previously prepared request |
| RequestSetCookies | Sets provided cookies for previously prepared request |
| RequestSetBody | Sets body for previously prepared request |
| RequestSend | Sends previously prepared HTTP(s) request |
| | |
| **Random data generation:** | |
| | |
| GenerateRandomInt | Generates random integer from provided range and save it under provided cache key |
| GenerateFloat64 | Generates random float from provided range and save it under provided cache key |
| GeneratorRandomRunes | Creates generator for random strings from provided charset in provided range |
| GeneratorRandomSentence | Creates generator for random sentence from provided charset in provided range |
| GetTimeAndTravel | Accepts time object and move in time by given time interval |
| GenerateTimeAndTravel | Creates current time object and move in time by given time interval |
| | |
| **Preserving data:** | |
| | |
| SaveNode | Saves from last response body JSON node under given cacheKey key |
| SaveHeader | Saves into cache given header value |
| Save | Saves into cache arbitrary passed value |
| | |
| **Debugging:** | |
| | |
| DebugPrintResponseBody | Prints last response from request |
| DebugStart | Starts debugging mode |
| DebugStop | Stops debugging mode |
| | |
| **Flow control:** | |
| | |
| Wait | Stops test execution for provided amount of time |
| | |
| **Assertions:** | |
| | |
| AssertResponseHeaderExists | Checks whether last HTTP(s) response has given header |
| AssertResponseHeaderNotExists | Checks whether last HTTP(s) response doesn't have given header |
| AssertResponseHeaderValueIs | Checks whether last HTTP(s) response has given header with provided value |
| AssertStatusCodeIs | Checks last HTTP(s) response status code |
| AssertStatusCodeIsNot | Checks if last HTTP(s) response status code is not of provided value |
| AssertResponseFormatIs | Checks whether last HTTP(s) response body has given data format |
| AssertResponseFormatIsNot | Checks whether last HTTP(s) response body doesn't have given data format |
| AssertNodeExists | Checks whether last response body contains given key |
| AssertNodeNotExists | Checks whether last response body doesn't contain given key |
| AssertNodesExist | Checks whether last HTTP(s) response body JSON has given nodes |
| AssertNodeIsTypeAndValue | Compares json node value from expression to expected by user |
| AssertNodeIsTypeAndHasOneOfValues | Compares node value from expression to expected by user set of values |
| AssertNodeContainsSubString | Checks whether node value from expression contains given substring |
| AssertNodeNotContainsSubString | Checks whether node value from expression doesn't contain given substring |
| AssertNodeIsType | Checks whether node from last HTTP(s) response body is of provided type |
| AssertNodeIsNotType | Checks whether node from last HTTP(s) response body is not of provided type |
| AssertNodeMatchesRegExp | Checks whether last HTTP(s) response body JSON node matches regExp |
| AssertNodeNotMatchesRegExp | Checks whether last HTTP(s) response body JSON node doesn't match regExp |
| AssertNodeSliceLengthIs | checks whether given key is slice and has given length |
| AssertNodeSliceLengthIsNot | checks whether given key is slice and doesn't have given length |
| AssertResponseMatchesSchemaByReference | Validates last HTTP(s) response body against provided in reference JSON schema |
| AssertResponseMatchesSchemaByString | Validates last HTTP(s) response body against provided JSON schema |
| AssertNodeMatchesSchemaByString | Validates last HTTP(s) response body JSON node against provided JSON schema |
| AssertNodeMatchesSchemaByReference | Validates last HTTP(s) response body JSON node against provided in reference JSON schema |
| AssertTimeBetweenRequestAndResponseIs | Asserts that last HTTP(s) request-response time is <= than expected |
| AssertResponseCookieExists | Checks whether last HTTP(s) response has given cookie |
| AssertResponseCookieNotExists | Checks whether last HTTP(s) response doesn't have given cookie |
| AssertResponseCookieValueIs | Checks whether last HTTP(s) response has given cookie of given value |
| AssertResponseCookieValueMatchesRegExp | Checks whether last HTTP(s) response has given cookie matching provided regExp |
| AssertResponseCookieValueNotMatchesRegExp | Checks whether last HTTP(s) response has given cookie is not matching provided regExp |