| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | use crate::helper::*;
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  | use flowy_test::{event_builder::UserModuleEventBuilder, FlowySDKTest};
 | 
					
						
							| 
									
										
										
										
											2022-01-28 10:56:55 +08:00
										 |  |  | use flowy_user::{errors::ErrorCode, event_map::UserEvent::*};
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  | use flowy_user_data_model::entities::{UpdateUserPayload, UserProfile};
 | 
					
						
							| 
									
										
										
										
											2022-04-11 15:27:03 +08:00
										 |  |  | use nanoid::nanoid;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-19 16:23:34 +08:00
										 |  |  | // use serial_test::*;
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-18 18:40:15 +08:00
										 |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn user_profile_get_failed() {
 | 
					
						
							| 
									
										
										
										
											2022-01-07 17:37:11 +08:00
										 |  |  |     let sdk = FlowySDKTest::default();
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |     let result = UserModuleEventBuilder::new(sdk)
 | 
					
						
							| 
									
										
										
										
											2021-10-18 18:40:15 +08:00
										 |  |  |         .event(GetUserProfile)
 | 
					
						
							|  |  |  |         .assert_error()
 | 
					
						
							|  |  |  |         .async_send()
 | 
					
						
							|  |  |  |         .await;
 | 
					
						
							| 
									
										
										
										
											2021-09-04 16:53:58 +08:00
										 |  |  |     assert!(result.user_profile().is_none())
 | 
					
						
							| 
									
										
										
										
											2021-09-01 17:57:06 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn user_profile_get() {
 | 
					
						
							| 
									
										
										
										
											2022-01-07 17:37:11 +08:00
										 |  |  |     let test = FlowySDKTest::default();
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  |     let user_profile = test.init_user().await;
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |     let user = UserModuleEventBuilder::new(test.clone())
 | 
					
						
							| 
									
										
										
										
											2021-09-04 16:12:48 +08:00
										 |  |  |         .event(GetUserProfile)
 | 
					
						
							|  |  |  |         .sync_send()
 | 
					
						
							| 
									
										
										
										
											2021-09-04 16:53:58 +08:00
										 |  |  |         .parse::<UserProfile>();
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  |     assert_eq!(user_profile, user);
 | 
					
						
							| 
									
										
										
										
											2021-09-01 17:57:06 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn user_update_with_name() {
 | 
					
						
							| 
									
										
										
										
											2022-01-07 17:37:11 +08:00
										 |  |  |     let sdk = FlowySDKTest::default();
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |     let user = sdk.init_user().await;
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |     let new_name = "hello_world".to_owned();
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |     let request = UpdateUserPayload::new(&user.id).name(&new_name);
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |     let _ = UserModuleEventBuilder::new(sdk.clone())
 | 
					
						
							|  |  |  |         .event(UpdateUser)
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |         .payload(request)
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |         .sync_send();
 | 
					
						
							| 
									
										
										
										
											2021-08-31 23:01:46 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |     let user_profile = UserModuleEventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2021-08-31 23:01:46 +08:00
										 |  |  |         .event(GetUserProfile)
 | 
					
						
							|  |  |  |         .assert_error()
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |         .sync_send()
 | 
					
						
							| 
									
										
										
										
											2021-09-04 16:53:58 +08:00
										 |  |  |         .parse::<UserProfile>();
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 16:53:58 +08:00
										 |  |  |     assert_eq!(user_profile.name, new_name,);
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn user_update_with_email() {
 | 
					
						
							| 
									
										
										
										
											2022-01-07 17:37:11 +08:00
										 |  |  |     let sdk = FlowySDKTest::default();
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |     let user = sdk.init_user().await;
 | 
					
						
							| 
									
										
										
										
											2022-04-11 15:27:03 +08:00
										 |  |  |     let new_email = format!("{}@gmail.com", nanoid!(6));
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |     let request = UpdateUserPayload::new(&user.id).email(&new_email);
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |     let _ = UserModuleEventBuilder::new(sdk.clone())
 | 
					
						
							|  |  |  |         .event(UpdateUser)
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |         .payload(request)
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |         .sync_send();
 | 
					
						
							|  |  |  |     let user_profile = UserModuleEventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2021-08-31 23:01:46 +08:00
										 |  |  |         .event(GetUserProfile)
 | 
					
						
							|  |  |  |         .assert_error()
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |         .sync_send()
 | 
					
						
							| 
									
										
										
										
											2021-09-04 16:53:58 +08:00
										 |  |  |         .parse::<UserProfile>();
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 16:53:58 +08:00
										 |  |  |     assert_eq!(user_profile.email, new_email,);
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn user_update_with_password() {
 | 
					
						
							| 
									
										
										
										
											2022-01-07 17:37:11 +08:00
										 |  |  |     let sdk = FlowySDKTest::default();
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |     let user = sdk.init_user().await;
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |     let new_password = "H123world!".to_owned();
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |     let request = UpdateUserPayload::new(&user.id).password(&new_password);
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |     let _ = UserModuleEventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |         .event(UpdateUser)
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |         .payload(request)
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |         .sync_send()
 | 
					
						
							|  |  |  |         .assert_success();
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn user_update_with_invalid_email() {
 | 
					
						
							| 
									
										
										
										
											2022-01-07 17:37:11 +08:00
										 |  |  |     let test = FlowySDKTest::default();
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  |     let user = test.init_user().await;
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |     for email in invalid_email_test_case() {
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |         let request = UpdateUserPayload::new(&user.id).email(&email);
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |         assert_eq!(
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |             UserModuleEventBuilder::new(test.clone())
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  |                 .event(UpdateUser)
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |                 .payload(request)
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  |                 .sync_send()
 | 
					
						
							|  |  |  |                 .error()
 | 
					
						
							|  |  |  |                 .code,
 | 
					
						
							| 
									
										
										
										
											2021-11-07 21:45:18 +08:00
										 |  |  |             ErrorCode::EmailFormatInvalid.value()
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |         );
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn user_update_with_invalid_password() {
 | 
					
						
							| 
									
										
										
										
											2022-01-07 17:37:11 +08:00
										 |  |  |     let test = FlowySDKTest::default();
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  |     let user = test.init_user().await;
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |     for password in invalid_password_test_case() {
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |         let request = UpdateUserPayload::new(&user.id).password(&password);
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |         UserModuleEventBuilder::new(test.clone())
 | 
					
						
							| 
									
										
										
										
											2021-09-04 15:12:53 +08:00
										 |  |  |             .event(UpdateUser)
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |             .payload(request)
 | 
					
						
							| 
									
										
										
										
											2021-09-04 15:12:53 +08:00
										 |  |  |             .sync_send()
 | 
					
						
							|  |  |  |             .assert_error();
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  |     }
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn user_update_with_invalid_name() {
 | 
					
						
							| 
									
										
										
										
											2022-01-07 17:37:11 +08:00
										 |  |  |     let test = FlowySDKTest::default();
 | 
					
						
							| 
									
										
										
										
											2021-09-28 15:29:29 +08:00
										 |  |  |     let user = test.init_user().await;
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |     let request = UpdateUserPayload::new(&user.id).name("");
 | 
					
						
							| 
									
										
										
										
											2021-12-08 17:33:22 +08:00
										 |  |  |     UserModuleEventBuilder::new(test.clone())
 | 
					
						
							| 
									
										
										
										
											2021-09-04 15:12:53 +08:00
										 |  |  |         .event(UpdateUser)
 | 
					
						
							| 
									
										
										
										
											2022-02-24 21:49:18 +08:00
										 |  |  |         .payload(request)
 | 
					
						
							| 
									
										
										
										
											2021-09-04 15:12:53 +08:00
										 |  |  |         .sync_send()
 | 
					
						
							|  |  |  |         .assert_error();
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | }
 |