public void DoesNotDisplayAnErrormessageWhenTheUserCancelsTheRequestOnTheGoogleService() { var observer = SchedulerProvider.TestScheduler.CreateObserver <string>(); ViewModel.ErrorMessage.Subscribe(observer); View.GetGoogleToken().Returns(Observable.Return("")); UserAccessManager.LoginWithGoogle(Arg.Any <string>()) .Returns(Observable.Throw <Unit>(new GoogleLoginException(true))); ViewModel.GoogleLogin(); SchedulerProvider.TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(1, "") ); }
public void SetsGeneralErrorForAnyOtherException() { ViewModel.Email.OnNext(ValidEmail); UserAccessManager .ResetPassword(Arg.Any <Email>()) .Returns(Observable.Throw <string>(new Exception())); var observer = TestScheduler.CreateObserver <string>(); ViewModel.ErrorMessage.Subscribe(observer); ViewModel.Reset.Execute(); TestScheduler.Start(); observer.LastEmittedValue().Should().Be(Resources.PasswordResetGeneralError); }
public void SetsPasswordResetSuccessfulToTrue() { ViewModel.Email.OnNext(ValidEmail); UserAccessManager .ResetPassword(Arg.Any <Email>()) .Returns(Observable.Return("Great success")); var observer = TestScheduler.CreateObserver <bool>(); ViewModel.PasswordResetSuccessful.Subscribe(observer); ViewModel.Reset.Execute(); TestScheduler.Start(); observer.LastEmittedValue().Should().BeTrue(); }
public void SetsTheErrorMessageToNothingWhenGoogleLoginWasCanceled() { var observer = TestScheduler.CreateObserver <string>(); var exception = new GoogleLoginException(true); ViewModel.ErrorMessage.Subscribe(observer); UserAccessManager.Login(Arg.Any <Email>(), Arg.Any <Password>()) .Returns(Observable.Throw <Unit>(exception)); ViewModel.Login(); TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(1, "") ); }
public void SetsTheErrorMessageToGenericLoginErrorForAnyOtherException() { var observer = TestScheduler.CreateObserver <string>(); var exception = new Exception(); ViewModel.ErrorMessage.Subscribe(observer); UserAccessManager.Login(Arg.Any <Email>(), Arg.Any <Password>()) .Returns(Observable.Throw <Unit>(exception)); ViewModel.Login(); TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(1, ""), ReactiveTest.OnNext(2, Resources.GenericLoginError) ); }
public void StopsTheViewModelLoadStateWhenItErrors() { var observer = TestScheduler.CreateObserver <bool>(); ViewModel.IsLoading.Subscribe(observer); UserAccessManager.LoginWithGoogle() .Returns(Observable.Throw <Unit>(new GoogleLoginException(false))); ViewModel.GoogleLogin(); TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(1, false), ReactiveTest.OnNext(2, true), ReactiveTest.OnNext(3, false) ); }
public void SetsIsLoadingToFalse() { var observer = TestScheduler.CreateObserver <bool>(); ViewModel.IsLoading.Subscribe(observer); UserAccessManager.Login(Arg.Any <Email>(), Arg.Any <Password>()) .Returns(Observable.Throw <Unit>(new Exception())); ViewModel.Login(); TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(1, false), ReactiveTest.OnNext(2, true), ReactiveTest.OnNext(3, false) ); }
public void SetsTheIsLoadingPropertyToTrue() { var observer = TestScheduler.CreateObserver <bool>(); ViewModel.IsLoading.Subscribe(observer); UserAccessManager.SignUpWithGoogle(true, Arg.Any <int>(), Arg.Any <string>()).Returns( Observable.Never <ITogglDataSource>()); ViewModel.GoogleSignup.Execute(); TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(1, false), ReactiveTest.OnNext(2, true) ); }
public void StopsTheViewModelLoadStateWhenItErrors() { var observer = TestScheduler.CreateObserver <bool>(); ViewModel.IsLoading.Subscribe(observer); UserAccessManager.SignUpWithGoogle(Arg.Any <bool>(), Arg.Any <int>(), Arg.Any <string>()).Returns( Observable.Throw <ITogglDataSource>(new GoogleLoginException(false))); ViewModel.GoogleSignup.Execute(); TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(1, false), ReactiveTest.OnNext(2, true), ReactiveTest.OnNext(3, false) ); }
public void DoesNothingWhenErrorHandlingServiceHandlesTheException() { var observer = TestScheduler.CreateObserver <string>(); var exception = new Exception(); ViewModel.ErrorMessage.Subscribe(observer); UserAccessManager.Login(Arg.Any <Email>(), Arg.Any <Password>()) .Returns(Observable.Throw <Unit>(exception)); ErrorHandlingService.TryHandleDeprecationError(Arg.Any <Exception>()) .Returns(true); ViewModel.Login(); TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(1, "") ); }
public async Task ReturnsFalseWhenIsLoading(string email, string password) { var observer = TestScheduler.CreateObserver <bool>(); ViewModel.LoginEnabled.Subscribe(observer); ViewModel.SetEmail(Email.From(email)); ViewModel.SetPassword(Password.From(password)); //Make sure isloading is true UserAccessManager .Login(Arg.Any <Email>(), Arg.Any <Password>()) .Returns(Observable.Never <Unit>()); ViewModel.Login(); TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(2, false) ); }
public void SetsTheErrorMessageToIncorrectEmailOrPasswordWhenReceivedUnauthorizedException() { var observer = TestScheduler.CreateObserver <string>(); ViewModel.ErrorMessage.Subscribe(observer); var exception = new UnauthorizedException( Substitute.For <IRequest>(), Substitute.For <IResponse>()); UserAccessManager.Login(Arg.Any <Email>(), Arg.Any <Password>()) .Returns(Observable.Throw <Unit>(exception)); ViewModel.Login(); TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(1, ""), ReactiveTest.OnNext(2, Resources.IncorrectEmailOrPassword) ); }
public IHttpActionResult Join(string link) { int uid = Auth.CheckToken(Request.Headers); if (uid == 0) { return(StatusCode(HttpStatusCode.Forbidden)); } var queue = QueueManager.GetQueue(link); if (queue == null) { return(NotFound()); } UserAccessManager.Insert(UserManager.GetUser(uid).Login, uid, queue.Id); return(Ok(true)); }
public void SetsNoEmailErrorWhenReceivesBadRequestException() { ViewModel.Email.OnNext(ValidEmail); var exception = new BadRequestException( Substitute.For <IRequest>(), Substitute.For <IResponse>()); UserAccessManager .ResetPassword(Arg.Any <Email>()) .Returns(Observable.Throw <string>(exception)); var observer = TestScheduler.CreateObserver <string>(); ViewModel.ErrorMessage.Subscribe(observer); ViewModel.Reset.Execute(); TestScheduler.Start(); observer.Messages.Last().Value.Value.Should().Be(Resources.PasswordResetEmailDoesNotExistError); }
private void CheckAccess(string value) { UserAccessManager userAccessManager = WcfContext.Current.GetUserAccessManager(); OperationKey operationKey = this.GetOperationKey(value); if (operationKey == null) { throw new ArgumentException("Invalid operation key."); } if (!userAccessManager.CheckAccess(operationKey.SessionId)) { throw new AuthenticationException("Not login or login timeout."); } User user = userAccessManager.GetUser(operationKey.SessionId, true); if (!this.IsUserActive(user)) { throw new AuthenticationException(string.Format("The user (Serial:{0}) is {1}.", user.Serial, user.Status)); } Organization org = userAccessManager.GetOrganization(operationKey.SessionId); if (!this.IsOrganizationActive(org)) { throw new AuthenticationException(string.Format("The organization (Name:{0}) is {1}.", org.Name, org.Status)); } UserAccess access = userAccessManager.FindUserAccessItem(operationKey.SessionId); if (access == null) { throw new AuthenticationException("Cannot find login session."); } userAccessManager.KeepAlive(operationKey.SessionId); UserAccessInfo info = new UserAccessInfo { Organization = org, User = user, UserAccess = access }; WcfContext.Current.Set("UserAccessInfo", info); WcfContext.Current.Set("OperationKey", operationKey); }
public static void Initialize(this MvvmCrossFoundation foundation) { initializeInversionOfControl(foundation); Func <ITogglDataSource, ISyncManager> createSyncManager(ITogglApi api) => dataSource => TogglSyncManager.CreateSyncManager( foundation.Database, api, dataSource, foundation.TimeService, foundation.AnalyticsService, foundation.LastTimeUsageStorage, foundation.Scheduler, foundation.StopwatchProvider); ITogglDataSource createDataSource(ITogglApi api) { var dataSource = new TogglDataSource( api, foundation.Database, foundation.TimeService, createSyncManager(api), foundation.AnalyticsService) .RegisterServices(); Mvx.RegisterSingleton <ITogglApi>(api); Mvx.ConstructAndRegisterSingleton <IInteractorFactory, InteractorFactory>(); Mvx.ConstructAndRegisterSingleton <IAutocompleteProvider, AutocompleteProvider>(); foundation.SyncErrorHandlingService.HandleErrorsOf(dataSource.SyncManager); return(dataSource); } var userAccessManager = new UserAccessManager(foundation.ApiFactory, foundation.Database, foundation.GoogleService, foundation.ShortcutCreator, foundation.PrivateSharedStorageService, createDataSource); Mvx.RegisterSingleton <IUserAccessManager>(userAccessManager); foundation.BackgroundSyncService.SetupBackgroundSync(userAccessManager); foundation.AutomaticSyncingService.SetupAutomaticSync(userAccessManager); }
public async Task DoesNotShowTheUnauthorizedAccessViewIfUsersApiTokenChanged() { var oldApiToken = Guid.NewGuid().ToString(); var newApiToken = Guid.NewGuid().ToString(); var user = Substitute.For <IThreadSafeUser>(); var dataSource = Substitute.For <ITogglDataSource>(); var userSource = Substitute.For <ISingletonDataSource <IThreadSafeUser> >(); user.ApiToken.Returns(newApiToken); userSource.Current.Returns(Observable.Return(user)); dataSource.User.Returns(userSource); UserAccessManager.GetDataSourceIfLoggedIn().Returns(dataSource); AccessRestrictionStorage.IsUnauthorized(Arg.Is(oldApiToken)).Returns(true); AccessRestrictionStorage.IsApiOutdated().Returns(false); AccessRestrictionStorage.IsClientOutdated().Returns(false); await Task.Run(() => AppStart.Start()); await NavigationService.Received().ForkNavigate <MainTabBarViewModel, MainViewModel>(); }
public void ReturnsFlaseWhenIsLoading() { var observer = TestScheduler.CreateObserver <bool>(); ViewModel.SignupEnabled.Subscribe(observer); ViewModel.SetEmail(ValidEmail); ViewModel.SetPassword(ValidPassword); NavigationService.Navigate <TermsOfServiceViewModel, bool>().Returns(true); UserAccessManager .SignUp(Arg.Any <Email>(), Arg.Any <Password>(), Arg.Any <bool>(), Arg.Any <int>(), Arg.Any <string>()) .Returns(Observable.Never <ITogglDataSource>()); ViewModel.Signup.Execute(); TestScheduler.Start(); observer.Messages.AssertEqual( ReactiveTest.OnNext(2, true), ReactiveTest.OnNext(3, false) ); }
public void SetsApiErrorWhenReceivesApiException(NonEmptyString errorString) { ViewModel.Email.OnNext(ValidEmail); var exception = new ApiException( Substitute.For <IRequest>(), Substitute.For <IResponse>(), errorString.Get); UserAccessManager .ResetPassword(Arg.Any <Email>()) .Returns(Observable.Throw <string>(exception)); var observer = TestScheduler.CreateObserver <string>(); ViewModel.ErrorMessage.Subscribe(observer); ViewModel.Reset.Execute(); TestScheduler.Start(); observer.Messages.Last().Value.Value.Should().Be(exception.LocalizedApiErrorMessage); }
public async Task ClosesTheViewModelAfterFourSecondDelay() { var testScheduler = new TestScheduler(); var timeService = new TimeService(testScheduler); var viewModel = new ForgotPasswordViewModel( timeService, UserAccessManager, AnalyticsService, SchedulerProvider, NavigationService, RxActionFactory); viewModel.AttachView(View); viewModel.Email.OnNext(ValidEmail); UserAccessManager .ResetPassword(Arg.Any <Email>()) .Returns(Observable.Return("Great success")); viewModel.Reset.Execute(); TestScheduler.Start(); testScheduler.AdvanceBy(TimeSpan.FromSeconds(4).Ticks); var result = await viewModel.Result; result.Email.Should().BeEquivalentTo(ValidEmail); }
public void SetsErrorMessageToEmptyString() { ViewModel.Email.OnNext(ValidEmail); UserAccessManager .ResetPassword(Arg.Any <Email>()) .Returns(Observable.Throw <string>(new Exception())); var observer = TestScheduler.CreateObserver <string>(); ViewModel.ErrorMessage.Subscribe(observer); ViewModel.Reset.Execute(); TestScheduler.Start(); UserAccessManager .ResetPassword(Arg.Any <Email>()) .Returns(Observable.Never <string>()); ViewModel.Reset.Execute(); TestScheduler.Start(); observer.Messages.Should().HaveCount(3); observer.LastEmittedValue().Should().BeEmpty(); }
protected AppStartTest() { var api = Substitute.For <ITogglApi>(); UserAccessManager.UserLoggedIn.Returns(Observable.Return(api)); var dependencyContainer = new TestDependencyContainer { MockTimeService = TimeService, MockUserAccessManager = UserAccessManager, MockNavigationService = NavigationService, MockOnboardingStorage = OnboardingStorage, MockAccessRestrictionStorage = AccessRestrictionStorage, MockSyncManager = Substitute.For <ISyncManager>(), MockInteractorFactory = Substitute.For <IInteractorFactory>(), MockBackgroundSyncService = Substitute.For <IBackgroundSyncService>() }; UserAccessManager.CheckIfLoggedIn().Returns(true); AppStart = new AppStart <OnboardingViewModel>(App, dependencyContainer); }
public void DoesNotDisplayAnErrorMessageWhenTheUserCancelsTheRequestOnTheGoogleService() { var hasErrorObserver = TestScheduler.CreateObserver <bool>(); ViewModel.HasError.Subscribe(hasErrorObserver); var errorTextObserver = TestScheduler.CreateObserver <string>(); ViewModel.ErrorMessage.Subscribe(errorTextObserver); UserAccessManager.SignUpWithGoogle(Arg.Any <bool>(), Arg.Any <int>(), Arg.Any <string>()).Returns( Observable.Throw <ITogglDataSource>(new GoogleLoginException(true))); ViewModel.GoogleSignup.Execute(); TestScheduler.Start(); errorTextObserver.Messages.AssertEqual( ReactiveTest.OnNext(1, "") ); hasErrorObserver.Messages.AssertEqual( ReactiveTest.OnNext(2, false) ); }
public void ClosesTheViewModelAfterFourSecondDelay() { var testScheduler = new TestScheduler(); var timeService = new TimeService(testScheduler); var viewModel = new ForgotPasswordViewModel( timeService, UserAccessManager, AnalyticsService, NavigationService, RxActionFactory); viewModel.Email.OnNext(ValidEmail); UserAccessManager .ResetPassword(Arg.Any <Email>()) .Returns(Observable.Return("Great success")); viewModel.Reset.Execute(); TestScheduler.Start(); testScheduler.AdvanceBy(TimeSpan.FromSeconds(4).Ticks); NavigationService .Received() .Close( viewModel, Arg.Is <EmailParameter>( parameter => parameter.Email.Equals(ValidEmail))); }
public static bool CheckPrivilegedAccess(int userId, int queueId) { return(UserAccessManager.CheckPrivilegedAccess(userId, queueId)); }
public void CallsTheUserAccessManager() { ViewModel.GoogleLogin(); UserAccessManager.Received().LoginWithGoogle(); }
public OrderItemController() { orderManager = new OrderManager(); productManager = new ProductManager(); userAccessManager = new UserAccessManager(); }
private void prepareException(Exception exception) { UserAccessManager .SignUp(Arg.Any <Email>(), Arg.Any <Password>(), Arg.Any <bool>(), Arg.Any <int>(), Arg.Any <string>()) .Returns(Observable.Throw <ITogglDataSource>(exception)); }
public CategoryController() { categoryManager = new CategoryManager(); userAccessManager = new UserAccessManager(); }
protected AppStartTest() { AppStart = new AppStart <OnboardingViewModel>(App, TimeService, UserAccessManager, OnboardingStorage, NavigationService, AccessRestrictionStorage); DataSource.SyncManager.Returns(SyncManager); UserAccessManager.GetDataSourceIfLoggedIn().Returns(DataSource); }