user_profile_test.rs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. use crate::helper::*;
  2. use flowy_infra::uuid;
  3. use flowy_test::{builder::UserTest, FlowyTest};
  4. use flowy_user::{errors::ErrorCode, event::UserEvent::*, prelude::*};
  5. use serial_test::*;
  6. #[test]
  7. #[serial]
  8. fn user_profile_get_failed() {
  9. let test = FlowyTest::setup();
  10. let result = UserTest::new(test.sdk).event(GetUserProfile).assert_error().sync_send();
  11. assert!(result.user_profile().is_none())
  12. }
  13. #[tokio::test]
  14. #[serial]
  15. async fn user_profile_get() {
  16. let test = FlowyTest::setup();
  17. let user_profile = test.init_user().await;
  18. let user = UserTest::new(test.sdk.clone())
  19. .event(GetUserProfile)
  20. .sync_send()
  21. .parse::<UserProfile>();
  22. assert_eq!(user_profile, user);
  23. }
  24. #[tokio::test]
  25. #[serial]
  26. async fn user_update_with_name() {
  27. let test = FlowyTest::setup();
  28. let user = test.init_user().await;
  29. let new_name = "hello_world".to_owned();
  30. let request = UpdateUserRequest::new(&user.id).name(&new_name);
  31. let _ = UserTest::new(test.sdk()).event(UpdateUser).request(request).sync_send();
  32. let user_profile = UserTest::new(test.sdk())
  33. .event(GetUserProfile)
  34. .assert_error()
  35. .sync_send()
  36. .parse::<UserProfile>();
  37. assert_eq!(user_profile.name, new_name,);
  38. }
  39. #[tokio::test]
  40. #[serial]
  41. async fn user_update_with_email() {
  42. let test = FlowyTest::setup();
  43. let user = test.init_user().await;
  44. let new_email = format!("{}@gmai.com", uuid());
  45. let request = UpdateUserRequest::new(&user.id).email(&new_email);
  46. let _ = UserTest::new(test.sdk()).event(UpdateUser).request(request).sync_send();
  47. let user_profile = UserTest::new(test.sdk())
  48. .event(GetUserProfile)
  49. .assert_error()
  50. .sync_send()
  51. .parse::<UserProfile>();
  52. assert_eq!(user_profile.email, new_email,);
  53. }
  54. #[tokio::test]
  55. #[serial]
  56. async fn user_update_with_password() {
  57. let test = FlowyTest::setup();
  58. let user = test.init_user().await;
  59. let new_password = "H123world!".to_owned();
  60. let request = UpdateUserRequest::new(&user.id).password(&new_password);
  61. let _ = UserTest::new(test.sdk())
  62. .event(UpdateUser)
  63. .request(request)
  64. .sync_send()
  65. .assert_success();
  66. }
  67. #[tokio::test]
  68. #[serial]
  69. async fn user_update_with_invalid_email() {
  70. let test = FlowyTest::setup();
  71. let user = test.init_user().await;
  72. for email in invalid_email_test_case() {
  73. let request = UpdateUserRequest::new(&user.id).email(&email);
  74. assert_eq!(
  75. UserTest::new(test.sdk())
  76. .event(UpdateUser)
  77. .request(request)
  78. .sync_send()
  79. .error()
  80. .code,
  81. ErrorCode::EmailFormatInvalid
  82. );
  83. }
  84. }
  85. #[tokio::test]
  86. #[serial]
  87. async fn user_update_with_invalid_password() {
  88. let test = FlowyTest::setup();
  89. let user = test.init_user().await;
  90. for password in invalid_password_test_case() {
  91. let request = UpdateUserRequest::new(&user.id).password(&password);
  92. UserTest::new(test.sdk())
  93. .event(UpdateUser)
  94. .request(request)
  95. .sync_send()
  96. .assert_error();
  97. }
  98. }
  99. #[tokio::test]
  100. #[serial]
  101. async fn user_update_with_invalid_name() {
  102. let test = FlowyTest::setup();
  103. let user = test.init_user().await;
  104. let request = UpdateUserRequest::new(&user.id).name("");
  105. UserTest::new(test.sdk())
  106. .event(UpdateUser)
  107. .request(request)
  108. .sync_send()
  109. .assert_error();
  110. }