user_test.rs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. use std::collections::HashMap;
  2. use std::sync::Arc;
  3. use uuid::Uuid;
  4. use flowy_server::supabase::impls::{SupabaseUserAuthServiceImpl, USER_UUID};
  5. use flowy_server::supabase::{PostgresConfiguration, PostgresServer};
  6. use flowy_user::entities::{SignUpResponse, UpdateUserProfileParams};
  7. use flowy_user::event_map::{UserAuthService, UserCredentials};
  8. use lib_infra::box_any::BoxAny;
  9. use crate::setup_log;
  10. // ‼️‼️‼️ Warning: this test will create a table in the database
  11. #[tokio::test]
  12. async fn user_sign_up_test() {
  13. if dotenv::from_filename("./.env.test").is_err() {
  14. return;
  15. }
  16. let server = Arc::new(PostgresServer::new(
  17. PostgresConfiguration::from_env().unwrap(),
  18. ));
  19. let user_service = SupabaseUserAuthServiceImpl::new(server);
  20. let mut params = HashMap::new();
  21. params.insert(USER_UUID.to_string(), Uuid::new_v4().to_string());
  22. let user: SignUpResponse = user_service.sign_up(BoxAny::new(params)).await.unwrap();
  23. assert!(!user.workspace_id.is_empty());
  24. }
  25. #[tokio::test]
  26. async fn user_sign_up_with_existing_uuid_test() {
  27. if dotenv::from_filename("./.env.test").is_err() {
  28. return;
  29. }
  30. let server = Arc::new(PostgresServer::new(
  31. PostgresConfiguration::from_env().unwrap(),
  32. ));
  33. let user_service = SupabaseUserAuthServiceImpl::new(server);
  34. let uuid = Uuid::new_v4();
  35. let mut params = HashMap::new();
  36. params.insert(USER_UUID.to_string(), uuid.to_string());
  37. let _user: SignUpResponse = user_service
  38. .sign_up(BoxAny::new(params.clone()))
  39. .await
  40. .unwrap();
  41. let user: SignUpResponse = user_service.sign_up(BoxAny::new(params)).await.unwrap();
  42. assert!(!user.workspace_id.is_empty());
  43. }
  44. #[tokio::test]
  45. async fn update_user_profile_test() {
  46. if dotenv::from_filename("./.env.test").is_err() {
  47. return;
  48. }
  49. let server = Arc::new(PostgresServer::new(
  50. PostgresConfiguration::from_env().unwrap(),
  51. ));
  52. let user_service = SupabaseUserAuthServiceImpl::new(server);
  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 server = Arc::new(PostgresServer::new(
  89. PostgresConfiguration::from_env().unwrap(),
  90. ));
  91. let user_service = SupabaseUserAuthServiceImpl::new(server);
  92. let uuid = Uuid::new_v4();
  93. let mut params = HashMap::new();
  94. params.insert(USER_UUID.to_string(), uuid.to_string());
  95. let user: SignUpResponse = user_service
  96. .sign_up(BoxAny::new(params.clone()))
  97. .await
  98. .unwrap();
  99. let credential = UserCredentials::from_uid(user.user_id);
  100. user_service
  101. .get_user_profile(credential.clone())
  102. .await
  103. .unwrap()
  104. .unwrap();
  105. user_service
  106. .get_user_profile(credential.clone())
  107. .await
  108. .unwrap()
  109. .unwrap();
  110. user_service
  111. .get_user_profile(credential.clone())
  112. .await
  113. .unwrap()
  114. .unwrap();
  115. user_service
  116. .get_user_profile(credential.clone())
  117. .await
  118. .unwrap()
  119. .unwrap();
  120. user_service
  121. .get_user_profile(credential)
  122. .await
  123. .unwrap()
  124. .unwrap();
  125. }
  126. #[tokio::test]
  127. async fn get_not_exist_user_profile_test() {
  128. if dotenv::from_filename("./.env.test").is_err() {
  129. return;
  130. }
  131. setup_log();
  132. let server = Arc::new(PostgresServer::new(
  133. PostgresConfiguration::from_env().unwrap(),
  134. ));
  135. let user_service = SupabaseUserAuthServiceImpl::new(server);
  136. let result = user_service
  137. .get_user_profile(UserCredentials::from_uid(i64::MAX))
  138. .await
  139. .unwrap();
  140. // user not found
  141. assert!(result.is_none());
  142. }