public void Should_Generate_Response_Header_Based_On_Given_IPAddress()
        {
            var repository = new MockRepository();
             var nonceGenerator = repository.StrictMock<NonceGenerator>(null, null);
             using (repository.Record())
             {
            nonceGenerator.Expect(generator => generator.Generate(TestResources.IpAddress)).Return(TestResources.GeneratedValidNonce);
             }

             var digestHeaderGenerator = new DigestHeaderFactory(nonceGenerator, TestResources.Realm);
             using (repository.Playback())
             {
            DigestHeader digestHeader = digestHeaderGenerator.Generate(TestResources.IpAddress);
            Assert.That(digestHeader.Realm, Is.EqualTo(TestResources.Realm));
            Assert.That(digestHeader.Nonce, Is.EqualTo(TestResources.GeneratedValidNonce));
             }

             repository.VerifyAll();
        }
 public static RequestInterceptor Create(string realm, string privateKey, MembershipProvider membershipProvider)
 {
     var base64Converter = new Base64Converter();
      var privateHashEncoder = new PrivateHashEncoder(privateKey, new MD5Encoder());
      var generator = new NonceGenerator(privateHashEncoder, base64Converter);
      var digestHeaderGenerator = new DigestHeaderFactory(generator, realm);
      var digestValidator = new DigestValidator(new DigestEncoders(new MD5Encoder()));
      var digestHeaderExtractor = new DigestHeaderExtractor(new AuthorizationStringExtractor(), new DigestHeaderParser(new HeaderKeyValueSplitter('=')), new MethodExtractor());
      var nonceValidator = new NonceValidator(privateHashEncoder, base64Converter, new NonceTimeStampParser(), 600);
      var digestAuthenticationManager = new DigestAuthenticationManager(
     new ResponseMessageFactory(),
     new IPAddressExtractor(),
     membershipProvider,
     digestHeaderExtractor,
     new ServiceSecurityContextFactory(new AuthorizationPolicyFactory()),
     nonceValidator,
     digestValidator,
     digestHeaderGenerator);
      return new DigestAuthenticationInterceptor(digestAuthenticationManager);
 }