file_test.rs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. use url::Url;
  2. use uuid::Uuid;
  3. use flowy_storage::StorageObject;
  4. use crate::supabase_test::util::{file_storage_service, get_supabase_ci_config};
  5. #[tokio::test]
  6. async fn supabase_get_object_test() {
  7. if get_supabase_ci_config().is_none() {
  8. return;
  9. }
  10. let service = file_storage_service();
  11. let file_name = format!("test-{}.txt", Uuid::new_v4());
  12. let object = StorageObject::from_file("1", &file_name, "tests/test.txt");
  13. // Upload a file
  14. let url = service
  15. .create_object(object)
  16. .await
  17. .unwrap()
  18. .parse::<Url>()
  19. .unwrap();
  20. // The url would be something like:
  21. // https://acfrqdbdtbsceyjbxsfc.supabase.co/storage/v1/object/data/test-1693472809.txt
  22. let name = url.path_segments().unwrap().last().unwrap();
  23. assert_eq!(name, &file_name);
  24. // Download the file
  25. let bytes = service.get_object_by_url(url.to_string()).await.unwrap();
  26. let s = String::from_utf8(bytes.to_vec()).unwrap();
  27. assert_eq!(s, "hello world");
  28. }
  29. #[tokio::test]
  30. async fn supabase_upload_image_test() {
  31. if get_supabase_ci_config().is_none() {
  32. return;
  33. }
  34. let service = file_storage_service();
  35. let file_name = format!("image-{}.png", Uuid::new_v4());
  36. let object = StorageObject::from_file("1", &file_name, "tests/logo.png");
  37. // Upload a file
  38. let url = service
  39. .create_object(object)
  40. .await
  41. .unwrap()
  42. .parse::<Url>()
  43. .unwrap();
  44. // Download object by url
  45. let bytes = service.get_object_by_url(url.to_string()).await.unwrap();
  46. assert_eq!(bytes.len(), 15694);
  47. }
  48. #[tokio::test]
  49. async fn supabase_delete_object_test() {
  50. if get_supabase_ci_config().is_none() {
  51. return;
  52. }
  53. let service = file_storage_service();
  54. let file_name = format!("test-{}.txt", Uuid::new_v4());
  55. let object = StorageObject::from_file("1", &file_name, "tests/test.txt");
  56. let url = service.create_object(object).await.unwrap();
  57. let result = service.get_object_by_url(url.clone()).await;
  58. assert!(result.is_ok());
  59. let _ = service.delete_object_by_url(url.clone()).await;
  60. let result = service.get_object_by_url(url.clone()).await;
  61. assert!(result.is_err());
  62. }