public void IfTokenValidationFailsNullIsReturned()
        {
            // arrange
            var          fixture = new ValidateUserFixture();
            const string token   = "blah";

            fixture.OAuthTokenValidatorMock
            .Setup(t => t.ValidateToken(token))
            .Throws <Exception>();

            var sut = fixture.Instance;

            // act
            var result = sut.ValidateUser(token);

            // assert
            result.Should().Be(null);
        }
        public void WithValidTokenClaimsPrincipleIsConstructedCorrectly()
        {
            // arrange
            const string nameClaimKey       = "Username";
            const string roleClaimKey       = "Role";
            const string username           = "******";
            const string role               = "Tester";
            const string authType           = "Token";
            var          fixture            = new ValidateUserFixture();
            var          usernameClaimDummy = new Claim(nameClaimKey, username);
            var          roleClaimDummy     = new Claim(roleClaimKey, role);

            var token = fixture.TokenGenerator.GenerateToken(
                new ClaimsIdentity(new List <Claim> {
                usernameClaimDummy, roleClaimDummy
            }));

            fixture.OAuthTokenValidatorConfigurationMock
            .Setup(t => t.ClaimRepresentingUsername)
            .Returns(nameClaimKey);
            fixture.OAuthTokenValidatorConfigurationMock
            .Setup(t => t.ClaimRepresentingRole)
            .Returns(roleClaimKey);
            fixture.OAuthTokenValidatorConfigurationMock
            .Setup(t => t.AuthenticationType)
            .Returns(authType);
            fixture.OAuthTokenValidatorMock
            .Setup(t => t.ValidateToken(token))
            .Returns(new JwtSecurityToken(token));

            var sut = fixture.Instance;

            // act
            var result = sut.ValidateUser(token);

            // assert
            result.Identity.Name.Should().Be(username);
            result.IsInRole(role).Should().BeTrue();
            result.Identity.IsAuthenticated.Should().BeTrue();
        }