Skip to content

Commit 88399c7

Browse files
committed
Use wiremock to match k8s API request body
1 parent 89c3e9d commit 88399c7

File tree

3 files changed

+83
-70
lines changed

3 files changed

+83
-70
lines changed

sessionspaces/Cargo.lock

Lines changed: 55 additions & 44 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sessionspaces/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ kube = { version = "0.93.1" }
1616
ldap3 = { version = "0.11.5", default-features = false, features = [
1717
"tls-rustls",
1818
] }
19-
mockito = { version = "1.5.0" }
2019
serde_json = { version = "1.0.125" }
2120
sqlx = { version = "0.8.0", features = [
2221
"runtime-tokio",
@@ -31,3 +30,6 @@ tower = { version = "0.4.13", features = ["limit", "util"] }
3130
tracing = { version = "0.1.40" }
3231
tracing-subscriber = { version = "0.3.18" }
3332
url = { version = "2.5.2" }
33+
34+
[dev-dependencies]
35+
wiremock = "0.6.1"

sessionspaces/src/resources/namespace.rs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -61,36 +61,36 @@ pub async fn create_namespace(
6161

6262
#[cfg(test)]
6363
mod tests {
64-
use super::*;
65-
use kube::Client;
66-
use kube::Config;
67-
use mockito::Server;
64+
use super::create_namespace;
65+
use k8s_openapi::api::core::v1::Namespace;
66+
use kube::{api::ObjectMeta, Client, Config};
67+
use wiremock::{
68+
matchers::{body_partial_json, method, path, query_param},
69+
Mock, MockServer, ResponseTemplate,
70+
};
6871

6972
#[tokio::test]
7073
async fn create_new_namespace() {
71-
let mut server = Server::new_async().await;
72-
let mock_patch_test_namespace = server
73-
.mock(
74-
"PATCH",
75-
"/api/v1/namespaces/test?&fieldManager=sessionspaces",
76-
)
77-
.with_status(201)
78-
.with_header("content-type", "application/json")
79-
.with_body(
80-
r#"{
81-
"apiVersion": "v1",
82-
"kind": "Namespace",
83-
"metadata": {
84-
"name": "test"
85-
}
86-
}"#,
87-
)
88-
.create();
89-
let config = Config::new(server.url().parse().unwrap());
74+
let server = MockServer::start().await;
75+
let namespace = Namespace {
76+
metadata: ObjectMeta {
77+
name: Some("cm37235-3".to_string()),
78+
..Default::default()
79+
},
80+
..Default::default()
81+
};
82+
let _mock = Mock::given(method("PATCH"))
83+
.and(path("/api/v1/namespaces/cm37235-3"))
84+
.and(query_param("fieldManager", "sessionspaces"))
85+
.and(body_partial_json(namespace.clone()))
86+
.respond_with(ResponseTemplate::new(201).set_body_json(namespace))
87+
.expect(1)
88+
.mount(&server)
89+
.await;
90+
let config = Config::new(server.uri().parse().unwrap());
9091
let k8s_client = Client::try_from(config).unwrap();
91-
create_namespace("test".to_string(), k8s_client)
92+
create_namespace("cm37235-3".to_string(), k8s_client)
9293
.await
9394
.unwrap();
94-
mock_patch_test_namespace.assert();
9595
}
9696
}

0 commit comments

Comments
 (0)