Exemplo n.º 1
0
        public async Task <ActionResult <User> > RefreshToken(RefreshToken.Command command)
        {
            command.RefreshToken = Request.Cookies["refreshToken"];
            var user = await Mediator.Send(command);

            SetTokenCookie(user.RefreshToken);
            return(user);
        }
        public async Task ShouldRefreshToken()
        {
            //Arrange command
            var command = new CreateToken.Command()
            {
                Email      = "*****@*****.**",
                Password   = "******",
                DeviceId   = "SMSNG45543",
                DeviceName = "DEVICE",
                Platform   = Platform.Web
            };
            var token = await _fixture.GetTokenAsync(command);

            //Arrange token request
            var request = new RefreshToken.Command()
            {
                RefreshToken = token.RefreshToken
            };
            // The endpoint or route of the controller action.
            var httpResponse = await _fixture.Client.PostAsJsonAsync("/api/tokens/refresh", request);

            _fixture.Client.DefaultRequestHeaders.Clear();

            // Must be successful.
            httpResponse.EnsureSuccessStatusCode();

            // Deserialize
            var stringResponse = await httpResponse.Content.ReadAsStringAsync();

            var refreshedToken = JsonConvert.DeserializeObject <RefreshToken.Result>(stringResponse);
            var newToken       = new JwtSecurityTokenHandler().ReadToken(refreshedToken.AccessToken) as JwtSecurityToken;

            // get custom claims
            var userIdFromToken = newToken.Claims.First(claim => claim.Type == "sub").Value;
            var loginFromToken  = newToken.Claims.First(claim => claim.Type == "unique_name").Value;

            //get user data
            var user = _fixture.db.Users.FirstOrDefault(u => u.Id == new Guid(userIdFromToken));

            //Assert
            user.Id.ShouldBe(new Guid(userIdFromToken));
            user.Email.ShouldBe(command.Email);
            user.Login.ShouldBe(loginFromToken);
        }
Exemplo n.º 3
0
 public async Task <ActionResult <UserDto> > RefreshToken(RefreshToken.Command command) =>
 AppendUserRefreshTokenCookie(await this.Mediator.Send(command with {