Struct axum_test::TestServer

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

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

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

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!" }))
    .into_make_service();

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>where A: IntoTestServerThread,

This will run the given Axum app, and run it on a random local address.

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>where A: IntoTestServerThread,

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 path given, using the given method.

source

pub fn server_address<'a>(&'a self) -> &'a str

Returns the local web address for the test server.

By default this will be something like http://0.0.0.0:1234/, where 1234 is a randomly assigned port numbr.

Adds a 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 add_query_param<V>(&mut self, key: &str, value: V)where V: Serialize,

Adds query parameters 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 with this request.

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.

Trait Implementations§

source§

impl Debug for TestServer

source§

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

Formats the value using the given formatter. Read more
source§

impl Drop for TestServer

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere 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 Twhere 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.
§

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

§

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