187 lines
5.0 KiB
Rust
187 lines
5.0 KiB
Rust
use crate::collab::util::test_encode_collab_v1;
|
|
use client_api_test::{generate_unique_registered_user_client, workspace_id_from_client};
|
|
|
|
use collab_entity::CollabType;
|
|
use database_entity::dto::{
|
|
AFAccessLevel, CollabMemberIdentify, CreateCollabParams, InsertCollabMemberParams,
|
|
QueryCollabMembers, UpdateCollabMemberParams,
|
|
};
|
|
use uuid::Uuid;
|
|
|
|
#[tokio::test]
|
|
async fn collab_owner_permission_test() {
|
|
let (c, _user) = generate_unique_registered_user_client().await;
|
|
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;
|
|
let encode_collab = test_encode_collab_v1(&object_id, "title", "hello world")
|
|
.encode_to_bytes()
|
|
.unwrap();
|
|
|
|
c.create_collab(CreateCollabParams {
|
|
object_id: object_id.clone(),
|
|
encoded_collab_v1: encode_collab,
|
|
collab_type: CollabType::Unknown,
|
|
workspace_id: 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 workspace_id = workspace_id_from_client(&c).await;
|
|
let object_id = Uuid::new_v4().to_string();
|
|
let encode_collab = test_encode_collab_v1(&object_id, "title", "hello world")
|
|
.encode_to_bytes()
|
|
.unwrap();
|
|
let uid = c.get_profile().await.unwrap().uid;
|
|
|
|
c.create_collab(CreateCollabParams {
|
|
object_id: object_id.clone(),
|
|
encoded_collab_v1: encode_collab.clone(),
|
|
collab_type: CollabType::Unknown,
|
|
workspace_id: 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();
|
|
let encode_collab = test_encode_collab_v1(&object_id, "title", "hello world");
|
|
c_1
|
|
.create_collab(CreateCollabParams {
|
|
object_id: object_id.clone(),
|
|
encoded_collab_v1: encode_collab.encode_to_bytes().unwrap(),
|
|
collab_type: CollabType::Unknown,
|
|
workspace_id: 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();
|
|
let encode_collab = test_encode_collab_v1(&object_id, "title", "hello world");
|
|
c_1
|
|
.create_collab(CreateCollabParams {
|
|
object_id: object_id.clone(),
|
|
encoded_collab_v1: encode_collab.encode_to_bytes().unwrap(),
|
|
collab_type: CollabType::Unknown,
|
|
workspace_id: 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);
|
|
}
|