UNPKG

2.63 kBJavaScriptView Raw
1const Hoek = require('hoek');
2const expect = require('chai').expect;
3const setServer = require('../server.js').setServer;
4const Hapi = require('hapi');
5
6const 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
22const server = new Hapi.Server(hapiOptions);
23server.connection({
24 port: 3001
25});
26
27setServer(server);
28
29const plugins = require('../server-plugins');
30const routes = require('../routes/routes.js');
31
32server.register(plugins, (err) => {
33 Hoek.assert(!err, err);
34
35 // mock the auth strategy
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
52var etag;
53describe('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
77describe('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
86describe('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