'use strict'; var LE = require('../').LE; var le = LE.create({ server: 'staging', acme: require('le-acme-core').ACME.create(), store: require('le-store-certbot').create({ configDir: '~/letsencrypt.test/etc', webrootPath: '~/letsencrypt.test/var/:hostname' }), challenge: require('le-challenge-fs').create({ webrootPath: '~/letsencrypt.test/var/:hostname' }), debug: true }); // TODO test generateRsaKey code path separately // and then provide opts.accountKeypair to create account //var testId = Math.round(Date.now() / 1000).toString(); var testId = 'test1000'; var testEmail = 'coolaj86+le.' + testId + '@gmail.com'; // TODO integrate with Daplie Domains for junk domains to test with var testDomains = ['pokemap.hellabit.com', 'www.pokemap.hellabit.com']; var tests = [ function() { return le.core.certificates .checkAsync({ domains: ['example.com', 'www.example.com'] }) .then(function(cert) { if (cert) { throw new Error( 'Bogus domain should not have certificate.' ); } }); }, function() { return le.core.certificates .getAsync({ email: testEmail, domains: testDomains }) .then(function(certs) { if (!certs) { throw new Error( 'Should have acquired certificate for domains.' ); } }); } ]; function run() { //var express = require(express); var server = require('http').createServer(le.middleware()); server.listen(80, function() { console.log('Server running, proceeding to test.'); function next() { var test = tests.shift(); if (!test) { server.close(); console.info('All tests passed'); return; } test().then(next, function(err) { console.error('ERROR'); console.error(err.stack); server.close(); }); } next(); }); } run();