it('should respect request header with more versions', function(done) { request(server) .get('/todo') .set('Accept-Version', '^2.0') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('2.0.0'); done(); }); });
it('should match a single version via path', function(done) { request(server) .get('/v2/path') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('2.0.0'); done(); }); });
it('should return build when package.json exists and git.properties doesn\'t', function (done) { mock({ './package.json': '{"name":"testName","description":"testDescription","version":"1.0.0"}' }) request(app) .get('/info') .end(function (err, res) { if (err) return err expect(res.statusCode).to.equal(200) expect(res.headers['content-type']).to.equal('application/json; charset=utf-8') expect(res.body.build.name).to.equal('testName') expect(res.body.build.description).to.equal('testDescription') expect(res.body.build.version).to.equal('1.0.0') expect(res.body.git).to.be.undefined() done() }) })
it('should not return build when package.json does not exist', function (done) { // The behaviour of a package.json empty is the same as if file doesn't exists mock({ 'package.json': '' }) request(app) .get('/info') .end(function (err, res) { if (err) return err expect(res.statusCode).to.equal(200) expect(res.headers['content-type']).to.equal('application/json; charset=utf-8') expect(res.body.build).to.be.undefined() expect(res.body.git).to.be.undefined() done() }) })
it('should match a single version', function(done) { request(server) .get('/todo2') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('1.0.0'); done(); }); });
it('should accept a renamed version path', function(done) { request(server) .get('/v1/renamed') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('1.1.0'); done(); }); });
it('should respect request header with exact version', function(done) { request(server) .get('/todo') .set('Accept-Version', '1.0.0') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('1.0.0'); done(); }); });
it('should match a single version via path', function(done) { request(server) .get('/v1/path') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('1.1.0'); done(); }); });
it('should choose path over header', function(done) { request(server) .get('/v2/path') .set('Accept-Version', '^1.0') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('2.0.0'); done(); }); });
it('should match the latest version', function(done) { request(server) .get('/todo') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('2.0.0'); done(); }); });
it('should respect request header with caret version', function(done) { request(server) .get('/todo') .set('Accept-Version', '^1.0') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('1.1.0'); done(); }); });
it('should use latest if requested an invalid version', function(done) { request(server) .get('/todo3') .set('Accept-Version', '^3.0') .end(function(err, res) { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('1.3.0'); done(); }); });
it('should match latest version via empty path', function(done) { request(server) .get('/path') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('2.0.0'); done(); }); });
it('should use default version', function(done) { request(server) .get('/default-todo-version') .end((err, res) => { expect(res.statusCode).to.equal(200); expect(res.headers['x-api-version']).to.equal('1.0.0'); done(); }); });