user_profile_test.rs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. use crate::user::local_test::helper::*;
  2. use flowy_test::{event_builder::EventBuilder, FlowyCoreTest};
  3. use flowy_user::entities::{UpdateUserProfilePayloadPB, UserProfilePB};
  4. use flowy_user::{errors::ErrorCode, event_map::UserEvent::*};
  5. use nanoid::nanoid;
  6. // use serial_test::*;
  7. #[tokio::test]
  8. async fn user_profile_get_failed() {
  9. let sdk = FlowyCoreTest::new();
  10. let result = EventBuilder::new(sdk)
  11. .event(GetUserProfile)
  12. .async_send()
  13. .await
  14. .error();
  15. assert!(result.is_some())
  16. }
  17. #[tokio::test]
  18. async fn user_profile_get() {
  19. let test = FlowyCoreTest::new();
  20. let user_profile = test.init_user().await;
  21. let user = EventBuilder::new(test.clone())
  22. .event(GetUserProfile)
  23. .sync_send()
  24. .parse::<UserProfilePB>();
  25. assert_eq!(user_profile, user);
  26. }
  27. #[tokio::test]
  28. async fn user_update_with_name() {
  29. let sdk = FlowyCoreTest::new();
  30. let user = sdk.init_user().await;
  31. let new_name = "hello_world".to_owned();
  32. let request = UpdateUserProfilePayloadPB::new(user.id).name(&new_name);
  33. let _ = EventBuilder::new(sdk.clone())
  34. .event(UpdateUserProfile)
  35. .payload(request)
  36. .sync_send();
  37. let user_profile = EventBuilder::new(sdk.clone())
  38. .event(GetUserProfile)
  39. .sync_send()
  40. .parse::<UserProfilePB>();
  41. assert_eq!(user_profile.name, new_name,);
  42. }
  43. #[tokio::test]
  44. async fn user_update_with_ai_key() {
  45. let sdk = FlowyCoreTest::new();
  46. let user = sdk.init_user().await;
  47. let openai_key = "openai_key".to_owned();
  48. let stability_ai_key = "stability_ai_key".to_owned();
  49. let request = UpdateUserProfilePayloadPB::new(user.id)
  50. .openai_key(&openai_key)
  51. .stability_ai_key(&stability_ai_key);
  52. let _ = EventBuilder::new(sdk.clone())
  53. .event(UpdateUserProfile)
  54. .payload(request)
  55. .sync_send();
  56. let user_profile = EventBuilder::new(sdk.clone())
  57. .event(GetUserProfile)
  58. .sync_send()
  59. .parse::<UserProfilePB>();
  60. assert_eq!(user_profile.openai_key, openai_key,);
  61. assert_eq!(user_profile.stability_ai_key, stability_ai_key,);
  62. }
  63. #[tokio::test]
  64. async fn user_update_with_email() {
  65. let sdk = FlowyCoreTest::new();
  66. let user = sdk.init_user().await;
  67. let new_email = format!("{}@gmail.com", nanoid!(6));
  68. let request = UpdateUserProfilePayloadPB::new(user.id).email(&new_email);
  69. let _ = EventBuilder::new(sdk.clone())
  70. .event(UpdateUserProfile)
  71. .payload(request)
  72. .sync_send();
  73. let user_profile = EventBuilder::new(sdk.clone())
  74. .event(GetUserProfile)
  75. .sync_send()
  76. .parse::<UserProfilePB>();
  77. assert_eq!(user_profile.email, new_email,);
  78. }
  79. #[tokio::test]
  80. async fn user_update_with_invalid_email() {
  81. let test = FlowyCoreTest::new();
  82. let user = test.init_user().await;
  83. for email in invalid_email_test_case() {
  84. let request = UpdateUserProfilePayloadPB::new(user.id).email(&email);
  85. assert_eq!(
  86. EventBuilder::new(test.clone())
  87. .event(UpdateUserProfile)
  88. .payload(request)
  89. .sync_send()
  90. .error()
  91. .unwrap()
  92. .code,
  93. ErrorCode::EmailFormatInvalid
  94. );
  95. }
  96. }
  97. #[tokio::test]
  98. async fn user_update_with_invalid_password() {
  99. let test = FlowyCoreTest::new();
  100. let user = test.init_user().await;
  101. for password in invalid_password_test_case() {
  102. let request = UpdateUserProfilePayloadPB::new(user.id).password(&password);
  103. assert!(EventBuilder::new(test.clone())
  104. .event(UpdateUserProfile)
  105. .payload(request)
  106. .async_send()
  107. .await
  108. .error()
  109. .is_some());
  110. }
  111. }
  112. #[tokio::test]
  113. async fn user_update_with_invalid_name() {
  114. let test = FlowyCoreTest::new();
  115. let user = test.init_user().await;
  116. let request = UpdateUserProfilePayloadPB::new(user.id).name("");
  117. assert!(EventBuilder::new(test.clone())
  118. .event(UpdateUserProfile)
  119. .payload(request)
  120. .sync_send()
  121. .error()
  122. .is_some())
  123. }