public async Task GetRefreshTokenAsync_Returns_Null()
        {
            //Arrange
            var service = new JwtTokenService(_fixture.MockUserManager.Object, _myRestaurantContext, _fixture.JwtSettings);

            //Act
            var result = await service.GetRefreshTokenAsync(d => d.Token == "token44444");

            //Assert
            result.Should().BeNull();
        }
        public async Task UpdateRefreshTokenAsync_Successfully_Updated()
        {
            //Arrange
            var refreshToken = "token4";
            var service      = new JwtTokenService(_fixture.MockUserManager.Object, _myRestaurantContext, _fixture.JwtSettings);

            //Act
            var dbToken = await service.GetRefreshTokenAsync(d => d.Token == refreshToken);

            dbToken !.Revoked   = DateTime.UtcNow;
            dbToken.RevokedByIp = "127.0.0.0";

            await service.UpdateRefreshTokenAsync(dbToken);

            var result = await service.GetRefreshTokenAsync(d => d.Token == refreshToken);

            //Assert
            result.Should().BeAssignableTo <RefreshToken>();
            result !.Token.Should().Be(refreshToken);
            result.RevokedByIp.Should().Be("127.0.0.0");
            result.IsActive.Should().Be(false);
        }
        public async Task ValidateRefreshToken_InValid_RefreshToken_Returns_False()
        {
            // Arrange
            var adminUser = _myRestaurantContext.Users.ToList().First(d => d.FirstName == "Admin");
            var service   = new JwtTokenService(_fixture.MockUserManager.Object, _myRestaurantContext, _fixture.JwtSettings);
            var dbToken   = await service.GetRefreshTokenAsync(d => d.Token == "token3");

            //Act
            var result = service.ValidateRefreshToken(dbToken !.Token);

            //Assert
            result.Should().Be(false);
        }
        public async Task ValidateRefreshToken_Expired_RefreshToken_Returns_False()
        {
            // Arrange
            var token     = "eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTUxMiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2MDk3NDc5ODAsImV4cCI6MTYwOTc2OTU4MCwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMDEiLCJhdWQiOiJodHRwczovL2xvY2FsaG9zdDo0NDMwMSJ9.kvX-GbWYLkgEY3Kl9RaRvESbNRkl8NDBxGNTcTFUGBpaLwSM8oWt9U6bKQNoPbcAbNui3ubvbCapkmc3SWVmfg";
            var adminUser = _myRestaurantContext.Users.ToList().First(d => d.FirstName == "Admin");
            var service   = new JwtTokenService(_fixture.MockUserManager.Object, _myRestaurantContext, _fixture.JwtSettings);
            var dbToken   = await service.GetRefreshTokenAsync(d => d.Token == token);

            //Act
            var result = service.ValidateRefreshToken(dbToken !.Token);

            //Assert
            result.Should().Be(false);
        }
        public async Task GetRefreshTokenAsync_Returns_RefreshToken()
        {
            //Arrange
            var token   = "eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTUxMiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2MDk3NDc5ODAsImV4cCI6MTYwOTc2OTU4MCwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMDEiLCJhdWQiOiJodHRwczovL2xvY2FsaG9zdDo0NDMwMSJ9.kvX-GbWYLkgEY3Kl9RaRvESbNRkl8NDBxGNTcTFUGBpaLwSM8oWt9U6bKQNoPbcAbNui3ubvbCapkmc3SWVmfg";
            var service = new JwtTokenService(_fixture.MockUserManager.Object, _myRestaurantContext, _fixture.JwtSettings);

            //Act
            var result = await service.GetRefreshTokenAsync(d => d.Token == token);

            //Assert
            result.Should().BeAssignableTo <RefreshToken>();
            result !.ReplacedByToken.Should().BeNull();
            result.Id.Should().NotBeEmpty();
            result.User.FirstName.Should().Be("Normal");
            result.Token.Should().Be(token);
            result.CreatedByIp.Should().Be("0.0.0.1");
            result.IsActive.Should().Be(false);
        }