Ejemplo n.º 1
0
        public async Task GenerateTokenEmailFail()
        {
            const string password = "******";
            const string email    = "*****@*****.**";
            AuthToken    token;

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var sut = ManagerTestHelper.GetAuthManager(context);

                var userManager = ManagerTestHelper.GetUserManager(context, sut);
                await userManager.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(0), true);

                await userManager.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(1, email, password), true);

                await userManager.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(2), true);

                await context.SaveChangesAsync();

                token = await sut.GenerateTokenAsync(new TokenRequest
                {
                    DeviceId = "deviceId",
                    Email    = "*****@*****.**",
                    Password = password
                });
            }

            Assert.IsNull(token);
        }
Ejemplo n.º 2
0
        public async Task GetAdminQuizList()
        {
            List <Quiz> result;

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var logManager  = Mock.Of <ILogManager>();
                var userManager = ManagerTestHelper.GetUserManager(context, Mock.Of <IAuthManager>(), logManager);
                var sut         = new QuizManager(context, new QuizAttemptManager(context, Mock.Of <IQuestionManager>(), logManager), logManager);
                var quiz        = new Quiz
                {
                    Title              = "title",
                    Intro              = "intro",
                    TimeConstraint     = true,
                    TimeLimitInSeconds = 40,
                    AvailableTo        = DateTime.Now.AddDays(1)
                };

                var userId = await userManager.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(0), true);

                await sut.InsertQuizInternalAsync(userId, ManagerTestHelper.CreateQuiz(0));

                await sut.InsertQuizInternalAsync(userId, ManagerTestHelper.CreateQuiz(1));

                await context.SaveChangesAsync();

                result = await sut.GetAdminQuizList(userId);
            }

            Assert.AreEqual(2, result.Count);
        }
Ejemplo n.º 3
0
        public async Task SendAccountVerificationEmailUserNotFound()
        {
            bool         result;
            const string password         = "******";
            const string email            = "*****@*****.**";
            const string nonExistingEmail = "*****@*****.**";
            OneTimeToken token;

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var sut = ManagerTestHelper.GetUserManager(context, Mock.Of <IAuthManager>());

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(0), true);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(1, email, password), false);

                await context.SaveChangesAsync();

                result = await sut.SendAccountVerificationEmail(nonExistingEmail);

                token = await context.OneTimeTokens.FirstOrDefaultAsync(t => t.Email == nonExistingEmail && t.TokenType == (byte)OneTimeTokenType.AccountVerification);
            }

            Assert.IsFalse(result);
            Assert.IsNull(token);
        }
Ejemplo n.º 4
0
        public async Task VerifyAccountAlreadyVerified()
        {
            AuthToken    result;
            const string password    = "******";
            const string email       = "*****@*****.**";
            const string tokenString = "token";

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var sut = ManagerTestHelper.GetUserManager(context, Mock.Of <IAuthManager>());

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(0), true);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(1, email, password), true);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(2), true);

                await ManagerTestHelper.AddOneTimeTokenAsync(context, email, OneTimeTokenType.AccountVerification, tokenString, true);

                await context.SaveChangesAsync();

                result = await sut.VerifyAccount(new OneTimeTokenRequest
                {
                    Token    = tokenString,
                    DeviceId = "device"
                });
            }

            Assert.IsNull(result);
        }
Ejemplo n.º 5
0
        public async Task InsertUserInvalidPassword()
        {
            GenericManagerResponse <AuthToken, InsertUserResponse> result;
            const string password = "******";
            const string email    = "*****@*****.**";

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var sut = ManagerTestHelper.GetUserManager(context, Mock.Of <IAuthManager>());

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(0), true);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(1, email, password), false);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(2), true);

                await context.SaveChangesAsync();

                result = await sut.InsertUserAsync(new Models.TransferObjects.User
                {
                    DeviceId   = "device",
                    FirstName  = "FirstName",
                    LastName   = "LastName",
                    Email      = "*****@*****.**",
                    PictureUrl = "",
                    Password   = "******"
                });
            }

            Assert.AreEqual(result.Response, InsertUserResponse.PasswordCriteriaNotSatisfied);
        }
Ejemplo n.º 6
0
        public async Task SendPasswordResetEmailVerified()
        {
            bool         result;
            OneTimeToken token;
            const string password = "******";
            const string email    = "*****@*****.**";

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var sut = ManagerTestHelper.GetUserManager(context, Mock.Of <IAuthManager>());

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(0), true);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(1, email, password), true);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(2), true);

                await context.SaveChangesAsync();

                result = await sut.SendPasswordResetEmail(email);

                token = await context.OneTimeTokens.FirstOrDefaultAsync(u => u.Email == email);
            }

            Assert.IsFalse(result);
            Assert.IsNull(token);
        }
Ejemplo n.º 7
0
        public async Task SendPasswordResetEmailCreatesToken()
        {
            const string password = "******";
            const string email    = "*****@*****.**";
            bool         result;
            OneTimeToken token;
            var          isLogManagerCalled = false;

            var logManager = new Mock <ILogManager>();

            logManager.Setup(c => c.AddLog(LogCategory.Email, It.IsAny <string>(), LogEventLevel.Information, It.IsAny <object[]>()))
            .Callback(() =>
            {
                isLogManagerCalled = true;
            });

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var sut = ManagerTestHelper.GetUserManager(context, Mock.Of <IAuthManager>(), logManager.Object);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(0), true);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(1, email, password), false);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(2), true);

                await context.SaveChangesAsync();

                result = await sut.SendPasswordResetEmail(email);

                token = await context.OneTimeTokens.FirstOrDefaultAsync(u => u.Email == email);
            }

            Assert.IsTrue(result);
            Assert.IsNotNull(token);
            Assert.IsTrue(isLogManagerCalled);
        }
Ejemplo n.º 8
0
        public async Task GetUserNull()
        {
            var logManager = new Mock <ILogManager>();
            int userId;

            Models.DbModels.User user = null;

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var sut = ManagerTestHelper.GetUserManager(context, Mock.Of <IAuthManager>(), logManager.Object);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(0), true);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(1), true);

                userId = await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(2), true);

                await context.SaveChangesAsync();

                user = await sut.GetUserAsync(userId + 1);
            }

            Assert.IsNull(user);
        }
Ejemplo n.º 9
0
        public async Task UpdatePasswordWithTokenUserNotFound()
        {
            bool         result;
            const string email       = "*****@*****.**";
            const string newPassword = "******";
            const string tokenString = "token";

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var sut = ManagerTestHelper.GetUserManager(context, Mock.Of <IAuthManager>());

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(0), true);

                await sut.InsertUserInternalAsync(ManagerTestHelper.CreateUserTo(1), true);

                await ManagerTestHelper.AddOneTimeTokenAsync(context, email, OneTimeTokenType.ForgotPassword, tokenString, true);

                await context.SaveChangesAsync();

                result = await sut.UpdatePassword(tokenString, newPassword);
            }

            Assert.IsFalse(result);
        }