Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7f951a6c5d | ||
|
|
a1f2bc87b7 | ||
|
|
706a5e053b |
@@ -1,4 +1,9 @@
|
||||
|
||||
1.2.1 / 2014-08-07
|
||||
==================
|
||||
|
||||
* deprecated bug fix and support undeprecate
|
||||
|
||||
1.2.0 / 2014-08-07
|
||||
==================
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ function* deprecateVersions(next) {
|
||||
return;
|
||||
}
|
||||
var data = body.versions[row.package.version];
|
||||
if (data.deprecated) {
|
||||
if (typeof data.deprecated === 'string') {
|
||||
row.package.deprecated = data.deprecated;
|
||||
updateTasks.push(Module.updatePackage(row.id, row.package));
|
||||
}
|
||||
|
||||
@@ -441,10 +441,27 @@ exports.addPackageAndDist = function *(next) {
|
||||
return;
|
||||
}
|
||||
|
||||
var versionPackage = pkg.versions[version];
|
||||
// check maintainers
|
||||
var isMaintainer = yield* packageService.isMaintainer(name, username);
|
||||
if (!isMaintainer) {
|
||||
this.status = 403;
|
||||
this.body = {
|
||||
error: 'forbidden user',
|
||||
reason: username + ' not authorized to modify ' + name
|
||||
};
|
||||
return;
|
||||
}
|
||||
|
||||
if (!filename) {
|
||||
if (versionPackage.deprecated) {
|
||||
var hasDeprecated = false;
|
||||
for (var v in pkg.versions) {
|
||||
var row = pkg.versions[v];
|
||||
if (typeof row.deprecated === 'string') {
|
||||
hasDeprecated = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hasDeprecated) {
|
||||
return yield* deprecateVersions.call(this, next);
|
||||
}
|
||||
|
||||
@@ -457,6 +474,7 @@ exports.addPackageAndDist = function *(next) {
|
||||
}
|
||||
|
||||
var attachment = pkg._attachments[filename];
|
||||
var versionPackage = pkg.versions[version];
|
||||
var maintainers = versionPackage.maintainers;
|
||||
|
||||
// should never happened in normal request
|
||||
@@ -516,17 +534,6 @@ exports.addPackageAndDist = function *(next) {
|
||||
return;
|
||||
}
|
||||
|
||||
// check maintainers
|
||||
var isMaintainer = yield* packageService.isMaintainer(name, username);
|
||||
if (!isMaintainer) {
|
||||
this.status = 403;
|
||||
this.body = {
|
||||
error: 'forbidden user',
|
||||
reason: username + ' not authorized to modify ' + name
|
||||
};
|
||||
return;
|
||||
}
|
||||
|
||||
// upload attachment
|
||||
var tarballBuffer;
|
||||
tarballBuffer = new Buffer(attachment.data, 'base64');
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "cnpmjs.org",
|
||||
"version": "1.2.0",
|
||||
"version": "1.2.1",
|
||||
"description": "Private npm registry and web for Enterprise, base on MySQL and Simple Store Service",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -65,7 +65,7 @@ describe('controllers/registry/deprecate.test.js', function () {
|
||||
name: pkgname,
|
||||
versions: {
|
||||
'1.0.0': {
|
||||
deprecated: 'mock test deprecated message'
|
||||
deprecated: 'mock test deprecated message 1.0.0'
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -78,8 +78,33 @@ describe('controllers/registry/deprecate.test.js', function () {
|
||||
.get('/' + pkgname + '/1.0.0')
|
||||
.expect(200, function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.body.deprecated.should.equal('mock test deprecated message');
|
||||
done();
|
||||
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();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -91,11 +116,14 @@ describe('controllers/registry/deprecate.test.js', function () {
|
||||
.send({
|
||||
name: pkgname,
|
||||
versions: {
|
||||
'1.0.0': {
|
||||
version: '1.0.0'
|
||||
},
|
||||
'0.0.1': {
|
||||
deprecated: 'mock test deprecated message'
|
||||
deprecated: 'mock test deprecated message 0.0.1'
|
||||
},
|
||||
'0.0.2': {
|
||||
deprecated: 'mock test deprecated message'
|
||||
deprecated: 'mock test deprecated message 0.0.2'
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -104,13 +132,13 @@ describe('controllers/registry/deprecate.test.js', function () {
|
||||
})
|
||||
.expect(201, function (err, res) {
|
||||
should.not.exist(err);
|
||||
done = pedding(2, done);
|
||||
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');
|
||||
res.body.deprecated.should.equal('mock test deprecated message 0.0.1');
|
||||
done();
|
||||
});
|
||||
|
||||
@@ -118,7 +146,16 @@ describe('controllers/registry/deprecate.test.js', function () {
|
||||
.get('/' + pkgname + '/0.0.2')
|
||||
.expect(200, function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.body.deprecated.should.equal('mock test deprecated message');
|
||||
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();
|
||||
});
|
||||
});
|
||||
@@ -145,5 +182,30 @@ describe('controllers/registry/deprecate.test.js', function () {
|
||||
})
|
||||
.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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user