Compare commits

...

3 Commits

10 changed files with 48 additions and 29 deletions

View File

@ -24,5 +24,5 @@ async fn main() {
.await .await
.expect("An error occurred during the login process"); .expect("An error occurred during the login process");
dbg!(user.belongs_to); dbg!(user.belongs_to);
dbg!(&user.object.read().unwrap().username); dbg!(&user.object.unwrap().as_ref().read().unwrap().username);
} }

View File

@ -48,7 +48,7 @@ custom_error! {
/// Invalid, insufficient or too many arguments provided. /// Invalid, insufficient or too many arguments provided.
InvalidArguments{error: String} = "Invalid arguments were provided. Error: {error}", InvalidArguments{error: String} = "Invalid arguments were provided. Error: {error}",
/// The request requires MFA verification /// The request requires MFA verification
MfaRequired {error: MfaRequiredSchema} = "Mfa verification required to perform this action" MfaRequired {error: MfaRequiredSchema} = "Mfa verification is required to perform this action"
} }
impl From<reqwest::Error> for ChorusError { impl From<reqwest::Error> for ChorusError {

View File

@ -244,10 +244,11 @@ impl ChorusUser {
/// ///
/// The JWT token expires after 5 minutes. /// The JWT token expires after 5 minutes.
pub async fn complete_mfa_challenge(&mut self, mfa_verify_schema: MfaVerifySchema) -> ChorusResult<()> { pub async fn complete_mfa_challenge(&mut self, mfa_verify_schema: MfaVerifySchema) -> ChorusResult<()> {
let endpoint_url = "/mfa/finish"; let endpoint_url = self.belongs_to.read().unwrap().urls.api.clone() + "/mfa/finish";
let chorus_request = ChorusRequest { let chorus_request = ChorusRequest {
request: Client::new() request: Client::new()
.post(endpoint_url) .post(endpoint_url)
.header("Authorization", self.token())
.json(&mfa_verify_schema), .json(&mfa_verify_schema),
limit_type: match self.object.is_some() { limit_type: match self.object.is_some() {
true => LimitType::Global, true => LimitType::Global,

View File

@ -85,8 +85,10 @@ async fn test_login_with_token() {
.await .await
.unwrap(); .unwrap();
assert_eq!( assert_eq!(
bundle.user.object.read().unwrap().id, bundle.user.object.as_ref().unwrap()
other_user.object.read().unwrap().id .read().unwrap()
.id,
other_user.object.unwrap().read().unwrap().id
); );
assert_eq!(bundle.user.token, other_user.token); assert_eq!(bundle.user.token, other_user.token);

View File

@ -2,7 +2,11 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this // License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/. // file, You can obtain one at http://mozilla.org/MPL/2.0/.
use chorus::types::{self, Channel, GetChannelMessagesSchema, MessageSendSchema, PermissionFlags, PermissionOverwrite, PermissionOverwriteType, PrivateChannelCreateSchema, RelationshipType, Snowflake}; use chorus::types::{
self, Channel, GetChannelMessagesSchema, MessageSendSchema, PermissionFlags,
PermissionOverwrite, PermissionOverwriteType, PrivateChannelCreateSchema, RelationshipType,
Snowflake,
};
mod common; mod common;
@ -67,7 +71,7 @@ async fn modify_channel() {
assert_eq!(modified_channel.name, Some(CHANNEL_NAME.to_string())); assert_eq!(modified_channel.name, Some(CHANNEL_NAME.to_string()));
let permission_override = PermissionFlags::MANAGE_CHANNELS | PermissionFlags::MANAGE_MESSAGES; let permission_override = PermissionFlags::MANAGE_CHANNELS | PermissionFlags::MANAGE_MESSAGES;
let user_id: types::Snowflake = bundle.user.object.read().unwrap().id; let user_id: types::Snowflake = bundle.user.object.as_ref().unwrap().read().unwrap().id;
let permission_override = PermissionOverwrite { let permission_override = PermissionOverwrite {
id: user_id, id: user_id,
overwrite_type: PermissionOverwriteType::Member, overwrite_type: PermissionOverwriteType::Member,
@ -155,7 +159,13 @@ async fn create_dm() {
let other_user = bundle.create_user("integrationtestuser2").await; let other_user = bundle.create_user("integrationtestuser2").await;
let user = &mut bundle.user; let user = &mut bundle.user;
let private_channel_create_schema = PrivateChannelCreateSchema { let private_channel_create_schema = PrivateChannelCreateSchema {
recipients: Some(Vec::from([other_user.object.read().unwrap().id])), recipients: Some(Vec::from([other_user
.object
.as_ref()
.unwrap()
.read()
.unwrap()
.id])),
access_tokens: None, access_tokens: None,
nicks: None, nicks: None,
}; };
@ -175,7 +185,7 @@ async fn create_dm() {
.unwrap() .unwrap()
.id .id
.clone(), .clone(),
other_user.object.read().unwrap().id other_user.object.unwrap().read().unwrap().id
); );
assert_eq!( assert_eq!(
dm_channel dm_channel
@ -188,7 +198,7 @@ async fn create_dm() {
.unwrap() .unwrap()
.id .id
.clone(), .clone(),
user.object.read().unwrap().id.clone() user.object.as_ref().unwrap().read().unwrap().id.clone()
); );
common::teardown(bundle).await; common::teardown(bundle).await;
} }
@ -200,9 +210,9 @@ async fn remove_add_person_from_to_dm() {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let mut other_user = bundle.create_user("integrationtestuser2").await; let mut other_user = bundle.create_user("integrationtestuser2").await;
let mut third_user = bundle.create_user("integrationtestuser3").await; let mut third_user = bundle.create_user("integrationtestuser3").await;
let third_user_id = third_user.object.read().unwrap().id; let third_user_id = third_user.object.as_ref().unwrap().read().unwrap().id;
let other_user_id = other_user.object.read().unwrap().id; let other_user_id = other_user.object.as_ref().unwrap().read().unwrap().id;
let user_id = bundle.user.object.read().unwrap().id; let user_id = bundle.user.object.as_ref().unwrap().read().unwrap().id;
let user = &mut bundle.user; let user = &mut bundle.user;
let private_channel_create_schema = PrivateChannelCreateSchema { let private_channel_create_schema = PrivateChannelCreateSchema {
recipients: Some(Vec::from([other_user_id, third_user_id])), recipients: Some(Vec::from([other_user_id, third_user_id])),

View File

@ -47,6 +47,7 @@ impl TestBundle {
ChorusUser { ChorusUser {
belongs_to: self.user.belongs_to.clone(), belongs_to: self.user.belongs_to.clone(),
token: self.user.token.clone(), token: self.user.token.clone(),
mfa_token: None,
limits: self.user.limits.clone(), limits: self.user.limits.clone(),
settings: self.user.settings.clone(), settings: self.user.settings.clone(),
object: self.user.object.clone(), object: self.user.object.clone(),

View File

@ -60,7 +60,8 @@ async fn guild_create_ban() {
.await .await
.unwrap(); .unwrap();
other_user.accept_invite(&invite.code, None).await.unwrap(); other_user.accept_invite(&invite.code, None).await.unwrap();
let other_user_id = other_user.object.read().unwrap().id; let other_user_id = other_user.object.as_ref().unwrap()
.read().unwrap().id;
Guild::create_ban( Guild::create_ban(
guild.id, guild.id,
other_user_id, other_user_id,
@ -112,7 +113,9 @@ async fn guild_remove_member() {
.await .await
.unwrap(); .unwrap();
other_user.accept_invite(&invite.code, None).await.unwrap(); other_user.accept_invite(&invite.code, None).await.unwrap();
let other_user_id = other_user.object.read().unwrap().id; let other_user_id = other_user.object
.as_ref().unwrap()
.read().unwrap().id;
Guild::remove_member(guild.id, other_user_id, None, &mut bundle.user) Guild::remove_member(guild.id, other_user_id, None, &mut bundle.user)
.await .await
.unwrap(); .unwrap();

View File

@ -16,7 +16,8 @@ async fn add_remove_role() -> ChorusResult<()> {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let guild = bundle.guild.read().unwrap().id; let guild = bundle.guild.read().unwrap().id;
let role = bundle.role.read().unwrap().id; let role = bundle.role.read().unwrap().id;
let member_id = bundle.user.object.read().unwrap().id; let member_id = bundle.user.object.as_ref().unwrap()
.read().unwrap().id;
GuildMember::add_role(&mut bundle.user, guild, member_id, role).await?; GuildMember::add_role(&mut bundle.user, guild, member_id, role).await?;
let member = GuildMember::get(&mut bundle.user, guild, member_id) let member = GuildMember::get(&mut bundle.user, guild, member_id)
.await .await

View File

@ -106,7 +106,7 @@ async fn search_messages() {
let _arg = Some(&vec_attach); let _arg = Some(&vec_attach);
let message = bundle.user.send_message(message, channel.id).await.unwrap(); let message = bundle.user.send_message(message, channel.id).await.unwrap();
let query = MessageSearchQuery { let query = MessageSearchQuery {
author_id: Some(Vec::from([bundle.user.object.read().unwrap().id])), author_id: Some(Vec::from([bundle.user.object.as_ref().unwrap().read().unwrap().id])),
..Default::default() ..Default::default()
}; };
let guild_id = bundle.guild.read().unwrap().id; let guild_id = bundle.guild.read().unwrap().id;

View File

@ -16,9 +16,10 @@ async fn test_get_mutual_relationships() {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let mut other_user = bundle.create_user("integrationtestuser2").await; let mut other_user = bundle.create_user("integrationtestuser2").await;
let user = &mut bundle.user; let user = &mut bundle.user;
let username = user.object.read().unwrap().username.clone();
let discriminator = user.object.read().unwrap().discriminator.clone(); let username = user.object.as_ref().unwrap().read().unwrap().username.clone();
let other_user_id: types::Snowflake = other_user.object.read().unwrap().id; let discriminator = user.object.as_ref().unwrap().read().unwrap().discriminator.clone();
let other_user_id: types::Snowflake = other_user.object.as_ref().unwrap().read().unwrap().id;
let friend_request_schema = types::FriendRequestSendSchema { let friend_request_schema = types::FriendRequestSendSchema {
username, username,
discriminator: Some(discriminator), discriminator: Some(discriminator),
@ -38,8 +39,8 @@ async fn test_get_relationships() {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let mut other_user = bundle.create_user("integrationtestuser2").await; let mut other_user = bundle.create_user("integrationtestuser2").await;
let user = &mut bundle.user; let user = &mut bundle.user;
let username = user.object.read().unwrap().username.clone(); let username = user.object.as_ref().unwrap().read().unwrap().username.clone();
let discriminator = user.object.read().unwrap().discriminator.clone(); let discriminator = user.object.as_ref().unwrap().read().unwrap().discriminator.clone();
let friend_request_schema = types::FriendRequestSendSchema { let friend_request_schema = types::FriendRequestSendSchema {
username, username,
discriminator: Some(discriminator), discriminator: Some(discriminator),
@ -51,7 +52,7 @@ async fn test_get_relationships() {
let relationships = user.get_relationships().await.unwrap(); let relationships = user.get_relationships().await.unwrap();
assert_eq!( assert_eq!(
relationships.get(0).unwrap().id, relationships.get(0).unwrap().id,
other_user.object.read().unwrap().id other_user.object.unwrap().read().unwrap().id
); );
common::teardown(bundle).await common::teardown(bundle).await
} }
@ -62,8 +63,8 @@ async fn test_modify_relationship_friends() {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let mut other_user = bundle.create_user("integrationtestuser2").await; let mut other_user = bundle.create_user("integrationtestuser2").await;
let user = &mut bundle.user; let user = &mut bundle.user;
let user_id: types::Snowflake = user.object.read().unwrap().id; let user_id: types::Snowflake = user.object.as_ref().unwrap().read().unwrap().id;
let other_user_id: types::Snowflake = other_user.object.read().unwrap().id; let other_user_id: types::Snowflake = other_user.object.as_ref().unwrap().read().unwrap().id;
other_user other_user
.modify_user_relationship(user_id, types::RelationshipType::Friends) .modify_user_relationship(user_id, types::RelationshipType::Friends)
@ -72,7 +73,7 @@ async fn test_modify_relationship_friends() {
let relationships = user.get_relationships().await.unwrap(); let relationships = user.get_relationships().await.unwrap();
assert_eq!( assert_eq!(
relationships.get(0).unwrap().id, relationships.get(0).unwrap().id,
other_user.object.read().unwrap().id other_user.object.as_ref().unwrap().read().unwrap().id
); );
assert_eq!( assert_eq!(
relationships.get(0).unwrap().relationship_type, relationships.get(0).unwrap().relationship_type,
@ -81,7 +82,7 @@ async fn test_modify_relationship_friends() {
let relationships = other_user.get_relationships().await.unwrap(); let relationships = other_user.get_relationships().await.unwrap();
assert_eq!( assert_eq!(
relationships.get(0).unwrap().id, relationships.get(0).unwrap().id,
user.object.read().unwrap().id user.object.as_ref().unwrap().read().unwrap().id
); );
assert_eq!( assert_eq!(
relationships.get(0).unwrap().relationship_type, relationships.get(0).unwrap().relationship_type,
@ -114,7 +115,7 @@ async fn test_modify_relationship_block() {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let mut other_user = bundle.create_user("integrationtestuser2").await; let mut other_user = bundle.create_user("integrationtestuser2").await;
let user = &mut bundle.user; let user = &mut bundle.user;
let user_id: types::Snowflake = user.object.read().unwrap().id; let user_id: types::Snowflake = user.object.as_ref().unwrap().read().unwrap().id;
other_user other_user
.modify_user_relationship(user_id, types::RelationshipType::Blocked) .modify_user_relationship(user_id, types::RelationshipType::Blocked)
@ -125,7 +126,7 @@ async fn test_modify_relationship_block() {
let relationships = other_user.get_relationships().await.unwrap(); let relationships = other_user.get_relationships().await.unwrap();
assert_eq!( assert_eq!(
relationships.get(0).unwrap().id, relationships.get(0).unwrap().id,
user.object.read().unwrap().id user.object.as_ref().unwrap().read().unwrap().id
); );
assert_eq!( assert_eq!(
relationships.get(0).unwrap().relationship_type, relationships.get(0).unwrap().relationship_type,