mirror of
https://github.com/cnodejs/nodeclub.git
synced 2025-12-08 19:55:55 +00:00
206 lines
6.1 KiB
JavaScript
206 lines
6.1 KiB
JavaScript
var app = require('../../../app');
|
|
var request = require('supertest')(app);
|
|
var pedding = require('pedding');
|
|
var support = require('../../support/support');
|
|
var should = require('should');
|
|
|
|
describe('test/api/v1/reply.test.js', function () {
|
|
|
|
var mockTopic, mockReplyId;
|
|
|
|
before(function (done) {
|
|
support.ready(function () {
|
|
support.createTopic(support.normalUser.id, function (err, topic) {
|
|
mockTopic = topic;
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('create reply', function () {
|
|
|
|
it('should success', function (done) {
|
|
request.post('/api/v1/topic/' + mockTopic.id + '/replies')
|
|
.send({
|
|
content: 'reply a topic from api',
|
|
accesstoken: support.normalUser.accessToken
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
res.body.success.should.true();
|
|
mockReplyId = res.body.reply_id;
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should success with repli_id', function (done) {
|
|
request.post('/api/v1/topic/' + mockTopic.id + '/replies')
|
|
.send({
|
|
content: 'reply a topic from api',
|
|
accesstoken: support.normalUser.accessToken,
|
|
repli_id: mockReplyId
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
res.body.success.should.true();
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should 401 when no accessToken', function (done) {
|
|
request.post('/api/v1/topic/' + mockTopic.id + 'not_valid' + '/replies')
|
|
.send({
|
|
content: 'reply a topic from api'
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
res.status.should.equal(401);
|
|
res.body.success.should.false();
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should fail when topic_id is not valid', function (done) {
|
|
request.post('/api/v1/topic/' + mockTopic.id + 'not_valid' + '/replies')
|
|
.send({
|
|
content: 'reply a topic from api',
|
|
accesstoken: support.normalUser.accessToken
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
res.status.should.equal(400);
|
|
res.body.success.should.false();
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should fail when no content', function (done) {
|
|
request.post('/api/v1/topic/' + mockTopic.id + '/replies')
|
|
.send({
|
|
content: '',
|
|
accesstoken: support.normalUser.accessToken
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
res.status.should.equal(400);
|
|
res.body.success.should.false();
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should fail when topic not found', function (done) {
|
|
var notFoundTopicId = mockTopic.id.split("").reverse().join("");
|
|
request.post('/api/v1/topic/' + notFoundTopicId + '/replies')
|
|
.send({
|
|
content: 'reply a topic from api',
|
|
accesstoken: support.normalUser.accessToken
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
if (mockTopic.id === notFoundTopicId) { // 小概率事件id反转之后还不变
|
|
res.body.success.should.true();
|
|
} else {
|
|
res.status.should.equal(404);
|
|
res.body.success.should.false();
|
|
}
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should fail when topic is locked', function (done) {
|
|
// 锁住 topic
|
|
mockTopic.lock = !mockTopic.lock;
|
|
mockTopic.save(function () {
|
|
request.post('/api/v1/topic/' + mockTopic.id + '/replies')
|
|
.send({
|
|
content: 'reply a topic from api',
|
|
accesstoken: support.normalUser.accessToken
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
res.status.should.equal(403);
|
|
res.body.success.should.false();
|
|
// 解锁 topic
|
|
mockTopic.lock = !mockTopic.lock;
|
|
mockTopic.save(function () {
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
describe('create ups', function () {
|
|
|
|
it('should up', function (done) {
|
|
request.post('/api/v1/reply/' + mockReplyId + '/ups')
|
|
.send({
|
|
accesstoken: support.normalUser.accessToken
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
res.body.success.should.true();
|
|
res.body.action.should.equal("up");
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should down', function (done) {
|
|
request.post('/api/v1/reply/' + mockReplyId + '/ups')
|
|
.send({
|
|
accesstoken: support.normalUser.accessToken
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
res.body.success.should.true();
|
|
res.body.action.should.equal("down");
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should 401 when no accessToken', function (done) {
|
|
request.post('/api/v1/reply/' + mockReplyId + '/ups')
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
res.status.should.equal(401);
|
|
res.body.success.should.false();
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should fail when reply_id is not valid', function (done) {
|
|
request.post('/api/v1/reply/' + mockReplyId + 'not_valid' + '/ups')
|
|
.send({
|
|
accesstoken: support.normalUser.accessToken
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
res.status.should.equal(400);
|
|
res.body.success.should.false();
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should fail when reply_id is not found', function (done) {
|
|
var notFoundReplyId = mockReplyId.split("").reverse().join("");
|
|
request.post('/api/v1/reply/' + notFoundReplyId + '/ups')
|
|
.send({
|
|
accesstoken: support.normalUser.accessToken
|
|
})
|
|
.end(function (err, res) {
|
|
should.not.exists(err);
|
|
if (mockReplyId === notFoundReplyId) { // 小概率事件id反转之后还不变
|
|
res.body.success.should.true();
|
|
} else {
|
|
res.status.should.equal(404);
|
|
res.body.success.should.false();
|
|
}
|
|
done();
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
});
|