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
impl TestServer
sourcepub fn new<A>(app: A) -> Result<Self>where
A: IntoTransportLayer,
pub fn new<A>(app: A) -> Result<Self>where
A: IntoTransportLayer,
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()
.
sourcepub fn new_with_config<A>(app: A, config: TestServerConfig) -> Result<Self>where
A: IntoTransportLayer,
pub fn new_with_config<A>(app: A, config: TestServerConfig) -> Result<Self>where
A: IntoTransportLayer,
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.
sourcepub fn get(&self, path: &str) -> TestRequest
pub fn get(&self, path: &str) -> TestRequest
Creates a HTTP GET request to the path.
sourcepub fn post(&self, path: &str) -> TestRequest
pub fn post(&self, path: &str) -> TestRequest
Creates a HTTP POST request to the given path.
sourcepub fn patch(&self, path: &str) -> TestRequest
pub fn patch(&self, path: &str) -> TestRequest
Creates a HTTP PATCH request to the path.
sourcepub fn put(&self, path: &str) -> TestRequest
pub fn put(&self, path: &str) -> TestRequest
Creates a HTTP PUT request to the path.
sourcepub fn delete(&self, path: &str) -> TestRequest
pub fn delete(&self, path: &str) -> TestRequest
Creates a HTTP DELETE request to the path.
sourcepub fn method(&self, method: Method, path: &str) -> TestRequest
pub fn method(&self, method: Method, path: &str) -> TestRequest
Creates a HTTP request, to the method and path provided.
sourcepub fn server_address(&self) -> Option<Url>
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.
Adds extra cookies to be used on all future requests.
Any cookies which have the same name as the new cookies, will get replaced.
Clears all of the cookies stored internally.
Requests made using this TestServer
will save their cookies for future requests to send.
This behaviour is off by default.
Requests made using this TestServer
will not save their cookies for future requests to send up.
This is the default behaviour.
sourcepub fn expect_success(&mut self)
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.
sourcepub fn expect_failure(&mut self)
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.
sourcepub fn add_query_param<V>(&mut self, key: &str, value: V)where
V: Serialize,
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.
sourcepub fn add_query_params<V>(&mut self, query_params: V)where
V: Serialize,
pub fn add_query_params<V>(&mut self, query_params: V)where
V: Serialize,
Adds query parameters to be sent on all future requests.
sourcepub fn add_raw_query_param(&mut self, raw_query_param: &str)
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.
sourcepub fn clear_query_params(&mut self)
pub fn clear_query_params(&mut self)
Clears all query params set.
sourcepub fn add_header<'c>(&mut self, name: HeaderName, value: HeaderValue)
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
.
sourcepub fn clear_headers(&mut self)
pub fn clear_headers(&mut self)
Clears all headers set so far.
sourcepub fn scheme(&mut self, scheme: &str)
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;