'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 testCerts; var tests = [ function() { // TODO test that an altname also fetches the proper certificate return le.core.certificates .checkAsync({ domains: testDomains }) .then(function(certs) { if (!certs) { throw new Error( 'Either certificates.registerAsync (in previous test)' + ' or certificates.checkAsync (in this test) failed.' ); } testCerts = certs; console.log( 'Issued At', new Date(certs.issuedAt).toISOString() ); console.log( 'Expires At', new Date(certs.expiresAt).toISOString() ); if (certs.expiresAt <= Date.now()) { throw new Error( 'Certificates are already expired. They cannot be tested for duplicate or forced renewal.' ); } }); }, function() { return le.core.certificates .renewAsync( { email: testEmail, domains: testDomains }, testCerts ) .then( function() { throw new Error( 'Should not have renewed non-expired certificates.' ); }, function(err) { if ('E_NOT_RENEWABLE' !== err.code) { throw err; } } ); }, function() { return le.core.certificates .renewAsync( { email: testEmail, domains: testDomains, renewWithin: 720 * 24 * 60 * 60 * 1000 }, testCerts ) .then(function(certs) { console.log( 'Issued At', new Date(certs.issuedAt).toISOString() ); console.log( 'Expires At', new Date(certs.expiresAt).toISOString() ); if (certs.issuedAt === testCerts.issuedAt) { throw new Error( 'Should not have returned existing certificates.' ); } }); } ]; 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();