180 lines
4.4 KiB
Rust
180 lines
4.4 KiB
Rust
use crate::collab::workspace_id_from_client;
|
|
use crate::user::utils::generate_unique_registered_user_client;
|
|
use collab_entity::CollabType;
|
|
use database_entity::dto::{
|
|
AFAccessLevel, CollabMemberIdentify, InsertCollabMemberParams, InsertCollabParams,
|
|
QueryCollabMembers, UpdateCollabMemberParams,
|
|
};
|
|
use uuid::Uuid;
|
|
|
|
#[tokio::test]
|
|
async fn collab_owner_permission_test() {
|
|
let (c, _user) = generate_unique_registered_user_client().await;
|
|
let raw_data = "hello world".to_string().as_bytes().to_vec();
|
|
let workspace_id = workspace_id_from_client(&c).await;
|
|
let object_id = Uuid::new_v4().to_string();
|
|
let uid = c.get_profile().await.unwrap().uid;
|
|
|
|
c.create_collab(InsertCollabParams::new(
|
|
&object_id,
|
|
CollabType::Document,
|
|
raw_data.clone(),
|
|
workspace_id.clone(),
|
|
))
|
|
.await
|
|
.unwrap();
|
|
|
|
let member = c
|
|
.get_collab_member(CollabMemberIdentify {
|
|
uid,
|
|
object_id,
|
|
workspace_id,
|
|
})
|
|
.await
|
|
.unwrap();
|
|
|
|
assert_eq!(member.permission.access_level, AFAccessLevel::FullAccess);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn update_collab_member_permission_test() {
|
|
let (c, _user) = generate_unique_registered_user_client().await;
|
|
let raw_data = "hello world".to_string().as_bytes().to_vec();
|
|
let workspace_id = workspace_id_from_client(&c).await;
|
|
let object_id = Uuid::new_v4().to_string();
|
|
let uid = c.get_profile().await.unwrap().uid;
|
|
|
|
c.create_collab(InsertCollabParams::new(
|
|
&object_id,
|
|
CollabType::Document,
|
|
raw_data.clone(),
|
|
workspace_id.clone(),
|
|
))
|
|
.await
|
|
.unwrap();
|
|
|
|
c.update_collab_member(UpdateCollabMemberParams {
|
|
uid,
|
|
workspace_id: workspace_id.clone(),
|
|
object_id: object_id.clone(),
|
|
access_level: AFAccessLevel::ReadOnly,
|
|
})
|
|
.await
|
|
.unwrap();
|
|
|
|
let member = c
|
|
.get_collab_member(CollabMemberIdentify {
|
|
uid,
|
|
object_id,
|
|
workspace_id,
|
|
})
|
|
.await
|
|
.unwrap();
|
|
|
|
assert_eq!(member.permission.access_level, AFAccessLevel::ReadOnly);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn add_collab_member_test() {
|
|
let (c_1, _user) = generate_unique_registered_user_client().await;
|
|
let workspace_id = workspace_id_from_client(&c_1).await;
|
|
let object_id = Uuid::new_v4().to_string();
|
|
c_1
|
|
.create_collab(InsertCollabParams::new(
|
|
&object_id,
|
|
CollabType::Document,
|
|
vec![0; 10],
|
|
workspace_id.clone(),
|
|
))
|
|
.await
|
|
.unwrap();
|
|
|
|
// create new client
|
|
let (c_2, _user) = generate_unique_registered_user_client().await;
|
|
let uid_2 = c_2.get_profile().await.unwrap().uid;
|
|
|
|
// add new member
|
|
c_1
|
|
.add_collab_member(InsertCollabMemberParams {
|
|
uid: uid_2,
|
|
workspace_id: workspace_id.clone(),
|
|
object_id: object_id.clone(),
|
|
access_level: AFAccessLevel::ReadAndComment,
|
|
})
|
|
.await
|
|
.unwrap();
|
|
|
|
// check the member is added and its permission is correct
|
|
let member = c_1
|
|
.get_collab_member(CollabMemberIdentify {
|
|
uid: uid_2,
|
|
object_id,
|
|
workspace_id,
|
|
})
|
|
.await
|
|
.unwrap();
|
|
assert_eq!(
|
|
member.permission.access_level,
|
|
AFAccessLevel::ReadAndComment
|
|
);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn add_collab_member_then_remove_test() {
|
|
let (c_1, _user) = generate_unique_registered_user_client().await;
|
|
let workspace_id = workspace_id_from_client(&c_1).await;
|
|
let object_id = Uuid::new_v4().to_string();
|
|
c_1
|
|
.create_collab(InsertCollabParams::new(
|
|
&object_id,
|
|
CollabType::Document,
|
|
vec![0; 10],
|
|
workspace_id.clone(),
|
|
))
|
|
.await
|
|
.unwrap();
|
|
|
|
// Create new client
|
|
let (c_2, _user) = generate_unique_registered_user_client().await;
|
|
let uid_2 = c_2.get_profile().await.unwrap().uid;
|
|
|
|
// Add new member
|
|
c_1
|
|
.add_collab_member(InsertCollabMemberParams {
|
|
uid: uid_2,
|
|
workspace_id: workspace_id.clone(),
|
|
object_id: object_id.clone(),
|
|
access_level: AFAccessLevel::ReadAndComment,
|
|
})
|
|
.await
|
|
.unwrap();
|
|
let members = c_1
|
|
.get_collab_members(QueryCollabMembers {
|
|
workspace_id: workspace_id.clone(),
|
|
object_id: object_id.clone(),
|
|
})
|
|
.await
|
|
.unwrap()
|
|
.0;
|
|
assert_eq!(members.len(), 2);
|
|
|
|
// Delete the member
|
|
c_1
|
|
.remove_collab_member(CollabMemberIdentify {
|
|
uid: uid_2,
|
|
object_id: object_id.clone(),
|
|
workspace_id: workspace_id.clone(),
|
|
})
|
|
.await
|
|
.unwrap();
|
|
let members = c_1
|
|
.get_collab_members(QueryCollabMembers {
|
|
workspace_id,
|
|
object_id,
|
|
})
|
|
.await
|
|
.unwrap()
|
|
.0;
|
|
assert_eq!(members.len(), 1);
|
|
}
|