138 lines
3.6 KiB
Rust
138 lines
3.6 KiB
Rust
use chorus::types::{
|
|
self, Channel, GetChannelMessagesSchema, MessageSendSchema, PermissionFlags,
|
|
PermissionOverwrite, Snowflake,
|
|
};
|
|
|
|
mod common;
|
|
|
|
#[tokio::test]
|
|
async fn get_channel() {
|
|
let mut bundle = common::setup().await;
|
|
let bundle_channel = bundle.channel.clone();
|
|
let bundle_user = &mut bundle.user;
|
|
|
|
assert_eq!(
|
|
bundle_channel,
|
|
Channel::get(bundle_user, bundle_channel.id).await.unwrap()
|
|
);
|
|
common::teardown(bundle).await
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn delete_channel() {
|
|
let mut bundle = common::setup().await;
|
|
let result = Channel::delete(bundle.channel.clone(), &mut bundle.user).await;
|
|
assert!(result.is_ok());
|
|
common::teardown(bundle).await
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn modify_channel() {
|
|
let mut bundle = common::setup().await;
|
|
let modify_data: types::ChannelModifySchema = types::ChannelModifySchema {
|
|
name: Some("beepboop".to_string()),
|
|
channel_type: None,
|
|
topic: None,
|
|
icon: None,
|
|
bitrate: None,
|
|
user_limit: None,
|
|
rate_limit_per_user: None,
|
|
position: None,
|
|
permission_overwrites: None,
|
|
parent_id: None,
|
|
nsfw: None,
|
|
rtc_region: None,
|
|
default_auto_archive_duration: None,
|
|
default_reaction_emoji: None,
|
|
flags: None,
|
|
default_thread_rate_limit_per_user: None,
|
|
video_quality_mode: None,
|
|
};
|
|
let result = Channel::modify(modify_data, bundle.channel.id, &mut bundle.user)
|
|
.await
|
|
.unwrap();
|
|
assert_eq!(result.name, Some("beepboop".to_string()));
|
|
|
|
let permission_override = PermissionFlags::from_vec(Vec::from([
|
|
PermissionFlags::MANAGE_CHANNELS,
|
|
PermissionFlags::MANAGE_MESSAGES,
|
|
]));
|
|
let permission_override = PermissionOverwrite {
|
|
id: bundle.user.object.id,
|
|
overwrite_type: "1".to_string(),
|
|
allow: permission_override,
|
|
deny: "0".to_string(),
|
|
};
|
|
|
|
Channel::edit_permissions(
|
|
&mut bundle.user,
|
|
bundle.channel.id,
|
|
permission_override.clone(),
|
|
)
|
|
.await
|
|
.unwrap();
|
|
|
|
Channel::delete_permission(&mut bundle.user, bundle.channel.id, permission_override.id)
|
|
.await
|
|
.unwrap();
|
|
|
|
common::teardown(bundle).await
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn get_channel_messages() {
|
|
let mut bundle = common::setup().await;
|
|
|
|
// First create some messages to read
|
|
for _ in 0..10 {
|
|
let _ = bundle
|
|
.user
|
|
.send_message(
|
|
&mut MessageSendSchema {
|
|
content: Some("A Message!".to_string()),
|
|
..Default::default()
|
|
},
|
|
bundle.channel.id,
|
|
None,
|
|
)
|
|
.await
|
|
.unwrap();
|
|
}
|
|
|
|
assert_eq!(
|
|
Channel::messages(
|
|
GetChannelMessagesSchema::before(Snowflake::generate()),
|
|
bundle.channel.id,
|
|
&mut bundle.user,
|
|
)
|
|
.await
|
|
.unwrap()
|
|
.len(),
|
|
10
|
|
);
|
|
|
|
// around is currently bugged in spacebar: https://github.com/spacebarchat/server/issues/1072
|
|
// assert_eq!(
|
|
// Channel::messages(
|
|
// GetChannelMessagesSchema::around(Snowflake::generate()).limit(10),
|
|
// bundle.channel.id,
|
|
// &mut bundle.user,
|
|
// )
|
|
// .await
|
|
// .unwrap()
|
|
// .len(),
|
|
// 5
|
|
// );
|
|
|
|
assert!(Channel::messages(
|
|
GetChannelMessagesSchema::after(Snowflake::generate()),
|
|
bundle.channel.id,
|
|
&mut bundle.user,
|
|
)
|
|
.await
|
|
.unwrap()
|
|
.is_empty());
|
|
|
|
common::teardown(bundle).await
|
|
}
|