Files
cnpmjs.org/test/controllers/registry/deprecate.test.js
2014-10-16 00:01:55 +08:00

208 lines
5.3 KiB
JavaScript

/**!
* cnpmjs.org - test/controllers/registry/deprecate.test.js
*
* Copyright(c) cnpmjs.org and other contributors.
* MIT Licensed
*
* Authors:
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
*/
'use strict';
/**
* Module dependencies.
*/
var should = require('should');
var request = require('supertest');
var mm = require('mm');
var pedding = require('pedding');
var app = require('../../../servers/registry');
var utils = require('../../utils');
describe.only('controllers/registry/deprecate.test.js', function () {
var pkgname = 'testmodule-deprecate';
before(function (done) {
done = pedding(2, done);
var pkg = utils.getPackage(pkgname, '0.0.1', utils.admin);
request(app.listen())
.put('/' + pkgname)
.set('authorization', utils.adminAuth)
.send(pkg)
.expect(201, function (err) {
should.not.exist(err);
pkg = utils.getPackage(pkgname, '0.0.2', utils.admin);
// publish 0.0.2
request(app.listen())
.put('/' + pkgname)
.set('authorization', utils.adminAuth)
.send(pkg)
.expect(201, done);
});
pkg = utils.getPackage(pkgname, '1.0.0', utils.admin);
request(app.listen())
.put('/' + pkgname)
.set('authorization', utils.adminAuth)
.send(pkg)
.expect(201, done);
});
afterEach(mm.restore);
describe('PUT /:name', function () {
it('should deprecate version@1.0.0', function (done) {
request(app.listen())
.put('/' + pkgname)
.set('authorization', utils.adminAuth)
.send({
name: pkgname,
versions: {
'1.0.0': {
deprecated: 'mock test deprecated message 1.0.0'
}
}
})
.expect({
ok: true
})
.expect(201, function (err, res) {
should.not.exist(err);
request(app.listen())
.get('/' + pkgname + '/1.0.0')
.expect(200, function (err, res) {
should.not.exist(err);
res.body.deprecated.should.equal('mock test deprecated message 1.0.0');
// undeprecated
request(app.listen())
.put('/' + pkgname)
.set('authorization', utils.adminAuth)
.send({
name: pkgname,
versions: {
'1.0.0': {
deprecated: ''
}
}
})
.expect({
ok: true
})
.expect(201, function (err) {
should.not.exist(err);
request(app.listen())
.get('/' + pkgname + '/1.0.0')
.expect(200, function (err, res) {
should.not.exist(err);
res.body.deprecated.should.equal('');
done();
});
});
});
});
});
it('should deprecate version@<1.0.0', function (done) {
request(app.listen())
.put('/' + pkgname)
.set('authorization', utils.adminAuth)
.send({
name: pkgname,
versions: {
'1.0.0': {
version: '1.0.0'
},
'0.0.1': {
deprecated: 'mock test deprecated message 0.0.1'
},
'0.0.2': {
deprecated: 'mock test deprecated message 0.0.2'
}
}
})
.expect({
ok: true
})
.expect(201, function (err, res) {
should.not.exist(err);
done = pedding(3, done);
request(app.listen())
.get('/' + pkgname + '/0.0.1')
.expect(200, function (err, res) {
should.not.exist(err);
res.body.deprecated.should.equal('mock test deprecated message 0.0.1');
done();
});
request(app.listen())
.get('/' + pkgname + '/0.0.2')
.expect(200, function (err, res) {
should.not.exist(err);
res.body.deprecated.should.equal('mock test deprecated message 0.0.2');
done();
});
// not change 1.0.0
request(app.listen())
.get('/' + pkgname + '/1.0.0')
.expect(200, function (err, res) {
should.not.exist(err);
res.body.deprecated.should.equal('');
done();
});
});
});
it('should 404 deprecate not exists version', function (done) {
request(app.listen())
.put('/' + pkgname)
.set('authorization', utils.adminAuth)
.send({
name: pkgname,
versions: {
'1.0.1': {
deprecated: 'mock test deprecated message'
},
'1.0.0': {
deprecated: 'mock test deprecated message'
}
}
})
.expect({
error: 'version_error',
reason: 'Some versions: ["1.0.1","1.0.0"] not found'
})
.expect(400, done);
});
it('should 403', function (done) {
request(app.listen())
.put('/' + pkgname)
.set('authorization', utils.otherUserAuth)
.send({
name: pkgname,
versions: {
'1.0.0': {
version: '1.0.0'
},
'0.0.1': {
deprecated: 'mock test deprecated message 0.0.1'
},
'0.0.2': {
deprecated: 'mock test deprecated message 0.0.2'
}
}
})
.expect({
error: 'no_perms',
reason: 'Private mode enable, only admin can publish this module'
})
.expect(403, done);
});
});
});