greenlock.js/tests/renew-certificate.js

138 lines
2.9 KiB
JavaScript

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