This repository has been archived by the owner on Mar 27, 2022. It is now read-only.
/
rest-api-test.js
126 lines (103 loc) · 3.33 KB
/
rest-api-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/* jshint camelcase: false */
var chai = require('chai');
var chaiHttp = require('chai-http');
var server = require('../server/server');
var assert = require('assert');
var should = chai.should();
chai.use(chaiHttp);
var assert = require('chai').assert;
// var should = require('chai').should;
describe('REST API request', function() {
before(function(done) {
require('./start-server');
done();
});
after(function(done) {
server.removeAllListeners('started');
server.removeAllListeners('loaded');
done();
});
chai.request(server)
.get('/api/video')
.end( function(err, res){
res.should.have.status(200);
res.body.should.have.least(4);
done();
});
it('should not allow access without access token', function(done){
chai.request(server)
.get('/api/video')
.end( function(err, res){
res.should.have.status(401);
// res.body.should.have.least(4);
done();
});
// json('get', '/api/projects')
// .expect(401, done);
});
it('should login non-admin and get the balance', function(done) {
chai.request(server)
.post('/api/user/login')
.field('name', 'admin')
.field('email', 'admin')
.end( function(err, res){
res.should.have.status(200);
res.body.should.have.least(4);
assert.typeOf(res.body,'object');
res.body.id.should.exist();
var accessToken = res.body.id;
chai.request(server)
.get('/api/videos/' + 1 + '?access_token=' + accessToken)
.end( function(err, res){
res.error.should.not.exist();
res.should.have.status(200);
assert.typeOf(res.body,'object');
// @TODO add some check of existence of values/properties from some of videos
done();
});
done();
});
});
var accessToken;
it('should login the admin user and get all videos', function(done) {
// json('post', '/api/users/login')
// .send({
// username: 'Bob',
// password: 'opensesame'
// })
// .expect(200, function(err, res) {
// assert(typeof res.body === 'object');
// assert(res.body.id, 'must have an access token');
// assert.equal(res.body.userId, 3);
// accessToken = res.body.id;
// json('get', '/api/projects?access_token=' + accessToken)
// .expect(200, function(err, res){
// var projects = res.body;
// assert(Array.isArray(res.body));
// assert.equal(res.body.length, 2);
// done();
// });
// });
});
// wouldn't work
it('should donate money to project1', function(done) {
// json('post', '/api/projects/donate?access_token=' + accessToken)
// .send({
// id: 2,
// amount: 10
// })
// .expect(200, function(err, res){
// assert(typeof res.body === 'object');
// assert(res.body.success);
// assert.equal(res.body.success, true);
// done();
// });
});
});
describe('Unexpected Usage', function(){
it('should not crash the server when posting a bad id', function(done){
// json('post', '/api/users/foobar')
// .send({})
// .expect(404, done);
});
});