コード例 #1
0
        public void GetUserByEmail_ReturnsOk_WhenUserIsFound()
        {
            //Arrange
            GetUserByEmailRequest request = new GetUserByEmailRequest(fixture.Create <string>());

            User user = fixture.Create <User>();

            mediator.Send(Arg.Is <GetUserByEmailRequest>(r => r.Email == request.Email)).Returns(user);

            //Act
            Task <ActionResult> task = controller.GetUserByEmail(request);

            task.Wait();

            ActionResult result = task.Result;

            //Assert
            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            OkObjectResult okResult = result as OkObjectResult;

            okResult.StatusCode.Should().Be(StatusCodes.Status200OK);
            okResult.Value.Should().NotBeNull();
            okResult.Value.Should().BeOfType <User>();

            User value = okResult.Value as User;

            value.Should().Be(user);
        }
コード例 #2
0
ファイル: UserService.cs プロジェクト: namtel-hp/Sombra
        public async Task <bool> ForgotPassword(ForgotPasswordViewModel forgotPasswordViewModel)
        {
            var forgotPasswordRequest = new ForgotPasswordRequest(forgotPasswordViewModel.EmailAddress);
            var getUserByEmailRequest = new GetUserByEmailRequest {
                EmailAddress = forgotPasswordViewModel.EmailAddress
            };

            var clientInfo   = UserAgentParser.Extract(_userAgent);
            var userResponse = await _bus.RequestAsync(getUserByEmailRequest);

            var name = Helpers.GetUserName(userResponse.User);
            var forgotPasswordResponse = await _bus.RequestAsync(forgotPasswordRequest);

            var actionurl = $"{_baseUrl}/Account/ChangePassword/{forgotPasswordResponse.Secret}";

            var emailTemplateRequest = new EmailTemplateRequest(EmailType.ForgotPassword);
            var response             = await _bus.RequestAsync(emailTemplateRequest);

            var template = TemplateContentBuilder.Build(response.Template,
                                                        TemplateContentBuilder.CreateForgotPasswordTemplateContent(name, actionurl, clientInfo.OperatingSystem, clientInfo.BrowserName));

            var email = new EmailEvent(new EmailAddress("noreply", "*****@*****.**"), new EmailAddress(name, forgotPasswordViewModel.EmailAddress), "Wachtwoord vergeten ikdoneer.nu",
                                       template, true);

            await _bus.PublishAsync(email);

            return(true);
        }
コード例 #3
0
        public void GetUserByEmail_CallsRepository_ReturnsUser()
        {
            //Arrange
            var email = fixture.Create <string>();

            var user = new User(
                Guid.NewGuid(),
                fixture.Create <string>(),
                fixture.Create <string>(),
                fixture.Create <string>(),
                email,
                fixture.Create <DateTime>()
                );

            userRepository.GetByEmail(Arg.Is(email)).Returns(user);

            GetUserByEmailRequest request = new GetUserByEmailRequest(email);

            CancellationToken token = new CancellationToken();

            //Act
            Task <User> task = handler.Handle(request, token);

            task.Wait();

            User result = task.Result;

            //Assert
            userRepository.Received(1).GetByEmail(Arg.Is(email));

            result.Should().NotBeNull();
            result.Should().BeEquivalentTo(user);
        }
コード例 #4
0
        public void Constructor_SetsEmail()
        {
            //Arrange
            var email = fixture.Create <string>();

            //Act
            var request = new GetUserByEmailRequest(email);

            //Assert
            request.Email.Should().Be(email);
        }
コード例 #5
0
        public async Task <UserEntity> GetUserByEmail(GetUserByEmailRequest request)
        {
            var sqlStoredProc = "sp_user_get_by_email";

            var response = await DapperAdapter.GetFromStoredProcAsync <UserEntity>
                           (
                storedProcedureName : sqlStoredProc,
                parameters : request,
                dbconnectionString : DefaultConnectionString,
                sqltimeout : DefaultTimeOut,
                dbconnection : _connection,
                dbtransaction : _transaction);

            return(response.FirstOrDefault());
        }
コード例 #6
0
        public async Task GetUserByEmailRequestHandler_Handle_Returns_User()
        {
            UserContext.OpenInMemoryConnection();

            try
            {
                GetUserByEmailResponse response;
                var request = new GetUserByEmailRequest()
                {
                    EmailAddress = "*****@*****.**"
                };

                using (var context = UserContext.GetInMemoryContext())
                {
                    context.Users.Add(new User
                    {
                        EmailAddress = "*****@*****.**",
                        FirstName    = "john",
                        LastName     = "doe"
                    });

                    context.SaveChanges();
                }

                using (var context = UserContext.GetInMemoryContext())
                {
                    var handler = new GetUserByEmailRequestHandler(context, AutoMapperHelper.BuildMapper(new MappingProfile()));
                    response = await handler.Handle(request);
                }

                using (var context = UserContext.GetInMemoryContext())
                {
                    Assert.IsTrue(response.UserExists);
                    Assert.AreEqual(context.Users.Single().FirstName, response.User.FirstName);
                    Assert.AreEqual(context.Users.Single().LastName, response.User.LastName);
                }
            }
            finally
            {
                UserContext.CloseInMemoryConnection();
            }
        }
コード例 #7
0
        public void GetUserByEmail_ReturnsNotFound_WhenUserIsNotFound()
        {
            //Arrange
            GetUserByEmailRequest request = new GetUserByEmailRequest(fixture.Create <string>());

            //Act
            Task <ActionResult> task = controller.GetUserByEmail(request);

            task.Wait();

            ActionResult result = task.Result;

            //Assert
            result.Should().NotBeNull();
            result.Should().BeOfType <NotFoundResult>();

            NotFoundResult notFoundResult = result as NotFoundResult;

            notFoundResult.StatusCode.Should().Be(StatusCodes.Status404NotFound);
        }
コード例 #8
0
ファイル: UserController.cs プロジェクト: jogendron/Budget
        public async Task <ActionResult> GetUserByEmail([FromRoute] GetUserByEmailRequest request)
        {
            ActionResult response;

            try
            {
                User user = await mediator.Send(request);

                if (user != null)
                {
                    response = Ok(user);
                }
                else
                {
                    response = NotFound();
                }
            }
            catch
            {
                response = new StatusCodeResult(StatusCodes.Status500InternalServerError);
            }

            return(response);
        }
コード例 #9
0
        public void GetUserByEmail_ReturnsInternalError_WhenExceptionOccurs()
        {
            //Arrange
            GetUserByEmailRequest request = new GetUserByEmailRequest(fixture.Create <string>());

            mediator.When(m => m.Send(Arg.Any <GetUserByEmailRequest>())).Do(
                args => throw new Exception()
                );

            //Act
            Task <ActionResult> task = controller.GetUserByEmail(request);

            task.Wait();

            ActionResult result = task.Result;

            //Assert
            result.Should().NotBeNull();
            result.Should().BeOfType <StatusCodeResult>();

            StatusCodeResult statusCodeResult = result as StatusCodeResult;

            statusCodeResult.StatusCode.Should().Be(StatusCodes.Status500InternalServerError);
        }