twilight_model/oauth/
install_params.rs1use crate::guild::Permissions;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
10pub struct InstallParams {
11 pub permissions: Permissions,
13 pub scopes: Vec<String>,
17}
18
19#[cfg(test)]
20mod tests {
21 use super::InstallParams;
22 use crate::{guild::Permissions, oauth::scope};
23 use serde::{Deserialize, Serialize};
24 use serde_test::Token;
25 use static_assertions::assert_impl_all;
26 use std::fmt::Debug;
27
28 assert_impl_all!(
29 InstallParams: Clone,
30 Debug,
31 Deserialize<'static>,
32 Eq,
33 PartialEq,
34 Send,
35 Serialize,
36 Sync
37 );
38
39 #[test]
40 fn serde() {
41 let value = InstallParams {
42 permissions: Permissions::empty(),
43 scopes: Vec::from([
44 scope::APPLICATIONS_COMMANDS.to_owned(),
45 scope::APPLICATIONS_COMMANDS_PERMISSIONS_UPDATE.to_owned(),
46 scope::IDENTIFY.to_owned(),
47 ]),
48 };
49
50 serde_test::assert_tokens(
51 &value,
52 &[
53 Token::Struct {
54 name: "InstallParams",
55 len: 2,
56 },
57 Token::String("permissions"),
58 Token::String("0"),
59 Token::String("scopes"),
60 Token::Seq { len: Some(3) },
61 Token::String(scope::APPLICATIONS_COMMANDS),
62 Token::String(scope::APPLICATIONS_COMMANDS_PERMISSIONS_UPDATE),
63 Token::String(scope::IDENTIFY),
64 Token::SeqEnd,
65 Token::StructEnd,
66 ],
67 );
68 }
69}