public object Login([FromBody] AuthUserCommand command)
        {
            dynamic user = _handler.Handle(command);

            if (user.Status)
            {
                string         id       = user.Data.Id.ToString();
                string         name     = (string)user.Data.Name;
                string         email    = (string)user.Data.Email;
                ClaimsIdentity identity = new ClaimsIdentity(
                    new GenericIdentity(name, "Name"),
                    new[] {
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")),
                    new Claim(JwtRegisteredClaimNames.NameId, id),
                    new Claim(JwtRegisteredClaimNames.UniqueName, name),
                    new Claim(JwtRegisteredClaimNames.Email, email)
                }
                    );
                DateTime createDate    = DateTime.Now;
                DateTime expireDate    = createDate + TimeSpan.FromHours(1);
                var      handler       = new JwtSecurityTokenHandler();
                var      securityToken = handler.CreateToken(new SecurityTokenDescriptor
                {
                    Issuer             = _tokenConfigurations.Issuer,
                    Audience           = _tokenConfigurations.Audience,
                    SigningCredentials = _signingConfigurations.Credentials,
                    Subject            = identity,
                    NotBefore          = createDate,
                    Expires            = expireDate
                });
                var token = handler.WriteToken(securityToken);
                return(new
                {
                    status = true,
                    created = createDate.ToString("yyyy-MM-dd HH:mm:ss"),
                    expiration = expireDate.ToString("yyyy-MM-dd HH:mm:ss"),
                    accessToken = token,
                    message = "Seja Bem-Vindo",
                    user = user
                });
            }
            else
            {
                return(new
                {
                    status = false,
                    message = "Usuário não encontrado, por favor verifique se os dados estão corretos"
                });
            }
        }
        public async Task AuthHandlerReturnsSameDetails()
        {
            // ARRANGE
            var httpMessageHandlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            TestUtils.GetProtectedHttpResponseMessageMock(httpMessageHandlerMock)
            .Verifiable();

            var httpClient = TestUtils.GetMockedClient(httpMessageHandlerMock);

            var currentTimeStamp    = DateTime.Now;
            var existingAuthDetails = new AuthDetails {
                Token = "OLD_TOKEN", Timestamp = currentTimeStamp
            };

            // ACT
            var result = await subject.Handle(existingAuthDetails, httpClient);

            // ASSERT
            result.Token.Should().Be("OLD_TOKEN");
            result.Timestamp.Should().Be(currentTimeStamp);

            httpMessageHandlerMock.Invocations.Should().HaveCount(0);
        }