public void GettingParameterValueForUserTwiceReturnsSameParameterValue()
        {
            var target = new OAuthSecurityStrategy(
                new InMemoryCryptographicParameterRepository(),
                TimeSpan.FromMinutes(2));
            var userId        = Guid.NewGuid().ToString();
            var parameterName = OAuth2ParameterEnum.State.EnumToString();

            var expected = target.CreateOrGetSecureParameter(
                userId,
                parameterName);

            Assert.NotNull(expected);

            var actual = target.CreateOrGetSecureParameter(
                userId,
                parameterName);

            Assert.Equal(expected, actual);
        }
        public void GettingParameterValueForUserTwiceAfterExpirationReturnsDifferentParameterValue()
        {
            var target = new OAuthSecurityStrategy(
                new InMemoryCryptographicParameterRepository(),
                TimeSpan.FromSeconds(1));
            var userId        = Guid.NewGuid().ToString();
            var parameterName = OAuth2ParameterEnum.State.EnumToString();

            var expected = target.CreateOrGetSecureParameter(
                userId,
                parameterName);

            Assert.NotNull(expected);
            Thread.Sleep(2000);

            var actual = target.CreateOrGetSecureParameter(
                userId,
                parameterName);

            Assert.NotEqual(expected, actual);
        }
        public void CheckingNoParameterValueWhenParameterValueExistsReturnsFalse()
        {
            var target = new OAuthSecurityStrategy(
                new InMemoryCryptographicParameterRepository(),
                TimeSpan.FromMinutes(2));
            var userId        = Guid.NewGuid().ToString();
            var parameterName = OAuth2ParameterEnum.State.EnumToString();

            target.CreateOrGetSecureParameter(
                userId,
                parameterName);

            var actual = target.IsSecureParameterValid(
                userId,
                parameterName,
                null);

            Assert.False(actual);
        }
        public void CheckingMatchingParameterValueReturnsTrue()
        {
            var target = new OAuthSecurityStrategy(
                new InMemoryCryptographicParameterRepository(),
                TimeSpan.FromMinutes(2));
            var userId        = Guid.NewGuid().ToString();
            var parameterName = OAuth2ParameterEnum.State.EnumToString();

            var expected = target.CreateOrGetSecureParameter(
                userId,
                parameterName);

            var actual = target.IsSecureParameterValid(
                userId,
                parameterName,
                expected);

            Assert.True(actual);
        }
        public void CheckingMatchingButExpiredParameterValueReturnsFalse()
        {
            var target = new OAuthSecurityStrategy(
                new InMemoryCryptographicParameterRepository(),
                TimeSpan.FromSeconds(1));
            var userId        = Guid.NewGuid().ToString();
            var parameterName = OAuth2ParameterEnum.State.EnumToString();

            var expected = target.CreateOrGetSecureParameter(
                userId,
                parameterName);

            Thread.Sleep(2000);

            var actual = target.IsSecureParameterValid(
                userId,
                parameterName,
                expected);

            Assert.False(actual);
        }