| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | use std::time::Duration;use assert_json_diff::assert_json_eq;use serde_json::json;use flowy_folder2::entities::{FolderSnapshotStatePB, FolderSyncStatePB};use flowy_folder2::notification::FolderNotification::DidUpdateFolderSnapshotState;use crate::folder::supabase_test::helper::{assert_folder_collab_content, FlowySupabaseFolderTest};use crate::util::{get_folder_data_from_server, receive_with_timeout};#[tokio::test]async fn supabase_encrypt_folder_test() {  if let Some(test) = FlowySupabaseFolderTest::new().await {    let secret = test.enable_encryption().await;    let local_folder_data = test.get_local_folder_data().await;    let workspace_id = test.get_current_workspace().await.workspace.id;    let remote_folder_data = get_folder_data_from_server(&workspace_id, Some(secret))      .await      .unwrap()      .unwrap();    assert_json_eq!(json!(local_folder_data), json!(remote_folder_data));  }}#[tokio::test]async fn supabase_decrypt_folder_data_test() {  if let Some(test) = FlowySupabaseFolderTest::new().await {    let secret = Some(test.enable_encryption().await);    let workspace_id = test.get_current_workspace().await.workspace.id;    test      .create_view(&workspace_id, "encrypt view".to_string())      .await;    let mut rx = test      .notification_sender      .subscribe_with_condition::<FolderSyncStatePB, _>(&workspace_id, |pb| pb.is_finish);    receive_with_timeout(&mut rx, Duration::from_secs(10))      .await      .unwrap();    let folder_data = get_folder_data_from_server(&workspace_id, secret)      .await      .unwrap()      .unwrap();    assert_eq!(folder_data.views.len(), 2);    assert_eq!(folder_data.views[1].name, "encrypt view");  }}#[tokio::test]#[should_panic]async fn supabase_decrypt_with_invalid_secret_folder_data_test() {  if let Some(test) = FlowySupabaseFolderTest::new().await {    let _ = Some(test.enable_encryption().await);    let workspace_id = test.get_current_workspace().await.workspace.id;    test      .create_view(&workspace_id, "encrypt view".to_string())      .await;    let mut rx = test      .notification_sender      .subscribe_with_condition::<FolderSyncStatePB, _>(&workspace_id, |pb| pb.is_finish);    receive_with_timeout(&mut rx, Duration::from_secs(10))      .await      .unwrap();    let _ = get_folder_data_from_server(&workspace_id, Some("invalid secret".to_string()))      .await      .unwrap();  }}#[tokio::test]async fn supabase_folder_snapshot_test() {  if let Some(test) = FlowySupabaseFolderTest::new().await {    let workspace_id = test.get_current_workspace().await.workspace.id;    let mut rx = test      .notification_sender      .subscribe::<FolderSnapshotStatePB>(&workspace_id, DidUpdateFolderSnapshotState);    receive_with_timeout(&mut rx, Duration::from_secs(10))      .await      .unwrap();    let expected = test.get_collab_json().await;    let snapshots = test.get_folder_snapshots(&workspace_id).await;    assert_eq!(snapshots.len(), 1);    assert_folder_collab_content(&workspace_id, &snapshots[0].data, expected);  }}#[tokio::test]async fn supabase_initial_folder_snapshot_test2() {  if let Some(test) = FlowySupabaseFolderTest::new().await {    let workspace_id = test.get_current_workspace().await.workspace.id;    test      .create_view(&workspace_id, "supabase test view1".to_string())      .await;    test      .create_view(&workspace_id, "supabase test view2".to_string())      .await;    test      .create_view(&workspace_id, "supabase test view3".to_string())      .await;    let mut rx = test      .notification_sender      .subscribe_with_condition::<FolderSyncStatePB, _>(&workspace_id, |pb| pb.is_finish);    receive_with_timeout(&mut rx, Duration::from_secs(10))      .await      .unwrap();    let expected = test.get_collab_json().await;    let update = test.get_collab_update(&workspace_id).await;    assert_folder_collab_content(&workspace_id, &update, expected);  }}
 |