user_test.rs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. use std::collections::HashMap;
  2. use std::sync::Arc;
  3. use parking_lot::RwLock;
  4. use uuid::Uuid;
  5. use flowy_server::supabase::impls::{SupabaseUserAuthServiceImpl, USER_UUID};
  6. use flowy_server::supabase::{PostgresServer, SupabaseServerServiceImpl};
  7. use flowy_server_config::supabase_config::PostgresConfiguration;
  8. use flowy_user::entities::{SignUpResponse, UpdateUserProfileParams};
  9. use flowy_user::event_map::{UserAuthService, UserCredentials};
  10. use lib_infra::box_any::BoxAny;
  11. use crate::setup_log;
  12. // ‼️‼️‼️ Warning: this test will create a table in the database
  13. #[tokio::test]
  14. async fn user_sign_up_test() {
  15. if dotenv::from_filename("./.env.test").is_err() {
  16. return;
  17. }
  18. let user_service = user_auth_service_impl();
  19. let mut params = HashMap::new();
  20. params.insert(USER_UUID.to_string(), Uuid::new_v4().to_string());
  21. let user: SignUpResponse = user_service.sign_up(BoxAny::new(params)).await.unwrap();
  22. assert!(!user.workspace_id.is_empty());
  23. }
  24. fn user_auth_service_impl() -> SupabaseUserAuthServiceImpl<SupabaseServerServiceImpl> {
  25. let server = Arc::new(PostgresServer::new(
  26. PostgresConfiguration::from_env().unwrap(),
  27. ));
  28. let weak_server = SupabaseServerServiceImpl(Arc::new(RwLock::new(Some(server))));
  29. SupabaseUserAuthServiceImpl::new(weak_server)
  30. }
  31. #[tokio::test]
  32. async fn user_sign_up_with_existing_uuid_test() {
  33. if dotenv::from_filename("./.env.test").is_err() {
  34. return;
  35. }
  36. let user_service = user_auth_service_impl();
  37. let uuid = Uuid::new_v4();
  38. let mut params = HashMap::new();
  39. params.insert(USER_UUID.to_string(), uuid.to_string());
  40. let _user: SignUpResponse = user_service
  41. .sign_up(BoxAny::new(params.clone()))
  42. .await
  43. .unwrap();
  44. let user: SignUpResponse = user_service.sign_up(BoxAny::new(params)).await.unwrap();
  45. assert!(!user.workspace_id.is_empty());
  46. }
  47. #[tokio::test]
  48. async fn update_user_profile_test() {
  49. if dotenv::from_filename("./.env.test").is_err() {
  50. return;
  51. }
  52. let user_service = user_auth_service_impl();
  53. let uuid = Uuid::new_v4();
  54. let mut params = HashMap::new();
  55. params.insert(USER_UUID.to_string(), uuid.to_string());
  56. let user: SignUpResponse = user_service
  57. .sign_up(BoxAny::new(params.clone()))
  58. .await
  59. .unwrap();
  60. user_service
  61. .update_user(
  62. UserCredentials::from_uid(user.user_id),
  63. UpdateUserProfileParams {
  64. id: user.user_id,
  65. auth_type: Default::default(),
  66. name: Some("123".to_string()),
  67. email: Some("[email protected]".to_string()),
  68. password: None,
  69. icon_url: None,
  70. openai_key: None,
  71. },
  72. )
  73. .await
  74. .unwrap();
  75. let user_profile = user_service
  76. .get_user_profile(UserCredentials::from_uid(user.user_id))
  77. .await
  78. .unwrap()
  79. .unwrap();
  80. assert_eq!(user_profile.name, "123");
  81. }
  82. #[tokio::test]
  83. async fn get_user_profile_test() {
  84. if dotenv::from_filename("./.env.test").is_err() {
  85. return;
  86. }
  87. setup_log();
  88. let user_service = user_auth_service_impl();
  89. let uuid = Uuid::new_v4();
  90. let mut params = HashMap::new();
  91. params.insert(USER_UUID.to_string(), uuid.to_string());
  92. let user: SignUpResponse = user_service
  93. .sign_up(BoxAny::new(params.clone()))
  94. .await
  95. .unwrap();
  96. let credential = UserCredentials::from_uid(user.user_id);
  97. user_service
  98. .get_user_profile(credential.clone())
  99. .await
  100. .unwrap()
  101. .unwrap();
  102. user_service
  103. .get_user_profile(credential.clone())
  104. .await
  105. .unwrap()
  106. .unwrap();
  107. user_service
  108. .get_user_profile(credential.clone())
  109. .await
  110. .unwrap()
  111. .unwrap();
  112. user_service
  113. .get_user_profile(credential.clone())
  114. .await
  115. .unwrap()
  116. .unwrap();
  117. user_service
  118. .get_user_profile(credential)
  119. .await
  120. .unwrap()
  121. .unwrap();
  122. }
  123. #[tokio::test]
  124. async fn get_not_exist_user_profile_test() {
  125. if dotenv::from_filename("./.env.test").is_err() {
  126. return;
  127. }
  128. setup_log();
  129. let user_service = user_auth_service_impl();
  130. let result = user_service
  131. .get_user_profile(UserCredentials::from_uid(i64::MAX))
  132. .await
  133. .unwrap();
  134. // user not found
  135. assert!(result.is_none());
  136. }