gitlab/api/runners/
delete.rs

1// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
2// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
4// option. This file may not be copied, modified, or distributed
5// except according to those terms.
6
7use derive_builder::Builder;
8
9use crate::api::endpoint_prelude::*;
10
11/// Delete a runner.
12#[derive(Debug, Builder, Clone)]
13pub struct DeleteRunner {
14    /// The ID of the runner.
15    runner: u64,
16}
17
18impl DeleteRunner {
19    /// Create a builder for the endpoint.
20    pub fn builder() -> DeleteRunnerBuilder {
21        DeleteRunnerBuilder::default()
22    }
23}
24
25impl Endpoint for DeleteRunner {
26    fn method(&self) -> Method {
27        Method::DELETE
28    }
29
30    fn endpoint(&self) -> Cow<'static, str> {
31        format!("runners/{}", self.runner).into()
32    }
33}
34
35#[cfg(test)]
36mod tests {
37    use http::Method;
38
39    use crate::api::runners::{DeleteRunner, DeleteRunnerBuilderError};
40    use crate::api::{self, Query};
41    use crate::test::client::{ExpectedUrl, SingleTestClient};
42
43    #[test]
44    fn runner_is_required() {
45        let err = DeleteRunner::builder().build().unwrap_err();
46        crate::test::assert_missing_field!(err, DeleteRunnerBuilderError, "runner");
47    }
48
49    #[test]
50    fn runner_is_sufficient() {
51        DeleteRunner::builder().runner(1).build().unwrap();
52    }
53
54    #[test]
55    fn endpoint() {
56        let endpoint = ExpectedUrl::builder()
57            .method(Method::DELETE)
58            .endpoint("runners/1")
59            .build()
60            .unwrap();
61        let client = SingleTestClient::new_raw(endpoint, "");
62
63        let endpoint = DeleteRunner::builder().runner(1).build().unwrap();
64        api::ignore(endpoint).query(&client).unwrap();
65    }
66}