95 lines
2.7 KiB
Rust
95 lines
2.7 KiB
Rust
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() {
|
|
// TODO: currently, workspace settings contains only AI preference, which is
|
|
// better suited as a user setting. Meanwhile, we can permit workspace members
|
|
// to view the settings.
|
|
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;
|
|
|
|
bob_client
|
|
.get_workspace_settings(&alice_workspace_id.to_string())
|
|
.await
|
|
.unwrap();
|
|
|
|
bob_client
|
|
.update_workspace_settings(
|
|
&alice_workspace_id.to_string(),
|
|
&AFWorkspaceSettingsChange::new().disable_search_indexing(true),
|
|
)
|
|
.await
|
|
.unwrap();
|
|
}
|
|
|
|
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,
|
|
skip_email_send: true,
|
|
..Default::default()
|
|
}],
|
|
)
|
|
.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();
|
|
}
|