103 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			103 lines
		
	
	
		
			2.8 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(); |