| 
									
										
										
										
											2016-10-16 16:43:38 +03:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | /*global require, before*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var	assert = require('assert'); | 
					
						
							|  |  |  | var nconf = require('nconf'); | 
					
						
							|  |  |  | var request = require('request'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var db = require('./mocks/databasemock'); | 
					
						
							| 
									
										
										
										
											2016-10-16 21:51:42 +03:00
										 |  |  | var user = require('../src/user'); | 
					
						
							| 
									
										
										
										
											2016-10-16 16:43:38 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | describe('authentication', function () { | 
					
						
							|  |  |  | 	var jar = request.jar(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-16 17:42:14 +03:00
										 |  |  | 	before(function (done) { | 
					
						
							| 
									
										
										
										
											2016-10-16 21:51:42 +03:00
										 |  |  | 		user.create({username: 'regular', password: 'regularpwd', email: 'regular@nodebb.org' }, function (err) { | 
					
						
							| 
									
										
										
										
											2016-10-16 17:42:14 +03:00
										 |  |  | 			assert.ifError(err); | 
					
						
							| 
									
										
										
										
											2016-10-16 17:36:24 +03:00
										 |  |  | 			done(); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-16 16:43:38 +03:00
										 |  |  | 	it('should register and login a user', function (done) { | 
					
						
							|  |  |  | 		request({ | 
					
						
							|  |  |  | 			url: nconf.get('url') + '/api/config', | 
					
						
							|  |  |  | 			json: true, | 
					
						
							|  |  |  | 			jar: jar | 
					
						
							|  |  |  | 		}, function (err, response, body) { | 
					
						
							|  |  |  | 			assert.ifError(err); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			request.post(nconf.get('url') + '/register', { | 
					
						
							|  |  |  | 				form: { | 
					
						
							|  |  |  | 					email: 'admin@nodebb.org', | 
					
						
							|  |  |  | 					username: 'admin', | 
					
						
							|  |  |  | 					password: 'adminpwd', | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 				json: true, | 
					
						
							|  |  |  | 				jar: jar, | 
					
						
							|  |  |  | 				headers: { | 
					
						
							|  |  |  | 					'x-csrf-token': body.csrf_token | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			}, function (err, response, body) { | 
					
						
							|  |  |  | 				assert.ifError(err); | 
					
						
							|  |  |  | 				assert(body); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				request({ | 
					
						
							|  |  |  | 					url: nconf.get('url') + '/api/me', | 
					
						
							|  |  |  | 					json: true, | 
					
						
							|  |  |  | 					jar: jar | 
					
						
							|  |  |  | 				}, function (err, response, body) { | 
					
						
							|  |  |  | 					assert.ifError(err); | 
					
						
							|  |  |  | 					assert(body); | 
					
						
							|  |  |  | 					assert.equal(body.username, 'admin'); | 
					
						
							|  |  |  | 					assert.equal(body.email, 'admin@nodebb.org'); | 
					
						
							| 
									
										
										
										
											2016-10-16 21:51:42 +03:00
										 |  |  | 					done(); | 
					
						
							| 
									
										
										
										
											2016-10-16 16:43:38 +03:00
										 |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	it('should logout a user', function (done) { | 
					
						
							|  |  |  | 		request({ | 
					
						
							|  |  |  | 			url: nconf.get('url') + '/api/config', | 
					
						
							|  |  |  | 			json: true, | 
					
						
							|  |  |  | 			jar: jar | 
					
						
							|  |  |  | 		}, function (err, response, body) { | 
					
						
							|  |  |  | 			assert.ifError(err); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			request.post(nconf.get('url') + '/logout', { | 
					
						
							|  |  |  | 				form: {}, | 
					
						
							|  |  |  | 				json: true, | 
					
						
							|  |  |  | 				jar: jar, | 
					
						
							|  |  |  | 				headers: { | 
					
						
							|  |  |  | 					'x-csrf-token': body.csrf_token | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			}, function (err, response, body) { | 
					
						
							|  |  |  | 				assert.ifError(err); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				request({ | 
					
						
							|  |  |  | 					url: nconf.get('url') + '/api/me', | 
					
						
							|  |  |  | 					json: true, | 
					
						
							|  |  |  | 					jar: jar | 
					
						
							|  |  |  | 				}, function (err, response, body) { | 
					
						
							|  |  |  | 					assert.ifError(err); | 
					
						
							|  |  |  | 					assert.equal(body, 'not-authorized'); | 
					
						
							|  |  |  | 					done() | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	it('should login a user', function (done) { | 
					
						
							|  |  |  | 		var jar = request.jar(); | 
					
						
							|  |  |  | 		request({ | 
					
						
							|  |  |  | 			url: nconf.get('url') + '/api/config', | 
					
						
							|  |  |  | 			json: true, | 
					
						
							|  |  |  | 			jar: jar | 
					
						
							|  |  |  | 		}, function (err, response, body) { | 
					
						
							|  |  |  | 			assert.ifError(err); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			request.post(nconf.get('url') + '/login', { | 
					
						
							|  |  |  | 				form: { | 
					
						
							| 
									
										
										
										
											2016-10-16 21:51:42 +03:00
										 |  |  | 					username: 'regular', | 
					
						
							|  |  |  | 					password: 'regularpwd', | 
					
						
							| 
									
										
										
										
											2016-10-16 16:43:38 +03:00
										 |  |  | 				}, | 
					
						
							|  |  |  | 				json: true, | 
					
						
							|  |  |  | 				jar: jar, | 
					
						
							|  |  |  | 				headers: { | 
					
						
							|  |  |  | 					'x-csrf-token': body.csrf_token | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			}, function (err, response, body) { | 
					
						
							|  |  |  | 				assert.ifError(err); | 
					
						
							|  |  |  | 				assert(body); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				request({ | 
					
						
							|  |  |  | 					url: nconf.get('url') + '/api/me', | 
					
						
							|  |  |  | 					json: true, | 
					
						
							|  |  |  | 					jar: jar | 
					
						
							|  |  |  | 				}, function (err, response, body) { | 
					
						
							|  |  |  | 					assert.ifError(err); | 
					
						
							|  |  |  | 					assert(body); | 
					
						
							| 
									
										
										
										
											2016-10-16 21:51:42 +03:00
										 |  |  | 					assert.equal(body.username, 'regular'); | 
					
						
							|  |  |  | 					assert.equal(body.email, 'regular@nodebb.org'); | 
					
						
							| 
									
										
										
										
											2016-10-16 16:43:38 +03:00
										 |  |  | 					done() | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	after(function (done) { | 
					
						
							|  |  |  | 		db.flushdb(done); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 |