coder/builders/envs/
get.rs

1imports!();
2
3new_builder!(
4    /// `/api/environments/:id`
5    GlobalEnv,
6    /// `/api/environments`
7    GlobalEnvs,
8    /// `/api/orgs/:id/environments`
9    OrgEnvs,
10    /// `/api/orgs/:id/members/:id/environments`
11    MemberEnvs
12);
13
14use crate::builders::orgs::get::MemberBuilder;
15use crate::builders::orgs::get::OrgBuilder;
16
17exec!(
18    GlobalEnv -> crate::models::Environment,
19    OrgEnvs -> Vec<crate::models::Environment>,
20    MemberEnvs -> Vec<crate::models::Environment>,
21);
22
23from!(
24    @Org
25        -> OrgEnvs,
26    @Member
27        -> MemberEnvs,
28    @GlobalEnvs
29        -> GlobalEnv,
30);
31
32impl_client!(
33    /// Begins an environment query.
34    -> envs ["environments"] -> GlobalEnvs,
35);
36
37impl_builder!(
38    @Org
39        /// Queries all environments belonging to the organization. Must be an organization
40        /// manager.
41        -> envs ["environments"] -> OrgEnvs,
42
43    @Member
44        /// Queries all environments belonging to the an organization member.
45        -> envs ["environments"] -> MemberEnvs,
46
47    @GlobalEnvs
48        /// Queries an environment by its id. Must be a site admin or a manager of the organization
49        /// the environment belongs to.
50        => get [] -> GlobalEnv = id,
51);
52
53#[cfg(test)]
54mod test {
55    use crate::client::test::{client, ids::*};
56    use crate::client::Executor;
57
58    #[tokio::test]
59    async fn test_env() {
60        let c = client();
61
62        let res = c
63            .envs()
64            .get(ENV_ID)
65            .execute()
66            .await
67            .expect("send request")
68            .response
69            .expect("api error returned");
70
71        // id should at least not be empty
72        assert_ne!(res.id, "");
73    }
74
75    mod org {
76        use super::*;
77
78        #[tokio::test]
79        async fn test_org_envs() {
80            let c = client();
81
82            let res = c
83                .orgs()
84                .get(ORG_ID)
85                .envs()
86                .execute()
87                .await
88                .expect("send request")
89                .response
90                .expect("api error returned");
91
92            // we should get at least 1
93            assert_ne!(res.len(), 0);
94
95            // they should all have non-empty ids
96            let ok = res.iter().fold(false, |ok, env| ok || env.id != "");
97            assert_eq!(ok, true);
98        }
99    }
100
101    mod member {
102        use super::*;
103
104        #[tokio::test]
105        async fn test_org_member_envs() {
106            let c = client();
107
108            let res = c
109                .orgs()
110                .get(ORG_ID)
111                .members()
112                .get(MEMBER_ID)
113                .envs()
114                .execute()
115                .await
116                .expect("send request")
117                .response
118                .expect("api error returned");
119
120            // we should get at least 1 member
121            assert_ne!(res.len(), 0);
122
123            // they should all have non-empty ids
124            let ok = res.iter().fold(false, |ok, env| ok || env.id != "");
125            assert_eq!(ok, true);
126        }
127    }
128}