test: function(configuration, test) {
    var ReplSetManager = require('mongodb-core').ReplSetManager
      , MongoClient = configuration.require.MongoClient;
    // All inserted docs
    var docs = [];
    var errs = [];
    var insertDocs = [];

    // Read the ca
    var ca = [fs.readFileSync(__dirname + "/ssl/ca.pem")];
    var cert = fs.readFileSync(__dirname + "/ssl/client.pem");
    var key = fs.readFileSync(__dirname + "/ssl/client.pem");
    
    var replSetManager = new ReplSetManager({
      // SSL information
      host: "server",
      ssl:true,
      sslPEMKeyFile: __dirname + "/ssl/server.pem",
      sslCAFile: __dirname + "/ssl/ca.pem",
      sslCRLFile: __dirname + "/ssl/crl.pem",
      sslMode: 'requireSSL',

      // The client certificate
      key: cert,
      cert: cert,
      rejectUnauthorized: false,

      // ReplSet settings
      secondaries: 2
    });

    replSetManager.start({kill: true, purge:true, signal: -9}, function(err, result) {      
      if(err != null) throw err;

      // Present wrong certificate
      var cert = fs.readFileSync(__dirname + "/ssl/mycert.pem");
      var key = fs.readFileSync(__dirname + "/ssl/mycert.pem");

      // Connect and validate the server certificate
      MongoClient.connect("mongodb://server:31000,server:31001/test?ssl=true&replicaSet=rs&maxPoolSize=1", {
        replSet: {
            sslValidate:true
          , sslCA:ca
          , sslKey:key
          , sslCert:cert
          , sslPass: '******'
        }
      }, function(err, db) {
        test.ok(err != null)

        replSetManager.stop(function() {
          test.done();
        });
      });
    });
  }
      }, function(err, db) {
        test.equal(null, err)

        replSetManager.stop(function() {
          test.done();
        });
      });
      }, function(err, db) {
        test.ok(err != null)

        replSetManager.stop(function() {
          test.done();
        });
      });
  test: function(configuration, test) {
    var ReplSetManager = require('mongodb-core').ReplSetManager
      , MongoClient = configuration.require.MongoClient;

    // All inserted docs
    var docs = [];
    var errs = [];
    var insertDocs = [];
    
    // Read the ca
    var ca = [fs.readFileSync(__dirname + "/ssl/ca.pem")];
    var cert = fs.readFileSync(__dirname + "/ssl/client.pem");
    var key = fs.readFileSync(__dirname + "/ssl/client.pem");

    var replicasetManager = new ReplSetManager({
        host: "server"
      , sslOnNormalPorts: null
      , sslPEMKeyFile: __dirname + "/ssl/server.pem"
      , secondaries:2
      // EnsureUp options
      , ssl: true
      , rejectUnauthorized:false
      , ca:ca
    });

    replicasetManager.start({kill: true, purge:true, signal: -9}, function(err, result) {      
      if(err != null) throw err;
      // Connect and validate the server certificate
      MongoClient.connect("mongodb://server:31000/test?ssl=true&replicaSet=rs&maxPoolSize=1", {
        replSet: {
            ssl:true
          , sslValidate:false
          , sslCA:ca
        }        
      }, function(err, db) {
        test.equal(null, err);
        test.ok(db != null);

        db.close();

        replicasetManager.stop(function() {
          test.done();
        });
      });
    });
  }
      }, function(err, db) {
        test.equal(null, err);
        test.ok(db != null);

        db.close();

        replSetManager.stop(function() {
          test.done();
        });
      });