Skip to content

Commit b8e6674

Browse files
authored
Export StatusCode, add a couple of tests (#7)
Signed-off-by: declark1 <[email protected]>
1 parent fefb5b1 commit b8e6674

File tree

4 files changed

+61
-2
lines changed

4 files changed

+61
-2
lines changed

mocktail-tests/tests/examples/http_unary.rs

+58
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ async fn test_unary() -> Result<(), Error> {
2323
message: "hello dan!".into(),
2424
});
2525
});
26+
mocks.mock(|when, then| {
27+
when.get().path("/world");
28+
then.text("hello!");
29+
});
2630

2731
let server = MockServer::new("hello").with_mocks(mocks);
2832
server.start().await?;
@@ -43,6 +47,11 @@ async fn test_unary() -> Result<(), Error> {
4347
}
4448
);
4549

50+
let response = client.get(server.url("/world")).send().await?;
51+
assert_eq!(response.status(), http::StatusCode::OK);
52+
let res = response.text().await?;
53+
assert_eq!(res, "hello!");
54+
4655
Ok(())
4756
}
4857

@@ -55,6 +64,10 @@ async fn test_unary_errors() -> Result<(), Error> {
5564
});
5665
then.internal_server_error().message("unexpected error");
5766
});
67+
mocks.mock(|when, then| {
68+
when.get().path("/error");
69+
then.bad_request();
70+
});
5871

5972
let server = MockServer::new("hello").with_mocks(mocks);
6073
server.start().await?;
@@ -72,6 +85,9 @@ async fn test_unary_errors() -> Result<(), Error> {
7285
let message = response.text().await?;
7386
assert_eq!(message, "unexpected error");
7487

88+
let response = client.get(server.url("/error")).send().await?;
89+
assert_eq!(response.status(), http::StatusCode::BAD_REQUEST);
90+
7591
// Mock not found
7692
let response = client
7793
.post(server.url("/hello"))
@@ -84,5 +100,47 @@ async fn test_unary_errors() -> Result<(), Error> {
84100
let message = response.text().await?;
85101
assert_eq!(message, "mock not found");
86102

103+
// Clear server mocks
104+
server.mocks().clear();
105+
106+
// Add a mock that responds with a 503 error on any
107+
// endpoint if the body is "give me an error"
108+
server.mocks().mock(|when, then| {
109+
when.text("give me an error");
110+
then.status(StatusCode::from_u16(503).unwrap());
111+
});
112+
let response = client
113+
.get(server.url("/path"))
114+
.body("give me an error")
115+
.send()
116+
.await?;
117+
assert_eq!(response.status(), http::StatusCode::SERVICE_UNAVAILABLE);
118+
119+
Ok(())
120+
}
121+
122+
#[test(tokio::test)]
123+
async fn test_any() -> Result<(), Error> {
124+
let mut mocks = MockSet::new();
125+
mocks.mock(|when, then| {
126+
when.any();
127+
then.text("yo!");
128+
});
129+
130+
let server = MockServer::new("any").with_mocks(mocks);
131+
server.start().await?;
132+
133+
let client = reqwest::Client::builder().http2_prior_knowledge().build()?;
134+
135+
let response = client.post(server.url("/asdf")).send().await?;
136+
assert_eq!(response.status(), http::StatusCode::OK);
137+
let res = response.text().await?;
138+
assert_eq!(res, "yo!");
139+
140+
let response = client.post(server.url("/whatever")).send().await?;
141+
assert_eq!(response.status(), http::StatusCode::OK);
142+
let res = response.text().await?;
143+
assert_eq!(res, "yo!");
144+
87145
Ok(())
88146
}

mocktail-tests/tests/matchers/any.rs

Whitespace-only changes.

mocktail-tests/tests/matchers/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
mod any;

mocktail/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub use mock_set::MockSet;
1212
mod request;
1313
pub use request::Request;
1414
mod response;
15-
pub use response::Response;
15+
pub use response::{Response, StatusCode};
1616
mod when;
1717
pub use when::When;
1818
mod then;
@@ -25,7 +25,7 @@ mod service;
2525
pub mod prelude {
2626
pub use crate::{
2727
matchers::*, Body, HeaderName, HeaderValue, Headers, Mock, MockServer, MockSet, Request,
28-
Response, Then, When,
28+
Response, StatusCode, Then, When,
2929
};
3030
}
3131

0 commit comments

Comments
 (0)