Ejemplo n.º 1
0
            public void AndStopRetryingAfterASuccessFullLoginApiCall()
            {
                var observer = TestScheduler.CreateObserver <ITogglDataSource>();
                var userIsMissingApiTokenException = new UserIsMissingApiTokenException(Substitute.For <IRequest>(), Substitute.For <IResponse>());

                Api.User.Get().Returns(Observable.Throw <IUser>(userIsMissingApiTokenException), Observable.Return(User));
                TestScheduler.Start();

                LoginManager.Login(Email, Password).Subscribe(observer);
                TestScheduler.AdvanceBy(TimeSpan.FromDays(1).Ticks);

                Api.User.Received(2).Get();
            }
Ejemplo n.º 2
0
            public void AfterAWhileWhenTheApiThrowsUserIsMissingApiTokenException(int seconds, int apiCalls)
            {
                var userIsMissingApiTokenException = new UserIsMissingApiTokenException(Substitute.For <IRequest>(), Substitute.For <IResponse>());

                Api.User.Get().Returns(Observable.Throw <IUser>(userIsMissingApiTokenException));
                var observer = TestScheduler.CreateObserver <ITogglDataSource>();

                TestScheduler.Start();

                LoginManager.Login(Email, Password).Subscribe(observer);
                TestScheduler.AdvanceBy(TimeSpan.FromSeconds(seconds).Ticks);

                Api.User.Received(apiCalls).Get();
            }
Ejemplo n.º 3
0
            public void LoggingInWhenReceivingUserIsMissingApiTokenExceptionAndThenForwardTheErrorOnTheThirdFailure()
            {
                var userIsMissingApiTokenException = new UserIsMissingApiTokenException(Substitute.For <IRequest>(), Substitute.For <IResponse>());

                Api.User.Get().Returns(Observable.Throw <IUser>(userIsMissingApiTokenException));
                var observer = TestScheduler.CreateObserver <ITogglDataSource>();

                TestScheduler.Start();

                LoginManager.Login(Email, Password).Subscribe(observer);
                TestScheduler.AdvanceBy(TimeSpan.FromSeconds(20).Ticks);

                Api.User.Received(3).Get();
                observer.Messages.Single().Value.Exception.Should().BeOfType <UserIsMissingApiTokenException>();
            }
Ejemplo n.º 4
0
            public void WhenReceivingUserIsMissingApiTokenExceptionOrThrowOtherExceptions()
            {
                var userIsMissingApiTokenException = new UserIsMissingApiTokenException(Substitute.For <IRequest>(), Substitute.For <IResponse>());
                var serverErrorException           = Substitute.For <ServerErrorException>(Substitute.For <IRequest>(), Substitute.For <IResponse>(), "Some Exception");

                Api.User.Get().Returns(Observable.Throw <IUser>(userIsMissingApiTokenException), Observable.Throw <IUser>(serverErrorException));
                var observer = TestScheduler.CreateObserver <ITogglDataSource>();

                TestScheduler.Start();

                LoginManager.Login(Email, Password).Subscribe(observer);
                TestScheduler.AdvanceBy(TimeSpan.FromSeconds(20).Ticks);

                observer.Messages.Single().Value.Exception.Should().Be(serverErrorException);
                Api.User.Received(2).Get();
            }
Ejemplo n.º 5
0
            public async Task TracksMissingApiToken()
            {
                var userIsMissingApiTokenException = new UserIsMissingApiTokenException(Substitute.For <IRequest>(), Substitute.For <IResponse>());

                Api.User.GetWithGoogle().Returns(Observable.Throw <IUser>(userIsMissingApiTokenException));

                try
                {
                    await LoginManager.LoginWithGoogle();
                }
                catch
                {
                }

                AnalyticsService.UserIsMissingApiToken.Received().Track(Arg.Is(LoginSignupAuthenticationMethod.LoginGoogle));
            }
Ejemplo n.º 6
0
            public async Task TracksMissingApiToken()
            {
                var userIsMissingApiTokenException = new UserIsMissingApiTokenException(Substitute.For <IRequest>(), Substitute.For <IResponse>());

                Api.User.SignUp(Email, Password, TermsAccepted, CountryId).Returns(Observable.Throw <IUser>(userIsMissingApiTokenException));

                try
                {
                    await LoginManager.SignUp(Email, Password, TermsAccepted, CountryId);
                }
                catch
                {
                }

                AnalyticsService.UserIsMissingApiToken.Received().Track(Arg.Is(LoginSignupAuthenticationMethod.SignUp));
            }
Ejemplo n.º 7
0
            public void OnceAndResumesTryingToLoginAfterAWhileWhenTheApiThrowsUserIsMissingApiTokenException(int seconds, int loginApiCalls)
            {
                var userIsMissingApiTokenException = new UserIsMissingApiTokenException(Substitute.For <IRequest>(), Substitute.For <IResponse>());

                GoogleService.GetAuthToken().Returns(Observable.Return("sometoken"));
                Api.User.SignUpWithGoogle(Arg.Any <string>()).Returns(Observable.Throw <IUser>(userIsMissingApiTokenException));
                Api.User.GetWithGoogle().Returns(Observable.Throw <IUser>(userIsMissingApiTokenException));
                var observer = TestScheduler.CreateObserver <ITogglDataSource>();

                TestScheduler.Start();

                LoginManager.SignUpWithGoogle().Subscribe(observer);
                TestScheduler.AdvanceBy(TimeSpan.FromSeconds(seconds).Ticks);

                Api.User.Received(1).SignUpWithGoogle(Arg.Any <string>());
                Api.User.Received(loginApiCalls).GetWithGoogle();
            }
Ejemplo n.º 8
0
            public void AndWhenReceivingUserIsMissingApiTokenExceptionWillResumeTryingToLoginThreeTimesBeforeThrowingIt()
            {
                var userIsMissingApiTokenException = new UserIsMissingApiTokenException(Substitute.For <IRequest>(), Substitute.For <IResponse>());

                Api.User.SignUp(Email, Password, TermsAccepted, CountryId).Returns(Observable.Throw <IUser>(userIsMissingApiTokenException));
                Api.User.Get().Returns(Observable.Throw <IUser>(userIsMissingApiTokenException));
                var observer = TestScheduler.CreateObserver <ITogglDataSource>();

                TestScheduler.Start();

                LoginManager.SignUp(Email, Password, TermsAccepted, CountryId).Subscribe(observer);
                TestScheduler.AdvanceBy(TimeSpan.FromSeconds(20).Ticks);

                Api.User.Received(1).SignUp(Email, Password, TermsAccepted, CountryId);
                Api.User.Received(3).Get();
                observer.Messages.Single().Value.Exception.Should().BeOfType <UserIsMissingApiTokenException>();
            }
Ejemplo n.º 9
0
            public void AndWhenReceivingUserIsMissingApiTokenExceptionWillResumeTryingToLoginWithGoogleThreeTimesBeforeThrowingIt()
            {
                var userIsMissingApiTokenException = new UserIsMissingApiTokenException(Substitute.For <IRequest>(), Substitute.For <IResponse>());

                GoogleService.GetAuthToken().Returns(Observable.Return("sometoken"));
                Api.User.SignUpWithGoogle(Arg.Any <string>()).Returns(Observable.Throw <IUser>(userIsMissingApiTokenException));
                Api.User.GetWithGoogle().Returns(Observable.Throw <IUser>(userIsMissingApiTokenException));
                var observer = TestScheduler.CreateObserver <ITogglDataSource>();

                TestScheduler.Start();

                LoginManager.SignUpWithGoogle().Subscribe(observer);
                TestScheduler.AdvanceBy(TimeSpan.FromSeconds(20).Ticks);

                Api.User.Received(1).SignUpWithGoogle(Arg.Any <string>());
                Api.User.Received(3).GetWithGoogle();
                observer.Messages.Single().Value.Exception.Should().BeOfType <UserIsMissingApiTokenException>();
            }