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
delayTimeSpanThe 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
responseFactoryFunc<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
statusCodeHttpStatusCodeThe 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
responseFactoryFunc<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
valueTThe 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.
statusCodeHttpStatusCodeThe HTTP status code for the response. The default is OK.
serializerOptionsJsonSerializerOptionsOptions 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
TThe 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
contentstringThe non-null invalid JSON text returned as UTF-8
application/json. The default is{"incomplete":. Valid JSON is rejected when the sequence is configured.statusCodeHttpStatusCodeThe 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
valuestringThe non-null text returned at this sequence position.
statusCodeHttpStatusCodeThe HTTP status code for the response. The default is OK.
mediaTypestringThe 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
partialContentstringThe non-null text made available before content consumption fails. An empty value is accepted.
statusCodeHttpStatusCodeThe HTTP status code for the response. The default is OK.
mediaTypestringThe 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
exceptionFactoryFunc<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
delayTimeSpanThe 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
delayTimeSpanThe 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.