AppFlowy-Cloud/tests/workspace/access_request.rs

71 lines
2.0 KiB
Rust

use app_error::ErrorCode;
use client_api::entity::CreateAccessRequestParams;
use client_api_test::generate_unique_registered_user_client;
use shared_entity::dto::workspace_dto::ViewLayout;
use uuid::Uuid;
#[tokio::test]
async fn access_request_test() {
let (owner_client, _) = generate_unique_registered_user_client().await;
let workspaces = owner_client.get_workspaces().await.unwrap();
let workspace_id = workspaces[0].workspace_id;
let folder_view = owner_client
.get_workspace_folder(&workspace_id.to_string(), Some(2), None)
.await
.unwrap();
let view_id = folder_view
.children
.into_iter()
.find(|v| v.name == "General")
.unwrap()
.children
.iter()
.find(|v| v.name == "To-dos")
.unwrap()
.view_id
.clone();
let view_id = Uuid::parse_str(&view_id).unwrap();
let data = CreateAccessRequestParams {
workspace_id,
view_id,
};
let (requester_client, requester) = generate_unique_registered_user_client().await;
let access_request = requester_client
.create_access_request(data.clone())
.await
.unwrap();
let resp = requester_client.create_access_request(data).await;
assert!(resp.is_err());
assert_eq!(
resp.unwrap_err().code,
ErrorCode::AccessRequestAlreadyExists
);
let access_request_id = access_request.request_id;
let access_request_to_be_approved = owner_client
.get_access_request(access_request_id)
.await
.unwrap();
assert_eq!(
access_request_to_be_approved.requester.email,
requester.email
);
assert_eq!(
access_request_to_be_approved.view.view_id,
view_id.to_string()
);
assert_eq!(access_request_to_be_approved.view.layout, ViewLayout::Board);
assert_eq!(
access_request_to_be_approved.workspace.workspace_id,
workspace_id
);
owner_client
.approve_access_request(access_request_id)
.await
.unwrap();
let workspace_members = owner_client
.get_workspace_members(workspace_id.to_string())
.await
.unwrap();
assert!(workspace_members.iter().any(|m| m.email == requester.email));
}