public void ShouldPositivelyAuthenticateValidRequest()
        {
            var repository = new MockRepository();

             var basicAuthenticationExtractor = repository.StrictMock<BasicAuthenticationCredentialsExtractor>(null, null);

             Message requestMessage = CreateAuthorizedRequestMessage();

             var securityContextFactory = repository.Stub<ServiceSecurityContextFactory>(null);
             Expect.Call(securityContextFactory.Create(null)).IgnoreArguments().Return(null);

             var httpRequestExtractor = repository.StrictMock<AuthorizationStringExtractor>();
             const string BasicAuthenticationCredentialString = "Basic SGVsbG8gQmFzZTY0";
             string dummyString;
             Expect.Call(httpRequestExtractor.TryExtractAuthorizationHeader(requestMessage, out dummyString)).Return(true).OutRef(BasicAuthenticationCredentialString);

             const string UserName = "******";
             const string Password = "******";
             Credentials dummyCredentials = CreateDummyCredentials(UserName, Password);
             Expect.Call(basicAuthenticationExtractor.Extract(BasicAuthenticationCredentialString)).Return(dummyCredentials);

             var membershipProvider = repository.StrictMock<MembershipProvider>();
             Expect.Call(membershipProvider.ValidateUser(UserName, Password)).Return(true);

             var manager = new BasicAuthenticationManager(basicAuthenticationExtractor, httpRequestExtractor, membershipProvider, null, securityContextFactory);

             repository.ReplayAll();
             manager.AuthenticateRequest(requestMessage);
             repository.VerifyAll();
        }
 public static RequestInterceptor Create(string realm, MembershipProvider membershipProvider)
 {
     var basicAuthenticationCredentialsExtractor = new BasicAuthenticationCredentialsExtractor(new Base64Decoder(), new DecodedCredentialsExtractor());
      var httpRequestAuthorizationExtractor = new AuthorizationStringExtractor();
      var responseMessageFactory = new ResponseMessageFactory(realm);
      var serviceSecurityContextFactory = new ServiceSecurityContextFactory(new AuthorizationPolicyFactory());
      var basicAuthenticationManager = new BasicAuthenticationManager(basicAuthenticationCredentialsExtractor, httpRequestAuthorizationExtractor, membershipProvider, responseMessageFactory, serviceSecurityContextFactory);
      return new BasicAuthenticationInterceptor(basicAuthenticationManager);
 }
        public void ShouldGenerateRequestForAuthorization()
        {
            var repository = new MockRepository();

             var basicAuthenticationExtractor = repository.Stub<BasicAuthenticationCredentialsExtractor>(null, null);
             var httpRequestExtractor = repository.Stub<AuthorizationStringExtractor>();
             var membershipProvider = repository.Stub<MembershipProvider>();

             var securityContextFactory = repository.Stub<ServiceSecurityContextFactory>(null);
             Expect.Call(securityContextFactory.Create(null)).IgnoreArguments().Return(null);

             var responseMessageFactory = repository.StrictMock<ResponseMessageFactory>(string.Empty);
             Expect.Call(responseMessageFactory.CreateInvalidAuthorizationMessage()).Return(null);

             var manager = new BasicAuthenticationManager(basicAuthenticationExtractor, httpRequestExtractor, membershipProvider, responseMessageFactory, securityContextFactory);
             repository.ReplayAll();
             manager.CreateInvalidAuthenticationRequest();
             repository.VerifyAll();
        }
 public BasicAuthenticationInterceptor(BasicAuthenticationManager manager)
     : base(false)
 {
     this.manager = manager;
 }