Class StubHttpResponseSequenceBuilder

Namespace
XBullet.EasyTesting.Http
Assembly
XBullet.EasyTesting.Http.dll

Builds the ordered responses returned by a single HTTP stub rule.

public sealed class StubHttpResponseSequenceBuilder
Inheritance
StubHttpResponseSequenceBuilder
Inherited Members

Remarks

This mutable builder is not thread-safe and is intended for use only inside the synchronous sequence-configuration callback. Each configured response is consumed by one matching request; concurrent requests receive distinct sequence positions.

Methods

Cancel()

Adds an immediately cancelled response.

public StubHttpResponseSequenceBuilder Cancel()

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

CancelAfter(TimeSpan)

Adds a response that is cancelled after the supplied delay.

public StubHttpResponseSequenceBuilder CancelAfter(TimeSpan delay)

Parameters

delay TimeSpan

The non-negative delay before arranged cancellation. Zero cancels without waiting. InfiniteTimeSpan is not accepted. Request cancellation can end the delay earlier.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

Respond(Func<StubHttpRequest, HttpResponseMessage>)

Adds a response created from the captured request.

public StubHttpResponseSequenceBuilder Respond(Func<StubHttpRequest, HttpResponseMessage> responseFactory)

Parameters

responseFactory Func<StubHttpRequest, HttpResponseMessage>

The non-null factory invoked once, when this sequence position is consumed, with the handler-owned captured request. Other sequence factories may run concurrently. The factory must return a non-null response whose ownership passes to the HTTP caller.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

Respond(HttpStatusCode)

Adds a response containing no body.

public StubHttpResponseSequenceBuilder Respond(HttpStatusCode statusCode)

Parameters

statusCode HttpStatusCode

The HTTP status code returned at this sequence position.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

RespondAsync(Func<StubHttpRequest, CancellationToken, Task<HttpResponseMessage>>)

Adds an asynchronous response created from the captured request.

public StubHttpResponseSequenceBuilder RespondAsync(Func<StubHttpRequest, CancellationToken, Task<HttpResponseMessage>> responseFactory)

Parameters

responseFactory Func<StubHttpRequest, CancellationToken, Task<HttpResponseMessage>>

The non-null factory invoked once, when this sequence position is consumed, with the handler-owned captured request and that send operation's cancellation token. Other sequence factories may run concurrently. The returned task must produce a non-null response whose ownership passes to the HTTP caller; cancellation and other failures are propagated.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

RespondJson<T>(T, HttpStatusCode, JsonSerializerOptions?)

Adds a JSON response.

public StubHttpResponseSequenceBuilder RespondJson<T>(T value, HttpStatusCode statusCode = HttpStatusCode.OK, JsonSerializerOptions? serializerOptions = null)

Parameters

value T

The response value captured until this sequence position is consumed. The builder does not own or dispose it; callers must not mutate it concurrently with response serialization.

statusCode HttpStatusCode

The HTTP status code for the response. The default is OK.

serializerOptions JsonSerializerOptions

Options passed to the JSON content, or null to use the framework's web defaults. The builder retains but does not own or mutate non-null options.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

Type Parameters

T

The type serialized as the JSON response body.

RespondMalformedJson(string, HttpStatusCode)

Adds intentionally invalid JSON with a JSON content type.

public StubHttpResponseSequenceBuilder RespondMalformedJson(string content = "{\"incomplete\":", HttpStatusCode statusCode = HttpStatusCode.OK)

Parameters

content string

The non-null invalid JSON text returned as UTF-8 application/json. The default is {"incomplete":. Valid JSON is rejected when the sequence is configured.

statusCode HttpStatusCode

The HTTP status code for the response. The default is OK.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

RespondText(string, HttpStatusCode, string)

Adds a UTF-8 text response.

public StubHttpResponseSequenceBuilder RespondText(string value, HttpStatusCode statusCode = HttpStatusCode.OK, string mediaType = "text/plain")

Parameters

value string

The non-null text returned at this sequence position.

statusCode HttpStatusCode

The HTTP status code for the response. The default is OK.

mediaType string

The non-empty response media type. The default is text/plain; UTF-8 is always used.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

RespondTruncated(string, HttpStatusCode, string)

Adds content that throws an I/O exception while it is being consumed.

public StubHttpResponseSequenceBuilder RespondTruncated(string partialContent, HttpStatusCode statusCode = HttpStatusCode.OK, string mediaType = "application/octet-stream")

Parameters

partialContent string

The non-null text made available before content consumption fails. An empty value is accepted.

statusCode HttpStatusCode

The HTTP status code for the response. The default is OK.

mediaType string

The non-empty content media type. The default is application/octet-stream.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

Throw(Func<StubHttpRequest, Exception>)

Adds an exception response.

public StubHttpResponseSequenceBuilder Throw(Func<StubHttpRequest, Exception> exceptionFactory)

Parameters

exceptionFactory Func<StubHttpRequest, Exception>

The non-null factory invoked once, when this sequence position is consumed, with the handler-owned captured request. Other sequence factories may run concurrently. It must return a non-null exception, which is recorded and propagated to the HTTP caller.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

Timeout()

Adds a response that waits until the request is cancelled or its client times out.

public StubHttpResponseSequenceBuilder Timeout()

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

TimeoutAfter(TimeSpan)

Adds a response that throws TimeoutException after a delay.

public StubHttpResponseSequenceBuilder TimeoutAfter(TimeSpan delay)

Parameters

delay TimeSpan

The non-negative delay before the exception is thrown. Zero throws without waiting. InfiniteTimeSpan is not accepted. Request cancellation can end the delay earlier instead.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so additional responses can be appended.

WithDelay(TimeSpan)

Delays the next configured sequence response.

public StubHttpResponseSequenceBuilder WithDelay(TimeSpan delay)

Parameters

delay TimeSpan

The non-negative delay applied only to the next response added to the sequence. Zero clears any pending delay. InfiniteTimeSpan is not accepted, and request cancellation can end the delay early.

Returns

StubHttpResponseSequenceBuilder

This sequence builder so the delayed response can be added.