user_test.rs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. use uuid::Uuid;
  2. use flowy_encrypt::{encrypt_text, generate_encryption_secret};
  3. use flowy_user_deps::entities::*;
  4. use lib_infra::box_any::BoxAny;
  5. use crate::supabase_test::util::{
  6. get_supabase_ci_config, third_party_sign_up_param, user_auth_service,
  7. };
  8. // ‼️‼️‼️ Warning: this test will create a table in the database
  9. #[tokio::test]
  10. async fn supabase_user_sign_up_test() {
  11. if get_supabase_ci_config().is_none() {
  12. return;
  13. }
  14. let user_service = user_auth_service();
  15. let uuid = Uuid::new_v4().to_string();
  16. let params = third_party_sign_up_param(uuid);
  17. let user: AuthResponse = user_service.sign_up(BoxAny::new(params)).await.unwrap();
  18. assert!(!user.latest_workspace.id.is_empty());
  19. assert!(!user.user_workspaces.is_empty());
  20. assert!(!user.latest_workspace.database_views_aggregate_id.is_empty());
  21. }
  22. #[tokio::test]
  23. async fn supabase_user_sign_up_with_existing_uuid_test() {
  24. if get_supabase_ci_config().is_none() {
  25. return;
  26. }
  27. let user_service = user_auth_service();
  28. let uuid = Uuid::new_v4().to_string();
  29. let params = third_party_sign_up_param(uuid);
  30. let _user: AuthResponse = user_service
  31. .sign_up(BoxAny::new(params.clone()))
  32. .await
  33. .unwrap();
  34. let user: AuthResponse = user_service.sign_up(BoxAny::new(params)).await.unwrap();
  35. assert!(!user.latest_workspace.id.is_empty());
  36. assert!(!user.latest_workspace.database_views_aggregate_id.is_empty());
  37. assert!(!user.user_workspaces.is_empty());
  38. }
  39. #[tokio::test]
  40. async fn supabase_update_user_profile_test() {
  41. if get_supabase_ci_config().is_none() {
  42. return;
  43. }
  44. let user_service = user_auth_service();
  45. let uuid = Uuid::new_v4().to_string();
  46. let params = third_party_sign_up_param(uuid);
  47. let user: AuthResponse = user_service
  48. .sign_up(BoxAny::new(params.clone()))
  49. .await
  50. .unwrap();
  51. user_service
  52. .update_user(
  53. UserCredentials::from_uid(user.user_id),
  54. UpdateUserProfileParams {
  55. uid: user.user_id,
  56. name: Some("123".to_string()),
  57. email: Some(format!("{}@test.com", Uuid::new_v4())),
  58. password: None,
  59. icon_url: None,
  60. openai_key: None,
  61. stability_ai_key: None,
  62. encryption_sign: None,
  63. },
  64. )
  65. .await
  66. .unwrap();
  67. let user_profile = user_service
  68. .get_user_profile(UserCredentials::from_uid(user.user_id))
  69. .await
  70. .unwrap()
  71. .unwrap();
  72. assert_eq!(user_profile.name, "123");
  73. }
  74. #[tokio::test]
  75. async fn supabase_get_user_profile_test() {
  76. if get_supabase_ci_config().is_none() {
  77. return;
  78. }
  79. let user_service = user_auth_service();
  80. let uuid = Uuid::new_v4().to_string();
  81. let params = third_party_sign_up_param(uuid);
  82. let user: AuthResponse = user_service
  83. .sign_up(BoxAny::new(params.clone()))
  84. .await
  85. .unwrap();
  86. let credential = UserCredentials::from_uid(user.user_id);
  87. user_service
  88. .get_user_profile(credential.clone())
  89. .await
  90. .unwrap()
  91. .unwrap();
  92. }
  93. #[tokio::test]
  94. async fn supabase_get_not_exist_user_profile_test() {
  95. if get_supabase_ci_config().is_none() {
  96. return;
  97. }
  98. let user_service = user_auth_service();
  99. let result = user_service
  100. .get_user_profile(UserCredentials::from_uid(i64::MAX))
  101. .await
  102. .unwrap();
  103. // user not found
  104. assert!(result.is_none());
  105. }
  106. #[tokio::test]
  107. async fn user_encryption_sign_test() {
  108. if get_supabase_ci_config().is_none() {
  109. return;
  110. }
  111. let user_service = user_auth_service();
  112. let uuid = Uuid::new_v4().to_string();
  113. let params = third_party_sign_up_param(uuid);
  114. let user: AuthResponse = user_service.sign_up(BoxAny::new(params)).await.unwrap();
  115. // generate encryption sign
  116. let secret = generate_encryption_secret();
  117. let sign = encrypt_text(user.user_id.to_string(), &secret).unwrap();
  118. user_service
  119. .update_user(
  120. UserCredentials::from_uid(user.user_id),
  121. UpdateUserProfileParams::new(user.user_id)
  122. .with_encryption_type(EncryptionType::SelfEncryption(sign.clone())),
  123. )
  124. .await
  125. .unwrap();
  126. let user_profile: UserProfile = user_service
  127. .get_user_profile(UserCredentials::from_uid(user.user_id))
  128. .await
  129. .unwrap()
  130. .unwrap();
  131. assert_eq!(
  132. user_profile.encryption_type,
  133. EncryptionType::SelfEncryption(sign)
  134. );
  135. }