gitlab/api/projects/access_tokens/
revoke.rs1use derive_builder::Builder;
8
9use crate::api::common::NameOrId;
10use crate::api::endpoint_prelude::*;
11
12#[derive(Debug, Builder, Clone)]
14pub struct RevokeProjectAccessToken<'a> {
15 #[builder(setter(into))]
17 project: NameOrId<'a>,
18 id: u64,
20}
21
22impl<'a> RevokeProjectAccessToken<'a> {
23 pub fn builder() -> RevokeProjectAccessTokenBuilder<'a> {
25 RevokeProjectAccessTokenBuilder::default()
26 }
27}
28
29impl Endpoint for RevokeProjectAccessToken<'_> {
30 fn method(&self) -> Method {
31 Method::DELETE
32 }
33
34 fn endpoint(&self) -> Cow<'static, str> {
35 format!("projects/{}/access_tokens/{}", self.project, self.id).into()
36 }
37}
38
39#[cfg(test)]
40mod tests {
41 use http::Method;
42
43 use crate::api::projects::access_tokens::{
44 RevokeProjectAccessToken, RevokeProjectAccessTokenBuilderError,
45 };
46 use crate::api::{self, Query};
47 use crate::test::client::{ExpectedUrl, SingleTestClient};
48
49 #[test]
50 fn project_id_is_necessary() {
51 let err = RevokeProjectAccessToken::builder().build().unwrap_err();
52 crate::test::assert_missing_field!(err, RevokeProjectAccessTokenBuilderError, "project");
53 }
54
55 #[test]
56 fn project_is_necessary() {
57 let err = RevokeProjectAccessToken::builder()
58 .id(1)
59 .build()
60 .unwrap_err();
61 crate::test::assert_missing_field!(err, RevokeProjectAccessTokenBuilderError, "project");
62 }
63
64 #[test]
65 fn id_is_necessary() {
66 let err = RevokeProjectAccessToken::builder()
67 .project(1)
68 .build()
69 .unwrap_err();
70 crate::test::assert_missing_field!(err, RevokeProjectAccessTokenBuilderError, "id");
71 }
72
73 #[test]
74 fn project_and_id_are_sufficient() {
75 RevokeProjectAccessToken::builder()
76 .project(1)
77 .id(1)
78 .build()
79 .unwrap();
80 }
81
82 #[test]
83 fn endpoint() {
84 let endpoint = ExpectedUrl::builder()
85 .method(Method::DELETE)
86 .endpoint("projects/1/access_tokens/1")
87 .build()
88 .unwrap();
89 let client = SingleTestClient::new_raw(endpoint, "");
90
91 let endpoint = RevokeProjectAccessToken::builder()
92 .project(1)
93 .id(1)
94 .build()
95 .unwrap();
96 api::ignore(endpoint).query(&client).unwrap();
97 }
98}