Add test for remote follow sequence
This commit is contained in:
parent
e82c6f31fb
commit
1c098cb6b2
1 changed files with 71 additions and 1 deletions
|
@ -199,7 +199,7 @@ pub async fn follow_request_rejected(
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn delete_follow_request(
|
async fn delete_follow_request(
|
||||||
db_client: &impl GenericClient,
|
db_client: &impl GenericClient,
|
||||||
source_id: &Uuid,
|
source_id: &Uuid,
|
||||||
target_id: &Uuid,
|
target_id: &Uuid,
|
||||||
|
@ -445,3 +445,73 @@ pub async fn show_replies(
|
||||||
).await?;
|
).await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use serial_test::serial;
|
||||||
|
use crate::activitypub::actor::Actor;
|
||||||
|
use crate::database::test_utils::create_test_database;
|
||||||
|
use crate::errors::DatabaseError;
|
||||||
|
use crate::models::profiles::queries::create_profile;
|
||||||
|
use crate::models::profiles::types::ProfileCreateData;
|
||||||
|
use crate::models::users::queries::create_user;
|
||||||
|
use crate::models::users::types::UserCreateData;
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
#[serial]
|
||||||
|
async fn test_remote_follow() {
|
||||||
|
let db_client = &mut create_test_database().await;
|
||||||
|
let source_data = UserCreateData {
|
||||||
|
username: "test".to_string(),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
let source = create_user(db_client, source_data).await.unwrap();
|
||||||
|
let target_data = ProfileCreateData {
|
||||||
|
username: "followed".to_string(),
|
||||||
|
actor_json: Some(Actor::default()),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
let target = create_profile(db_client, target_data).await.unwrap();
|
||||||
|
// Create follow request
|
||||||
|
let follow_request = create_follow_request(db_client, &source.id, &target.id)
|
||||||
|
.await.unwrap();
|
||||||
|
assert_eq!(follow_request.source_id, source.id);
|
||||||
|
assert_eq!(follow_request.target_id, target.id);
|
||||||
|
assert!(matches!(
|
||||||
|
follow_request.request_status,
|
||||||
|
FollowRequestStatus::Pending,
|
||||||
|
));
|
||||||
|
let following = get_following(db_client, &source.id, None, None)
|
||||||
|
.await.unwrap();
|
||||||
|
assert!(following.is_empty());
|
||||||
|
// Accept follow request
|
||||||
|
follow_request_accepted(db_client, &follow_request.id).await.unwrap();
|
||||||
|
let follow_request = get_follow_request_by_path(
|
||||||
|
db_client,
|
||||||
|
&source.id,
|
||||||
|
&target.id,
|
||||||
|
).await.unwrap();
|
||||||
|
assert!(matches!(
|
||||||
|
follow_request.request_status,
|
||||||
|
FollowRequestStatus::Accepted,
|
||||||
|
));
|
||||||
|
let following = get_following(db_client, &source.id, None, None)
|
||||||
|
.await.unwrap();
|
||||||
|
assert_eq!(following[0].id, target.id);
|
||||||
|
// Unfollow
|
||||||
|
unfollow(db_client, &source.id, &target.id).await.unwrap();
|
||||||
|
let follow_request_result = get_follow_request_by_path(
|
||||||
|
db_client,
|
||||||
|
&source.id,
|
||||||
|
&target.id,
|
||||||
|
).await;
|
||||||
|
assert!(matches!(
|
||||||
|
follow_request_result,
|
||||||
|
Err(DatabaseError::NotFound("follow request")),
|
||||||
|
));
|
||||||
|
let following = get_following(db_client, &source.id, None, None)
|
||||||
|
.await.unwrap();
|
||||||
|
assert!(following.is_empty());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue