Struct axum_test::TestServer

source ·
pub struct TestServer { /* private fields */ }
Expand description

The TestServer runs your Axum application, allowing you to make HTTP requests against it.

You can make a request by calling TestServer::get(), TestServer::post(), TestServer::put(), TestServer::delete(), and TestServer::patch() methods. They will return a TestRequest for building the request.

use ::axum::Json;
use ::axum::routing::Router;
use ::axum::routing::get;
use ::serde::Deserialize;
use ::serde::Serialize;

use ::axum_test::TestServer;

let app = Router::new()
    .route(&"/todo", get(|| async { "hello!" }));

let server = TestServer::new(app)?;

// The different responses one can make:
let get_response = server.get(&"/todo").await;
let post_response = server.post(&"/todo").await;
let put_response = server.put(&"/todo").await;
let delete_response = server.delete(&"/todo").await;
let patch_response = server.patch(&"/todo").await;

Implementations§

source§

impl TestServer

source

pub fn new<A>(app: A) -> Result<Self>

This will run the given Axum app, allowing you to make requests against it.

This is the same as creating a new TestServer with a configuration, and passing TestServerConfig::default().

source

pub fn new_with_config<A>(app: A, config: TestServerConfig) -> Result<Self>

This very similar to TestServer::new(), however you can customise some of the configuration. This includes which port to run on, or default settings.

See the TestServerConfig for more information on each configuration setting.

source

pub fn get(&self, path: &str) -> TestRequest

Creates a HTTP GET request to the path.

source

pub fn post(&self, path: &str) -> TestRequest

Creates a HTTP POST request to the given path.

source

pub fn patch(&self, path: &str) -> TestRequest

Creates a HTTP PATCH request to the path.

source

pub fn put(&self, path: &str) -> TestRequest

Creates a HTTP PUT request to the path.

source

pub fn delete(&self, path: &str) -> TestRequest

Creates a HTTP DELETE request to the path.

source

pub fn method(&self, method: Method, path: &str) -> TestRequest

Creates a HTTP request, to the method and path provided.

source

pub fn server_address(&self) -> Option<Url>

Returns the local web address for the test server, if an address is available.

The address is available when running as a real web server, by setting the TestServerConfig transport field to Transport::HttpRandomPort or Transport::HttpIpPort.

This will return None when there is mock HTTP transport (the default).

Adds a single cookie to be included on all future requests.

If a cookie with the same name already exists, then it will be replaced.

source

pub fn add_cookies(&mut self, cookies: CookieJar)

Adds extra cookies to be used on all future requests.

Any cookies which have the same name as the new cookies, will get replaced.

source

pub fn clear_cookies(&mut self)

Clears all of the cookies stored internally.

source

pub fn do_save_cookies(&mut self)

Requests made using this TestServer will save their cookies for future requests to send.

This behaviour is off by default.

source

pub fn do_not_save_cookies(&mut self)

Requests made using this TestServer will not save their cookies for future requests to send up.

This is the default behaviour.

source

pub fn expect_success(&mut self)

Requests made using this TestServer will assert a HTTP status in the 2xx range will be returned, unless marked otherwise.

By default this behaviour is off.

source

pub fn expect_failure(&mut self)

Requests made using this TestServer will assert a HTTP status is outside the 2xx range will be returned, unless marked otherwise.

By default this behaviour is off.

source

pub fn add_query_param<V>(&mut self, key: &str, value: V)
where V: Serialize,

Adds a query parameter to be sent on all future requests.

source

pub fn add_query_params<V>(&mut self, query_params: V)
where V: Serialize,

Adds query parameters to be sent on all future requests.

source

pub fn add_raw_query_param(&mut self, raw_query_param: &str)

Adds a raw query param, with no urlencoding of any kind, to be send on all future requests.

source

pub fn clear_query_params(&mut self)

Clears all query params set.

source

pub fn add_header<'c>(&mut self, name: HeaderName, value: HeaderValue)

Adds a header to be sent with all future requests built from this TestServer.

source

pub fn clear_headers(&mut self)

Clears all headers set so far.

source

pub fn scheme(&mut self, scheme: &str)

Sets the scheme to use when making all requests from the TestServer. i.e. http or https.

The default scheme is ‘http’.

use ::axum::Router;
use ::axum_test::TestServer;

let app = Router::new();
let mut server = TestServer::new(app)?;
server
    .scheme(&"https");

let response = server
    .get(&"/my-end-point")
    .await;

Trait Implementations§

source§

impl Debug for TestServer

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,