AppFlowy-Cloud/tests/workspace/workspace_settings.rs

99 lines
2.8 KiB
Rust

use app_error::ErrorCode;
use client_api::Client;
use client_api_test::generate_unique_registered_user_client;
use database_entity::dto::{AFRole, AFWorkspaceInvitationStatus, AFWorkspaceSettingsChange};
use shared_entity::dto::workspace_dto::WorkspaceMemberInvitation;
use uuid::Uuid;
#[tokio::test]
async fn get_and_set_workspace_by_owner() {
let (c, _user) = generate_unique_registered_user_client().await;
let workspaces = c.get_workspaces().await.unwrap();
let workspace_id = workspaces.first().unwrap().workspace_id.to_string();
let mut settings = c.get_workspace_settings(&workspace_id).await.unwrap();
assert!(
!settings.disable_search_indexing,
"indexing should be enabled by default"
);
settings.disable_search_indexing = true;
c.update_workspace_settings(
&workspace_id,
&AFWorkspaceSettingsChange::new().disable_search_indexing(true),
)
.await
.unwrap();
let settings = c.get_workspace_settings(&workspace_id).await.unwrap();
assert!(settings.disable_search_indexing);
}
#[tokio::test]
async fn get_and_set_workspace_by_non_owner() {
let (alice_client, _alice) = generate_unique_registered_user_client().await;
let workspaces = alice_client.get_workspaces().await.unwrap();
let alice_workspace_id = workspaces.first().unwrap().workspace_id;
let (bob_client, bob) = generate_unique_registered_user_client().await;
invite_user_to_workspace(&alice_workspace_id, &alice_client, &bob_client, &bob.email).await;
let resp = bob_client
.get_workspace_settings(&alice_workspace_id.to_string())
.await;
assert!(
resp.is_err(),
"non-owner should not have access to workspace settings"
);
assert_eq!(resp.err().unwrap().code, ErrorCode::UserUnAuthorized);
let resp = bob_client
.update_workspace_settings(
&alice_workspace_id.to_string(),
&AFWorkspaceSettingsChange::new().disable_search_indexing(true),
)
.await;
assert!(
resp.is_err(),
"non-owner should not be able to edit workspace settings"
);
assert_eq!(resp.err().unwrap().code, ErrorCode::UserUnAuthorized);
}
async fn invite_user_to_workspace(
workspace_id: &Uuid,
owner: &Client,
member: &Client,
member_email: &str,
) {
owner
.invite_workspace_members(
workspace_id.to_string().as_str(),
vec![WorkspaceMemberInvitation {
email: member_email.to_string(),
role: AFRole::Member,
}],
)
.await
.unwrap();
// list invitation with pending filter
let pending_invs = member
.list_workspace_invitations(Some(AFWorkspaceInvitationStatus::Pending))
.await
.unwrap();
assert_eq!(pending_invs.len(), 1);
// accept invitation
let target_invite = pending_invs
.iter()
.find(|i| i.workspace_id == *workspace_id)
.unwrap();
member
.accept_workspace_invitation(target_invite.invite_id.to_string().as_str())
.await
.unwrap();
}