281 lines
7.5 KiB
JavaScript
Executable File
281 lines
7.5 KiB
JavaScript
Executable File
// 'use strict';
|
|
|
|
// var should = require('should'),
|
|
// request = require('supertest'),
|
|
// app = require('../../server'),
|
|
// mongoose = require('mongoose'),
|
|
// User = mongoose.model('User'),
|
|
// Article = mongoose.model('Article'),
|
|
// agent = request.agent(app);
|
|
|
|
// /**
|
|
// * Globals
|
|
// */
|
|
// var credentials, user, article;
|
|
|
|
// /**
|
|
// * Article routes tests
|
|
// */
|
|
// describe('Article CRUD tests', function() {
|
|
// beforeEach(function(done) {
|
|
// // Create user credentials
|
|
// credentials = {
|
|
// username: 'username',
|
|
// password: 'password'
|
|
// };
|
|
|
|
// // Create a new user
|
|
// user = new User({
|
|
// firstName: 'Full',
|
|
// lastName: 'Name',
|
|
// displayName: 'Full Name',
|
|
// email: 'test@test.com',
|
|
// username: credentials.username,
|
|
// password: credentials.password,
|
|
// provider: 'local'
|
|
// });
|
|
|
|
// // Save a user to the test db and create new article
|
|
// user.save(function() {
|
|
// article = {
|
|
// title: 'Article Title',
|
|
// content: 'Article Content'
|
|
// };
|
|
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
// it('should be able to save an article if logged in', function(done) {
|
|
// agent.post('/auth/signin')
|
|
// .send(credentials)
|
|
// .expect(200)
|
|
// .end(function(signinErr, signinRes) {
|
|
// // Handle signin error
|
|
// if (signinErr) done(signinErr);
|
|
|
|
// // Get the userId
|
|
// var userId = user.id;
|
|
|
|
// // Save a new article
|
|
// agent.post('/articles')
|
|
// .send(article)
|
|
// .expect(200)
|
|
// .end(function(articleSaveErr, articleSaveRes) {
|
|
// // Handle article save error
|
|
// if (articleSaveErr) done(articleSaveErr);
|
|
|
|
// // Get a list of articles
|
|
// agent.get('/articles')
|
|
// .end(function(articlesGetErr, articlesGetRes) {
|
|
// // Handle article save error
|
|
// if (articlesGetErr) done(articlesGetErr);
|
|
|
|
// // Get articles list
|
|
// var articles = articlesGetRes.body;
|
|
|
|
// // Set assertions
|
|
// (articles[0].user._id).should.equal(userId);
|
|
// (articles[0].title).should.match('Article Title');
|
|
|
|
// // Call the assertion callback
|
|
// done();
|
|
// });
|
|
// });
|
|
// });
|
|
// });
|
|
|
|
// it('should not be able to save an article if not logged in', function(done) {
|
|
// agent.post('/articles')
|
|
// .send(article)
|
|
// .expect(401)
|
|
// .end(function(articleSaveErr, articleSaveRes) {
|
|
// // Call the assertion callback
|
|
// done(articleSaveErr);
|
|
// });
|
|
// });
|
|
|
|
// it('should not be able to save an article if no title is provided', function(done) {
|
|
// // Invalidate title field
|
|
// article.title = '';
|
|
|
|
// agent.post('/auth/signin')
|
|
// .send(credentials)
|
|
// .expect(200)
|
|
// .end(function(signinErr, signinRes) {
|
|
// // Handle signin error
|
|
// if (signinErr) done(signinErr);
|
|
|
|
// // Get the userId
|
|
// var userId = user.id;
|
|
|
|
// // Save a new article
|
|
// agent.post('/articles')
|
|
// .send(article)
|
|
// .expect(400)
|
|
// .end(function(articleSaveErr, articleSaveRes) {
|
|
// // Set message assertion
|
|
// (articleSaveRes.body.message).should.match('Title cannot be blank');
|
|
|
|
// // Handle article save error
|
|
// done(articleSaveErr);
|
|
// });
|
|
// });
|
|
// });
|
|
|
|
// it('should be able to update an article if signed in', function(done) {
|
|
// agent.post('/auth/signin')
|
|
// .send(credentials)
|
|
// .expect(200)
|
|
// .end(function(signinErr, signinRes) {
|
|
// // Handle signin error
|
|
// if (signinErr) done(signinErr);
|
|
|
|
// // Get the userId
|
|
// var userId = user.id;
|
|
|
|
// // Save a new article
|
|
// agent.post('/articles')
|
|
// .send(article)
|
|
// .expect(200)
|
|
// .end(function(articleSaveErr, articleSaveRes) {
|
|
// // Handle article save error
|
|
// if (articleSaveErr) done(articleSaveErr);
|
|
|
|
// // Update article title
|
|
// article.title = 'WHY YOU GOTTA BE SO MEAN?';
|
|
|
|
// // Update an existing article
|
|
// agent.put('/articles/' + articleSaveRes.body._id)
|
|
// .send(article)
|
|
// .expect(200)
|
|
// .end(function(articleUpdateErr, articleUpdateRes) {
|
|
// // Handle article update error
|
|
// if (articleUpdateErr) done(articleUpdateErr);
|
|
|
|
// // Set assertions
|
|
// (articleUpdateRes.body._id).should.equal(articleSaveRes.body._id);
|
|
// (articleUpdateRes.body.title).should.match('WHY YOU GOTTA BE SO MEAN?');
|
|
|
|
// // Call the assertion callback
|
|
// done();
|
|
// });
|
|
// });
|
|
// });
|
|
// });
|
|
|
|
// it('should be able to get a list of articles if not signed in', function(done) {
|
|
// // Create new article model instance
|
|
// var articleObj = new Article(article);
|
|
|
|
// // Save the article
|
|
// articleObj.save(function() {
|
|
// // Request articles
|
|
// request(app).get('/articles')
|
|
// .end(function(req, res) {
|
|
// // Set assertion
|
|
// res.body.should.be.an.Array.with.lengthOf(1);
|
|
|
|
// // Call the assertion callback
|
|
// done();
|
|
// });
|
|
|
|
// });
|
|
// });
|
|
|
|
|
|
// it('should be able to get a single article if not signed in', function(done) {
|
|
// // Create new article model instance
|
|
// var articleObj = new Article(article);
|
|
|
|
// // Save the article
|
|
// articleObj.save(function() {
|
|
// request(app).get('/articles/' + articleObj._id)
|
|
// .end(function(req, res) {
|
|
// // Set assertion
|
|
// res.body.should.be.an.Object.with.property('title', article.title);
|
|
|
|
// // Call the assertion callback
|
|
// done();
|
|
// });
|
|
// });
|
|
// });
|
|
|
|
// it('should return proper error for single article which doesnt exist, if not signed in', function(done) {
|
|
// request(app).get('/articles/test')
|
|
// .end(function(req, res) {
|
|
// // Set assertion
|
|
// res.body.should.be.an.Object.with.property('message', 'Article is invalid');
|
|
|
|
// // Call the assertion callback
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
// it('should be able to delete an article if signed in', function(done) {
|
|
// agent.post('/auth/signin')
|
|
// .send(credentials)
|
|
// .expect(200)
|
|
// .end(function(signinErr, signinRes) {
|
|
// // Handle signin error
|
|
// if (signinErr) done(signinErr);
|
|
|
|
// // Get the userId
|
|
// var userId = user.id;
|
|
|
|
// // Save a new article
|
|
// agent.post('/articles')
|
|
// .send(article)
|
|
// .expect(200)
|
|
// .end(function(articleSaveErr, articleSaveRes) {
|
|
// // Handle article save error
|
|
// if (articleSaveErr) done(articleSaveErr);
|
|
|
|
// // Delete an existing article
|
|
// agent.delete('/articles/' + articleSaveRes.body._id)
|
|
// .send(article)
|
|
// .expect(200)
|
|
// .end(function(articleDeleteErr, articleDeleteRes) {
|
|
// // Handle article error error
|
|
// if (articleDeleteErr) done(articleDeleteErr);
|
|
|
|
// // Set assertions
|
|
// (articleDeleteRes.body._id).should.equal(articleSaveRes.body._id);
|
|
|
|
// // Call the assertion callback
|
|
// done();
|
|
// });
|
|
// });
|
|
// });
|
|
// });
|
|
|
|
// it('should not be able to delete an article if not signed in', function(done) {
|
|
// // Set article user
|
|
// article.user = user;
|
|
|
|
// // Create new article model instance
|
|
// var articleObj = new Article(article);
|
|
|
|
// // Save the article
|
|
// articleObj.save(function() {
|
|
// // Try deleting article
|
|
// request(app).delete('/articles/' + articleObj._id)
|
|
// .expect(401)
|
|
// .end(function(articleDeleteErr, articleDeleteRes) {
|
|
// // Set message assertion
|
|
// (articleDeleteRes.body.message).should.match('User is not logged in');
|
|
|
|
// // Handle article error error
|
|
// done(articleDeleteErr);
|
|
// });
|
|
|
|
// });
|
|
// });
|
|
|
|
// afterEach(function(done) {
|
|
// User.remove().exec(function() {
|
|
// Article.remove().exec(done);
|
|
// });
|
|
// });
|
|
// });
|