gitlab/api/users/
delete.rs1use derive_builder::Builder;
8
9use crate::api::endpoint_prelude::*;
10
11#[derive(Debug, Builder, Clone)]
13#[builder(setter(strip_option))]
14pub struct DeleteUser {
15 id: u64,
17 #[builder(default)]
19 hard_delete: Option<bool>,
20}
21
22impl DeleteUser {
23 pub fn builder() -> DeleteUserBuilder {
25 DeleteUserBuilder::default()
26 }
27}
28
29impl Endpoint for DeleteUser {
30 fn method(&self) -> Method {
31 Method::DELETE
32 }
33
34 fn endpoint(&self) -> Cow<'static, str> {
35 format!("users/{}", self.id).into()
36 }
37
38 fn body(&self) -> Result<Option<(&'static str, Vec<u8>)>, BodyError> {
39 let mut params = FormParams::default();
40
41 params.push_opt("hard_delete", self.hard_delete);
42
43 params.into_body()
44 }
45}
46
47#[cfg(test)]
48mod tests {
49 use http::Method;
50
51 use crate::api::users::delete::{DeleteUser, DeleteUserBuilderError};
52 use crate::api::{self, Query};
53 use crate::test::client::{ExpectedUrl, SingleTestClient};
54
55 #[test]
56 fn id_is_necessary() {
57 let err = DeleteUser::builder().build().unwrap_err();
58 crate::test::assert_missing_field!(err, DeleteUserBuilderError, "id");
59 }
60
61 #[test]
62 fn sufficient_parameters() {
63 DeleteUser::builder().id(1).build().unwrap();
64 }
65
66 #[test]
67 fn endpoint() {
68 let endpoint = ExpectedUrl::builder()
69 .method(Method::DELETE)
70 .endpoint("users/1")
71 .content_type("application/x-www-form-urlencoded")
72 .build()
73 .unwrap();
74 let client = SingleTestClient::new_raw(endpoint, "");
75
76 let endpoint = DeleteUser::builder().id(1).build().unwrap();
77 api::ignore(endpoint).query(&client).unwrap();
78 }
79
80 #[test]
81 fn endpoint_hard_delete() {
82 let endpoint = ExpectedUrl::builder()
83 .method(Method::DELETE)
84 .endpoint("users/1")
85 .content_type("application/x-www-form-urlencoded")
86 .body_str("hard_delete=true")
87 .build()
88 .unwrap();
89 let client = SingleTestClient::new_raw(endpoint, "");
90
91 let endpoint = DeleteUser::builder()
92 .id(1)
93 .hard_delete(true)
94 .build()
95 .unwrap();
96 api::ignore(endpoint).query(&client).unwrap();
97 }
98}