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();
        }