1 | const Hoek = require('hoek');
|
2 | const expect = require('chai').expect;
|
3 | const setServer = require('../server.js').setServer;
|
4 | const Hapi = require('hapi');
|
5 |
|
6 | const hapiOptions = {
|
7 | cache: [
|
8 | {
|
9 | name: 'memoryCache',
|
10 | engine: require('catbox-memory'),
|
11 | options: {
|
12 | maxByteSize: 150000000
|
13 | }
|
14 | }
|
15 | ],
|
16 | app: {
|
17 | misc: require('./config/misc.js'),
|
18 | tools: require('./config/tools.js')
|
19 | }
|
20 | };
|
21 |
|
22 | const server = new Hapi.Server(hapiOptions);
|
23 | server.connection({
|
24 | port: 3001
|
25 | });
|
26 |
|
27 | setServer(server);
|
28 |
|
29 | const plugins = require('../server-plugins');
|
30 | const routes = require('../routes/routes.js');
|
31 |
|
32 | server.register(plugins, (err) => {
|
33 | Hoek.assert(!err, err);
|
34 |
|
35 |
|
36 | server.auth.scheme('mock', function(server, options) {
|
37 | return {
|
38 | authenticate: function(request, reply) {
|
39 | return reply({credentials: 'user'});
|
40 | }
|
41 | };
|
42 | });
|
43 | server.auth.strategy('q-auth', 'mock');
|
44 |
|
45 | server.route(routes);
|
46 |
|
47 | server.start(err => {
|
48 | Hoek.assert(!err, err);
|
49 | })
|
50 | });
|
51 |
|
52 | var etag;
|
53 | describe('Q server API etags', () => {
|
54 | it('should return 200 for first call of /version', function(done) {
|
55 | server.inject('/version', (res) => {
|
56 | etag = res.headers.etag;
|
57 | expect(res.statusCode).to.be.equal(200);
|
58 | done();
|
59 | });
|
60 | })
|
61 |
|
62 | it('should return 304 for second call of /version', function(done) {
|
63 | const request = {
|
64 | method: 'GET',
|
65 | url: '/version',
|
66 | headers: {
|
67 | 'if-none-match': etag
|
68 | }
|
69 | }
|
70 | server.inject(request, (res) => {
|
71 | expect(res.statusCode).to.be.equal(304);
|
72 | done();
|
73 | });
|
74 | })
|
75 | })
|
76 |
|
77 | describe('Q server health check', () => {
|
78 | it('should return 200 for health check', function(done) {
|
79 | server.inject('/health', (res) => {
|
80 | expect(res.statusCode).to.be.equal(200);
|
81 | done();
|
82 | });
|
83 | })
|
84 | })
|
85 |
|
86 | describe('Q server /item', () => {
|
87 | it('should fail to save existing item using POST', function(done) {
|
88 | const request = {
|
89 | method: 'POST',
|
90 | credentials: {username: 'user', password: 'pass'},
|
91 | url: '/item',
|
92 | payload: {
|
93 | '_id': 'someid',
|
94 | '_rev': 'somerev',
|
95 | 'title': 'title'
|
96 | }
|
97 | }
|
98 | server.inject(request, (res) => {
|
99 | expect(res.statusCode).to.be.equal(400);
|
100 | done();
|
101 | });
|
102 | });
|
103 |
|
104 | it('should fail to save new item using PUT', function(done) {
|
105 | const request = {
|
106 | method: 'PUT',
|
107 | credentials: {username: 'user', password: 'pass'},
|
108 | url: '/item',
|
109 | payload: {
|
110 | 'title': 'title'
|
111 | }
|
112 | }
|
113 | server.inject(request, (res) => {
|
114 | expect(res.statusCode).to.be.equal(400);
|
115 | done();
|
116 | });
|
117 | });
|
118 | })
|
119 |
|
120 |
|