public void Authorize_FailsWhenDataIsIncomplete()
        {
            _consumerMock.SetupGet(x => x.PrivateKey).Returns("privatekey");

            _consumerRepositoryMock.Setup(x => x.GetConsumerByPublicKey(It.IsAny<string>())).Returns(_consumerMock.Object);
            _signatureGeneratorFactoryMock.Setup(x => x.GetGenerator(It.IsAny<string>())).Returns(new HmacSha1SignatureGenerator());
            _requestMock.SetupGet(x => x.Form).Returns(new System.Collections.Specialized.NameValueCollection());

            var requestAuthorizer = new AuthorizeWebRequest(_signatureGeneratorFactoryMock.Object, _consumerRepositoryMock.Object);
            var authResult = requestAuthorizer.Authorize(_requestMock.Object);

            Assert.AreEqual(authResult, AuthorizationResult.MissingData);
        }
        public void Authorize_FailsWhenConsumerDoesntExist()
        {
            var publicKey = "publickey";
            var timestamp = DateTimeOffset.UtcNow.Ticks.ToString();
            var signature = "signature";
            var signatureMethod = SignatureGeneratorNames.HmacSha1;

            _consumerRepositoryMock.Setup(x => x.GetConsumerByPublicKey(It.IsAny<string>())).Returns<IConsumer>(null);
            _signatureGeneratorFactoryMock.Setup(x => x.GetGenerator(It.IsAny<string>())).Returns(new HmacSha1SignatureGenerator());
            _requestMock.SetupGet(x => x.Form).Returns(new System.Collections.Specialized.NameValueCollection { { AuthorizationTokens.PublicKey, publicKey }, { AuthorizationTokens.Signature, signature }, { AuthorizationTokens.SignatureMethod, signatureMethod }, { AuthorizationTokens.TimeStamp, timestamp } });

            var requestAuthorizer = new AuthorizeWebRequest(_signatureGeneratorFactoryMock.Object, _consumerRepositoryMock.Object);
            var authResult = requestAuthorizer.Authorize(_requestMock.Object);

            Assert.AreEqual(authResult, AuthorizationResult.NonExistantConsumer);
        }
        public void Authorize_FailsWhenTimestampIsInThefutre()
        {
            _signatureGeneratorFactoryMock.Setup(x => x.GetGenerator(It.IsAny<string>())).Returns(new HmacSha1SignatureGenerator());

            var publicKey = "publicKey";
            var timestamp = DateTimeOffset.UtcNow.AddHours(1).Ticks.ToString();
            var signatureMethod = SignatureGeneratorNames.HmacSha1;
            var privateKey = "privateKey";
            var signature = _signatureGeneratorFactoryMock.Object.GetGenerator(signatureMethod).Generate(privateKey, string.Join("&", publicKey, signatureMethod, timestamp));

            _consumerMock.SetupGet(x => x.PrivateKey).Returns(privateKey);

            _consumerRepositoryMock.Setup(x => x.GetConsumerByPublicKey(It.IsAny<string>())).Returns(_consumerMock.Object);

            var nvc = new NameValueCollection{
                { AuthorizationTokens.PublicKey, publicKey },
                { AuthorizationTokens.Signature, signature },
                { AuthorizationTokens.SignatureMethod, signatureMethod },
                { AuthorizationTokens.TimeStamp, timestamp } };

            _requestMock.SetupGet(x => x.Form).Returns(nvc);

            var requestAuthorizer = new AuthorizeWebRequest(_signatureGeneratorFactoryMock.Object, _consumerRepositoryMock.Object);
            var authResult = requestAuthorizer.Authorize(_requestMock.Object);

            Assert.AreEqual(authResult, AuthorizationResult.Expired);
        }