Skip to main content

GetRequest

The HTTP GET method requests a representation of the specified resource. It is the most frequent type of request made by consumers of a typical HTTP API. For this reason it’s important to test every known endpoint that responds to GET requests and ensure that it behaves correctly.

Since the GET method is used to retrieve data from a server, it should be implemented as safe and idempotent. This means that an identical request can be made once or several times in a row with the same effect while leaving the server in the same state.

Verify response to a GET request

 import { actorCalled } from '@serenity-js/core'
import { CallAnApi, GetRequest, LastResponse, Send } from '@serenity-js/rest'
import { Ensure, equals } from '@serenity-js/assertions'

interface Book {
title: string;
author: string;
}

await actorCalled('Apisitt')
.whoCan(CallAnApi.at('https://api.example.org/'))
.attemptsTo(
Send.a(GetRequest.to('/books/0-688-00230-7')),
Ensure.that(LastResponse.status(), equals(200)),
Ensure.that(LastResponse.body<Book>(), equals({
title: 'Zen and the Art of Motorcycle Maintenance: An Inquiry into Values',
author: 'Robert M. Pirsig',
})),
)

Learn more

Hierarchy

Index

Methods

staticto

  • Configures the object with a destination URI.

    When the resourceUri is not a fully qualified URL but a path, such as /products/2, it gets concatenated with the URL provided to the Axios instance when the ability to CallAnApi was instantiated.


    Parameters

    • resourceUri: Answerable<string>

      The URI where the Actor should send the HTTPRequest

    Returns GetRequest

as

  • as<O>(mapping: (answer: AxiosRequestConfig<any>) => O | Promise<O>): QuestionAdapter<O>
  • Maps this question to one of a different type.

    Question.about('number returned as string', actor => '42')   // returns: QuestionAdapter<string>
    .as(Number) // returns: QuestionAdapter<number>

    Type parameters

    • O

    Parameters

    • mapping: (answer: AxiosRequestConfig<any>) => O | Promise<O>

    Returns QuestionAdapter<O>

using

  • using(config: Answerable<{ url?: Answerable<string>; method?: Answerable<string>; baseURL?: Answerable<string>; transformRequest?: {} | {}[]; transformResponse?: {} | {}[]; headers?: { [x: string]: any; set: {}; get: {}; has: {}; delete: {}; clear: {}; normalize: {}; concat: {}; toJSON: {}; setContentType: {}; getContentType: {}; hasContentType: {}; setContentLength: {}; getContentLength: {}; ... 13 more ...; [Symbol.iterator]: {}; } | { [x: string]: Answerable<string> | Answerable<false> | Answerable<true> | Answerable<number> | { [x: string]: any; set: {}; get: {}; has: {}; ... 23 more ...; [Symbol.iterator]: {}; } | Answerable<...>[]; ... 16 more ...; common?: { ...; }; }; params?: any; paramsSerializer?: { encode?: {}; serialize?: {}; visitor?: {}; dots?: Answerable<false> | Answerable<true>; metaTokens?: Answerable<false> | Answerable<true>; indexes?: Answerable<...> | Answerable<...>; } | {}; data?: any; timeout?: Answerable<number>; timeoutErrorMessage?: Answerable<string>; withCredentials?: Answerable<false> | Answerable<true>; adapter?: Answerable<string> | {} | (Answerable<string> | {})[]; auth?: { username: Answerable<string>; password: Answerable<string>; }; responseType?: Answerable<text> | Answerable<arraybuffer> | Answerable<blob> | Answerable<document> | Answerable<json> | Answerable<stream>; responseEncoding?: Answerable<string>; xsrfCookieName?: Answerable<string>; xsrfHeaderName?: Answerable<string>; onUploadProgress?: {}; onDownloadProgress?: {}; maxContentLength?: Answerable<number>; validateStatus?: {}; maxBodyLength?: Answerable<number>; maxRedirects?: Answerable<number>; maxRate?: Answerable<number> | [Answerable<number>, Answerable<number>]; beforeRedirect?: {}; socketPath?: Answerable<string>; transport?: any; httpAgent?: any; httpsAgent?: any; proxy?: Answerable<false> | { host: Answerable<string>; port: Answerable<number>; auth?: { username: Answerable<string>; password: Answerable<string>; }; protocol?: Answerable<...>; }; cancelToken?: { promise: Answerable<Cancel>; reason?: { message: Answerable<string>; }; throwIfRequested: {}; }; decompress?: Answerable<false> | Answerable<true>; transitional?: { silentJSONParsing?: Answerable<false> | Answerable<true>; forcedJSONParsing?: Answerable<false> | Answerable<true>; clarifyTimeoutError?: Answerable<...> | Answerable<...>; }; signal?: { readonly aborted: Answerable<false> | Answerable<true>; onabort?: {}; addEventListener?: {}; removeEventListener?: {}; }; insecureHTTPParser?: Answerable<false> | Answerable<true>; env?: { FormData?: {}; }; formSerializer?: { visitor?: {}; dots?: Answerable<false> | Answerable<true>; metaTokens?: Answerable<false> | Answerable<true>; indexes?: Answerable<false> | Answerable<...>; }; family?: Answerable<4> | Answerable<6>; lookup?: {} | {}; withXSRFToken?: Answerable<false> | Answerable<true> | {} }>): GetRequest
  • Overrides the default Axios request configuration provided when the ability to CallAnApi was instantiated.

    Learn more


    Parameters

    • config: Answerable<{ url?: Answerable<string>; method?: Answerable<string>; baseURL?: Answerable<string>; transformRequest?: {} | {}[]; transformResponse?: {} | {}[]; headers?: { [x: string]: any; set: {}; get: {}; has: {}; delete: {}; clear: {}; normalize: {}; concat: {}; toJSON: {}; setContentType: {}; getContentType: {}; hasContentType: {}; setContentLength: {}; getContentLength: {}; ... 13 more ...; [Symbol.iterator]: {}; } | { [x: string]: Answerable<string> | Answerable<false> | Answerable<true> | Answerable<number> | { [x: string]: any; set: {}; get: {}; has: {}; ... 23 more ...; [Symbol.iterator]: {}; } | Answerable<...>[]; ... 16 more ...; common?: { ...; }; }; params?: any; paramsSerializer?: { encode?: {}; serialize?: {}; visitor?: {}; dots?: Answerable<false> | Answerable<true>; metaTokens?: Answerable<false> | Answerable<true>; indexes?: Answerable<...> | Answerable<...>; } | {}; data?: any; timeout?: Answerable<number>; timeoutErrorMessage?: Answerable<string>; withCredentials?: Answerable<false> | Answerable<true>; adapter?: Answerable<string> | {} | (Answerable<string> | {})[]; auth?: { username: Answerable<string>; password: Answerable<string>; }; responseType?: Answerable<text> | Answerable<arraybuffer> | Answerable<blob> | Answerable<document> | Answerable<json> | Answerable<stream>; responseEncoding?: Answerable<string>; xsrfCookieName?: Answerable<string>; xsrfHeaderName?: Answerable<string>; onUploadProgress?: {}; onDownloadProgress?: {}; maxContentLength?: Answerable<number>; validateStatus?: {}; maxBodyLength?: Answerable<number>; maxRedirects?: Answerable<number>; maxRate?: Answerable<number> | [Answerable<number>, Answerable<number>]; beforeRedirect?: {}; socketPath?: Answerable<string>; transport?: any; httpAgent?: any; httpsAgent?: any; proxy?: Answerable<false> | { host: Answerable<string>; port: Answerable<number>; auth?: { username: Answerable<string>; password: Answerable<string>; }; protocol?: Answerable<...>; }; cancelToken?: { promise: Answerable<Cancel>; reason?: { message: Answerable<string>; }; throwIfRequested: {}; }; decompress?: Answerable<false> | Answerable<true>; transitional?: { silentJSONParsing?: Answerable<false> | Answerable<true>; forcedJSONParsing?: Answerable<false> | Answerable<true>; clarifyTimeoutError?: Answerable<...> | Answerable<...>; }; signal?: { readonly aborted: Answerable<false> | Answerable<true>; onabort?: {}; addEventListener?: {}; removeEventListener?: {}; }; insecureHTTPParser?: Answerable<false> | Answerable<true>; env?: { FormData?: {}; }; formSerializer?: { visitor?: {}; dots?: Answerable<false> | Answerable<true>; metaTokens?: Answerable<false> | Answerable<true>; indexes?: Answerable<false> | Answerable<...>; }; family?: Answerable<4> | Answerable<6>; lookup?: {} | {}; withXSRFToken?: Answerable<false> | Answerable<true> | {} }>

      Axios request configuration overrides

    Returns GetRequest

answeredBy

  • answeredBy(actor: AnswersQuestions & UsesAbilities): Promise<AxiosRequestConfig<any>>
  • @inheritDoc

    Parameters

    • actor: AnswersQuestions & UsesAbilities

    Returns Promise<AxiosRequestConfig<any>>

describedAs

  • @inheritDoc

    Parameters

    • subject: string

    Returns GetRequest

toString

  • toString(): string
  • @inheritDoc

    Returns string