| 
									
										
										
										
											2016-08-08 15:17:09 -04:00
										 |  |  | '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/' | 
					
						
							| 
									
										
										
										
											2016-08-08 18:11:25 -04:00
										 |  |  |   , webrootPath: '~/letsencrypt.test/tmp/:hostname' | 
					
						
							| 
									
										
										
										
											2016-08-08 15:17:09 -04:00
										 |  |  |   }) | 
					
						
							| 
									
										
										
										
											2016-08-08 18:11:25 -04:00
										 |  |  | , debug: true | 
					
						
							| 
									
										
										
										
											2016-08-08 15:17:09 -04:00
										 |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-08 19:14:53 -04:00
										 |  |  | //var testId = Math.round(Date.now() / 1000).toString();
 | 
					
						
							|  |  |  | var testId = 'test1000'; | 
					
						
							| 
									
										
										
										
											2016-08-08 15:17:09 -04:00
										 |  |  | var fakeEmail = 'coolaj86+le.' + testId + '@example.com'; | 
					
						
							| 
									
										
										
										
											2016-08-08 18:11:25 -04:00
										 |  |  | var testEmail = 'coolaj86+le.' + testId + '@gmail.com'; | 
					
						
							| 
									
										
										
										
											2016-08-08 15:17:09 -04:00
										 |  |  | var testAccount; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var tests = [ | 
					
						
							|  |  |  |   function () { | 
					
						
							|  |  |  |     return le.core.accounts.checkAsync({ | 
					
						
							|  |  |  |       email: testEmail | 
					
						
							|  |  |  |     }).then(function (account) { | 
					
						
							|  |  |  |       if (account) { | 
					
						
							|  |  |  |         console.error(account); | 
					
						
							|  |  |  |         throw new Error("Test account should not exist."); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | , function () { | 
					
						
							|  |  |  |     return le.core.accounts.registerAsync({ | 
					
						
							|  |  |  |       email: testEmail | 
					
						
							|  |  |  |     , agreeTos: false | 
					
						
							|  |  |  |     , rsaKeySize: 2048 | 
					
						
							|  |  |  |     }).then(function (/*account*/) { | 
					
						
							|  |  |  |       throw new Error("Should not register if 'agreeTos' is not truthy."); | 
					
						
							|  |  |  |     }, function (err) { | 
					
						
							|  |  |  |       if (err.code !== 'E_ARGS') { | 
					
						
							|  |  |  |         throw err; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | , function () { | 
					
						
							|  |  |  |     return le.core.accounts.registerAsync({ | 
					
						
							|  |  |  |       email: testEmail | 
					
						
							|  |  |  |     , agreeTos: true | 
					
						
							|  |  |  |     , rsaKeySize: 1024 | 
					
						
							|  |  |  |     }).then(function (/*account*/) { | 
					
						
							|  |  |  |       throw new Error("Should not register if 'rsaKeySize' is less than 2048."); | 
					
						
							|  |  |  |     }, function (err) { | 
					
						
							|  |  |  |       if (err.code !== 'E_ARGS') { | 
					
						
							|  |  |  |         throw err; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | , function () { | 
					
						
							|  |  |  |     return le.core.accounts.registerAsync({ | 
					
						
							|  |  |  |       email: fakeEmail | 
					
						
							|  |  |  |     , agreeTos: true | 
					
						
							|  |  |  |     , rsaKeySize: 2048 | 
					
						
							|  |  |  |     }).then(function (/*account*/) { | 
					
						
							|  |  |  |       // TODO test mx record
 | 
					
						
							|  |  |  |       throw new Error("Registration should NOT succeed with a bad email address."); | 
					
						
							|  |  |  |     }, function (err) { | 
					
						
							|  |  |  |       if (err.code !== 'E_EMAIL') { | 
					
						
							|  |  |  |         throw err; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | , function () { | 
					
						
							|  |  |  |     return le.core.accounts.registerAsync({ | 
					
						
							| 
									
										
										
										
											2016-08-08 18:11:25 -04:00
										 |  |  |       email: testEmail | 
					
						
							| 
									
										
										
										
											2016-08-08 15:17:09 -04:00
										 |  |  |     , agreeTos: true | 
					
						
							|  |  |  |     , rsaKeySize: 2048 | 
					
						
							|  |  |  |     }).then(function (account) { | 
					
						
							|  |  |  |       testAccount = account; | 
					
						
							| 
									
										
										
										
											2016-08-08 19:14:53 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |       console.log(testEmail); | 
					
						
							|  |  |  |       console.log(testAccount); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-08 15:17:09 -04:00
										 |  |  |       if (!account) { | 
					
						
							|  |  |  |         throw new Error("Registration should always return a new account."); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       if (!account.email) { | 
					
						
							|  |  |  |         throw new Error("Registration should return the email."); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       if (!account.id) { | 
					
						
							|  |  |  |         throw new Error("Registration should return the account id."); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function run() { | 
					
						
							|  |  |  |   var test = tests.shift(); | 
					
						
							|  |  |  |   if (!test) { | 
					
						
							|  |  |  |     console.info('All tests passed'); | 
					
						
							|  |  |  |     return; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   test().then(run); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | run(); |