UNPKG

3.84 kBJavaScriptView Raw
1process.env.OSM_COMMENTS_POSTGRES_URL = 'postgres://' + process.env.TEST_PG_USER + '@localhost/osm-comments-api-test';
2
3var api = require('../api');
4var tape = require('tape');
5var queue = require('d3-queue').queue;
6var http = require('http');
7var testsList = require('./fixtures/changesets/test_list.json');
8var server;
9
10// Simple GET function
11function get(path, callback) {
12 http.get('http://localhost:20009' + path, function(res) {
13 var body = '';
14 res.on('error', callback);
15 res.on('data', function(d) { body += d; });
16 res.on('end', function() {
17 callback(null, body, res);
18 });
19 }).on('error', callback);
20}
21
22tape('start server', function(assert) {
23 server = api.listen(20009, function(err) {
24 if (err) throw err;
25 assert.pass('server listening on 20009');
26 assert.end();
27 });
28});
29
30tape('run API tests for changesets', function(assert) {
31 var q = queue(5);
32 testsList.forEach(function(t) {
33 q.defer(runAPITest, assert, t);
34 });
35 q.awaitAll(function() {
36 assert.end();
37 });
38});
39
40function runAPITest(assert, testObj, callback) {
41 var basePath = './fixtures/changesets/';
42 var expected = require(basePath + testObj.fixture);
43 get(testObj.url, function(err, body, res) {
44 assert.ifError(err, testObj.description + ': success');
45 assert.equal(res.statusCode, 200, testObj.description + ': status 200');
46 assert.deepEqual(JSON.parse(body), expected.geojson, testObj.description);
47 callback();
48 });
49}
50
51
52//Tests for invalid queries
53// test('get changeset that does not exist', function(assert) {
54// get('/api/v1/changesets/123456789', function(err, body, res) {
55// assert.ifError(err, 'success');
56// assert.deepEqual(JSON.parse(body), { message: 'Not found: Changeset not found' }, 'expected error message');
57// assert.equal(res.statusCode, 404, 'expected status');
58// assert.end();
59// });
60// });
61
62// test('get invalid changeset id', function(assert) {
63// get('/api/v1/changesets/ventriloquism', function(err, body, res) {
64// assert.ifError(err, 'success');
65// assert.deepEqual(JSON.parse(body), { message: 'Invalid request: Changeset id must be a number' }, 'expected error message');
66// assert.equal(res.statusCode, 422, 'expected status');
67// assert.end();
68// });
69// });
70
71tape('get results for invalid from date', function(assert) {
72 get('/api/v1/changesets?from=strings&to=2015-09-08', function(err, body, res) {
73 assert.ifError(err, 'success');
74 assert.deepEqual(JSON.parse(body), { message: 'Invalid request: From must be a valid date' }, 'expected error message');
75 assert.equal(res.statusCode, 422, 'expected status');
76 assert.end();
77 });
78});
79
80tape('get results for invalid to date', function(assert) {
81 get('/api/v1/changesets?from=2015-09-08&to=strings', function(err, body, res) {
82 assert.ifError(err, 'success');
83 assert.deepEqual(JSON.parse(body), { message: 'Invalid request: To must be a valid date' }, 'expected error message');
84 assert.equal(res.statusCode, 422, 'expected status');
85 assert.end();
86 });
87});
88
89tape('get results for invalid bounding box', function(assert) {
90 get('/api/v1/changesets?bbox=a,1,2,3', function(err, body, res) {
91 assert.ifError(err, 'success');
92 assert.deepEqual(JSON.parse(body), { message: 'Invalid request: Bbox not a valid bbox string' }, 'expected error message');
93 assert.equal(res.statusCode, 422, 'expected status');
94 assert.end();
95 });
96});
97
98tape('close server', function(assert) {
99 server.close(function(err) {
100 if (err) throw err;
101 assert.pass('server closed');
102 assert.end();
103 });
104});
105
106tape.onFinish(() => process.exit(0));