Exemplo n.º 1
0
        public async Task <HttpResponseMessage> ActivateAsync(dynamic model)
        {
            await _accountService.ActivateAsync(model);

            return(Request.OK("Activation successful."));
        }
Exemplo n.º 2
0
        public async Task TestWithInvalidUserRequestAsync()
        {
            // arrange
            var obj = new {
                username = "******",
                password = "******"
            };

            var repository            = new Mock <IRepository>();
            var settings              = new ApplicationSettings();
            var validationService     = new Mock <ValidationService>(repository.Object, settings);
            var administrationService = new Mock <AdministrationService>(repository.Object, validationService.Object);
            var mailService           = new Mock <MailService>(repository.Object);

            var request = new UserRequest {
                Id          = 1,
                Username    = obj.username,
                RequestType = UserRequestType.ResetPassword
            };

            repository
            .Setup(x => x.GetAsync <UserRequest>(1))
            .ReturnsAsync(request);

            var credentials = JObject.FromObject(obj);

            string q;

            using (var algorithm = TripleDES.Create()) {
                var ciphertext = CryptoUtilities.Encrypt(credentials.ToString(), algorithm.Key, algorithm.IV);

                q = 1 + ":" + ciphertext;
            }

            dynamic model = JObject.FromObject(new {
                q
            });

            var accountService = new AccountService(repository.Object, validationService.Object, administrationService.Object, mailService.Object);

            // act
            var exception = await TestUtilities.ThrowsAsync <ServiceException>(async() => await accountService.ActivateAsync(model));

            // assert
            Assert.Equal(ServiceReason.InvalidUserRequest, exception.Reason);

            repository.Verify(x => x.GetAsync <UserRequest>(It.IsAny <int>()), Times.Once);
        }
Exemplo n.º 3
0
        public async Task TestDefaultBehaviorAsync()
        {
            // arrange
            var obj = new {
                username = "******"
            };

            var repository            = new Mock <IRepository>();
            var settings              = new ApplicationSettings();
            var validationService     = new Mock <ValidationService>(repository.Object, settings);
            var administrationService = new Mock <AdministrationService>(repository.Object, validationService.Object);
            var mailService           = new Mock <MailService>(repository.Object);

            var user = new User {
                Username = obj.username
            };

            var request = new UserRequest {
                Id          = 1,
                Username    = obj.username,
                RequestType = UserRequestType.Activation
            };

            var userSet = TestUtilities.CreateDbSetMock(new List <User> {
                user
            });

            repository
            .Setup(x => x.AsQueryable <User>())
            .Returns(userSet.Object);

            repository
            .Setup(x => x.GetAsync <User>(1))
            .ReturnsAsync(user);

            repository
            .Setup(x => x.GetAsync <UserRequest>(1))
            .ReturnsAsync(request);

            var password    = Guid.NewGuid().ToString();
            var credentials = JObject.FromObject(new {
                obj.username,
                password
            });

            string q;

            using (var algorithm = TripleDES.Create()) {
                request.Key      = algorithm.Key;
                request.IV       = algorithm.IV;
                request.Password = CryptoUtilities.CreateHash(password);

                var ciphertext = CryptoUtilities.Encrypt(credentials.ToString(), algorithm.Key, algorithm.IV);

                q = 1 + ":" + ciphertext;
            }

            dynamic model = JObject.FromObject(new {
                q
            });

            var accountService = new AccountService(repository.Object, validationService.Object, administrationService.Object, mailService.Object);

            // act
            await TestUtilities.DoesNotThrowAsync(async() => await accountService.ActivateAsync(model));

            // assert
            Assert.True(user.Enabled);

            repository.Verify(x => x.GetAsync <UserRequest>(It.IsAny <int>()), Times.Once);
            repository.Verify(x => x.AsQueryable <User>(), Times.Once);
            repository.Verify(x => x.UpdateAsync(user), Times.Once());
            repository.Verify(x => x.UpdateAsync(request), Times.Once());
        }
Exemplo n.º 4
0
        public async Task TestWithInvalidQueryAsync()
        {
            // arrange
            var repository            = new Mock <IRepository>();
            var settings              = new ApplicationSettings();
            var validationService     = new Mock <ValidationService>(repository.Object, settings);
            var administrationService = new Mock <AdministrationService>(repository.Object, validationService.Object);
            var mailService           = new Mock <MailService>(repository.Object);

            dynamic model = JObject.FromObject(new {
                q = "something invalid"
            });

            var accountService = new AccountService(repository.Object, validationService.Object, administrationService.Object, mailService.Object);

            // act
            var exception = await TestUtilities.ThrowsAsync <ServiceException>(async() => await accountService.ActivateAsync(model));

            // assert
            Assert.Equal(ServiceReason.InvalidUserRequest, exception.Reason);

            repository.Verify(x => x.GetAsync <UserRequest>(It.IsAny <int>()), Times.Never);
        }