sign_in_test.rs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. use crate::helper::*;
  2. use flowy_user::{errors::UserErrorCode, event::UserEvent::*, prelude::*};
  3. use serial_test::*;
  4. #[test]
  5. #[serial]
  6. fn sign_in_success() {
  7. let request = SignInRequest {
  8. email: random_valid_email(),
  9. password: valid_password(),
  10. };
  11. let response = UserTestBuilder::new()
  12. .logout()
  13. .event(SignIn)
  14. .request(request)
  15. .sync_send()
  16. .parse::<UserDetail>();
  17. dbg!(&response);
  18. }
  19. #[test]
  20. #[serial]
  21. fn sign_in_with_invalid_email() {
  22. for email in invalid_email_test_case() {
  23. let request = SignInRequest {
  24. email: email.to_string(),
  25. password: valid_password(),
  26. };
  27. assert_eq!(
  28. UserTestBuilder::new()
  29. .event(SignIn)
  30. .request(request)
  31. .sync_send()
  32. .error()
  33. .code,
  34. UserErrorCode::EmailInvalid
  35. );
  36. }
  37. }
  38. #[test]
  39. #[serial]
  40. fn sign_in_with_invalid_password() {
  41. for password in invalid_password_test_case() {
  42. let request = SignInRequest {
  43. email: random_valid_email(),
  44. password,
  45. };
  46. assert_eq!(
  47. UserTestBuilder::new()
  48. .event(SignIn)
  49. .request(request)
  50. .sync_send()
  51. .error()
  52. .code,
  53. UserErrorCode::PasswordInvalid
  54. );
  55. }
  56. }
  57. #[test]
  58. #[serial]
  59. fn sign_up_success() {
  60. let _ = UserTestBuilder::new().event(SignOut).sync_send();
  61. let request = SignUpRequest {
  62. email: random_valid_email(),
  63. name: valid_name(),
  64. password: valid_password(),
  65. };
  66. let _response = UserTestBuilder::new()
  67. .logout()
  68. .event(SignUp)
  69. .request(request)
  70. .sync_send();
  71. }
  72. #[test]
  73. #[serial]
  74. fn sign_up_with_invalid_email() {
  75. for email in invalid_email_test_case() {
  76. let request = SignUpRequest {
  77. email: email.to_string(),
  78. name: valid_name(),
  79. password: valid_password(),
  80. };
  81. assert_eq!(
  82. UserTestBuilder::new()
  83. .event(SignUp)
  84. .request(request)
  85. .sync_send()
  86. .error()
  87. .code,
  88. UserErrorCode::EmailInvalid
  89. );
  90. }
  91. }
  92. #[test]
  93. #[serial]
  94. fn sign_up_with_invalid_password() {
  95. for password in invalid_password_test_case() {
  96. let request = SignUpRequest {
  97. email: random_valid_email(),
  98. name: valid_name(),
  99. password,
  100. };
  101. assert_eq!(
  102. UserTestBuilder::new()
  103. .event(SignUp)
  104. .request(request)
  105. .sync_send()
  106. .error()
  107. .code,
  108. UserErrorCode::PasswordInvalid
  109. );
  110. }
  111. }
  112. #[test]
  113. #[should_panic]
  114. #[serial]
  115. fn user_status_get_failed_before_login() {
  116. let _ = UserTestBuilder::new()
  117. .logout()
  118. .event(GetStatus)
  119. .sync_send()
  120. .parse::<UserDetail>();
  121. }
  122. #[test]
  123. #[serial]
  124. fn user_status_get_success_after_login() {
  125. let request = SignInRequest {
  126. email: random_valid_email(),
  127. password: valid_password(),
  128. };
  129. let response = UserTestBuilder::new()
  130. .logout()
  131. .event(SignIn)
  132. .request(request)
  133. .sync_send()
  134. .parse::<UserDetail>();
  135. dbg!(&response);
  136. let _ = UserTestBuilder::new()
  137. .event(GetStatus)
  138. .sync_send()
  139. .parse::<UserDetail>();
  140. }
  141. #[test]
  142. #[serial]
  143. fn user_update_with_name() {
  144. let user_detail = UserTestBuilder::new().login().user_detail.unwrap();
  145. let new_name = "hello_world".to_owned();
  146. let request = UpdateUserRequest {
  147. id: user_detail.id.clone(),
  148. name: Some(new_name.clone()),
  149. email: None,
  150. workspace: None,
  151. password: None,
  152. };
  153. let user_detail = UserTestBuilder::new()
  154. .event(UpdateUser)
  155. .request(request)
  156. .sync_send()
  157. .parse::<UserDetail>();
  158. assert_eq!(user_detail.name, new_name,);
  159. }
  160. #[test]
  161. #[serial]
  162. fn user_update_with_email() {
  163. let user_detail = UserTestBuilder::new().login().user_detail.unwrap();
  164. let new_email = "[email protected]".to_owned();
  165. let request = UpdateUserRequest {
  166. id: user_detail.id.clone(),
  167. name: None,
  168. email: Some(new_email.clone()),
  169. workspace: None,
  170. password: None,
  171. };
  172. let user_detail = UserTestBuilder::new()
  173. .event(UpdateUser)
  174. .request(request)
  175. .sync_send()
  176. .parse::<UserDetail>();
  177. assert_eq!(user_detail.email, new_email,);
  178. }
  179. #[test]
  180. #[serial]
  181. fn user_update_with_password() {
  182. let user_detail = UserTestBuilder::new().login().user_detail.unwrap();
  183. let new_password = "H123world!".to_owned();
  184. let request = UpdateUserRequest {
  185. id: user_detail.id.clone(),
  186. name: None,
  187. email: None,
  188. workspace: None,
  189. password: Some(new_password.clone()),
  190. };
  191. let _ = UserTestBuilder::new()
  192. .event(UpdateUser)
  193. .request(request)
  194. .sync_send()
  195. .assert_success();
  196. }
  197. #[test]
  198. #[serial]
  199. fn user_update_with_invalid_email() {
  200. let user_detail = UserTestBuilder::new().login().user_detail.unwrap();
  201. for email in invalid_email_test_case() {
  202. let request = UpdateUserRequest {
  203. id: user_detail.id.clone(),
  204. name: None,
  205. email: Some(email),
  206. workspace: None,
  207. password: None,
  208. };
  209. assert_eq!(
  210. UserTestBuilder::new()
  211. .event(UpdateUser)
  212. .request(request)
  213. .sync_send()
  214. .error()
  215. .code,
  216. UserErrorCode::EmailInvalid
  217. );
  218. }
  219. }
  220. #[test]
  221. #[serial]
  222. fn user_update_with_invalid_password() {
  223. let user_detail = UserTestBuilder::new().login().user_detail.unwrap();
  224. for password in invalid_password_test_case() {
  225. let request = UpdateUserRequest {
  226. id: user_detail.id.clone(),
  227. name: None,
  228. email: None,
  229. workspace: None,
  230. password: Some(password),
  231. };
  232. assert_eq!(
  233. UserTestBuilder::new()
  234. .event(UpdateUser)
  235. .request(request)
  236. .sync_send()
  237. .error()
  238. .code,
  239. UserErrorCode::PasswordInvalid
  240. );
  241. }
  242. }
  243. #[test]
  244. #[serial]
  245. fn user_update_with_invalid_name() {
  246. let user_detail = UserTestBuilder::new().login().user_detail.unwrap();
  247. let request = UpdateUserRequest {
  248. id: user_detail.id.clone(),
  249. name: Some("".to_string()),
  250. email: None,
  251. workspace: None,
  252. password: None,
  253. };
  254. assert_eq!(
  255. UserTestBuilder::new()
  256. .event(UpdateUser)
  257. .request(request)
  258. .sync_send()
  259. .error()
  260. .code,
  261. UserErrorCode::UserNameInvalid
  262. );
  263. }