public void ShouldCreateInvalidAuthorizationRequest()
        {
            var managerFactory = new DigestAuthenticationManagerFactoryNonceValidator(repository);
             var manager = managerFactory.Create();
             Message testMessage = TestResources.CreateMessage(TestResources.IpAddress, 120);
             using (repository.Record())
             {
            var ipAddressExtractor = managerFactory.IpAddressExtractor;
            string ipAddress;
            ipAddressExtractor.Expect(extractor => extractor.TryExtractIpAddress(testMessage, out ipAddress)).Return(true).OutRef(TestResources.IpAddress);
            ResponseMessageFactory responseMessageFactory = managerFactory.Factory;
            DigestHeaderFactory digestHeaderGenerator = managerFactory.DigestHeaderGenerator;
            DigestHeader digestHeader = TestResources.CreateHeader();
            digestHeaderGenerator.Expect(headerGenerator => headerGenerator.Generate(TestResources.IpAddress)).Return(digestHeader);
            responseMessageFactory.Expect(factory => factory.CreateInvalidAuthorizationMessage(digestHeader));
             }

             using (repository.Playback())
             {
            manager.CreateInvalidAuthenticationRequest(testMessage);
             }
             repository.VerifyAll();
        }
        public void ShouldValidateNonceFromHeader()
        {
            var managerFactory = new DigestAuthenticationManagerFactoryNonceValidator(repository);
             var manager = managerFactory.Create();
             Message testMessage = TestResources.CreateMessage();

             using (repository.Record())
             {
            DigestHeader digestHeader;
            DigestHeaderExtractor digestHeaderExtractor = managerFactory.DigestHeaderExtractor;
            digestHeaderExtractor.Expect(digestExtractor => digestExtractor.TryExtract(null, out digestHeader)).IgnoreArguments().Return(true).OutRef(TestResources.CreateHeader());
            string extractedIpAddress;
            IPAddressExtractor ipAddressExtractor = managerFactory.IpAddressExtractor;
            ipAddressExtractor.Expect(extractor => extractor.TryExtractIpAddress(testMessage, out extractedIpAddress)).
               Return(true).OutRef(TestResources.IpAddress);

            NonceValidator nonceValidator = managerFactory.NonceValidator;
            nonceValidator.Expect(validator => validator.Validate(TestResources.GeneratedValidNonce, TestResources.IpAddress)).Return(true);
            nonceValidator.Expect(validator => validator.IsStale(TestResources.GeneratedValidNonce)).Return(false);
             }

             using (repository.Playback())
             {
            bool result = manager.AuthenticateRequest(testMessage);
            Assert.That(result, Is.False);
             }
             repository.VerifyAll();
        }
        public void ShouldThrowWhenMessageDoesNotContainIPAddress()
        {
            var managerFactory = new DigestAuthenticationManagerFactoryNonceValidator(repository);
             var manager = managerFactory.Create();
             Message testMessage = TestResources.CreateMessage();
             using (repository.Record())
             {
            var ipAddressExtractor = managerFactory.IpAddressExtractor;
            string ipAddress;
            ipAddressExtractor.Expect(extractor => extractor.TryExtractIpAddress(testMessage, out ipAddress)).Return(false);
             }

             using (repository.Playback())
             {
            manager.CreateInvalidAuthenticationRequest(testMessage);
             }
             repository.VerifyAll();
        }