mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-02-17 23:45:29 -05:00
tests for tags support
This commit is contained in:
parent
3c7ae2f37d
commit
02f8143097
11 changed files with 133 additions and 33 deletions
50
test/functional/addtag.js
Normal file
50
test/functional/addtag.js
Normal file
|
@ -0,0 +1,50 @@
|
|||
var assert = require('assert')
|
||||
|
||||
function readfile(x) {
|
||||
return require('fs').readFileSync(__dirname + '/' + x)
|
||||
}
|
||||
|
||||
module.exports = function() {
|
||||
var server = process.server
|
||||
|
||||
it('add tag - 404', function(cb) {
|
||||
server.add_tag('testpkg-tag', 'tagtagtag', '0.0.1', function(res, body) {
|
||||
assert.equal(res.statusCode, 404)
|
||||
assert(~body.error.indexOf('no such package'))
|
||||
cb()
|
||||
})
|
||||
})
|
||||
|
||||
describe('addtag', function() {
|
||||
before(function(cb) {
|
||||
server.put_package('testpkg-tag', eval(
|
||||
'(' + readfile('fixtures/publish.json5')
|
||||
.toString('utf8')
|
||||
.replace(/__NAME__/g, 'testpkg-tag')
|
||||
.replace(/__VERSION__/g, '0.0.1')
|
||||
+ ')'
|
||||
), function(res, body) {
|
||||
assert.equal(res.statusCode, 201)
|
||||
cb()
|
||||
})
|
||||
})
|
||||
|
||||
it('add testpkg-tag', function(){})
|
||||
|
||||
it('add tag - bad ver', function(cb) {
|
||||
server.add_tag('testpkg-tag', 'tagtagtag', '0.0.1-x', function(res, body) {
|
||||
assert.equal(res.statusCode, 404)
|
||||
assert(~body.error.indexOf('version doesn\'t exist'))
|
||||
cb()
|
||||
})
|
||||
})
|
||||
|
||||
it('add tag - good', function(cb) {
|
||||
server.add_tag('testpkg-tag', 'tagtagtag', '0.0.1', function(res, body) {
|
||||
assert.equal(res.statusCode, 201)
|
||||
assert(~body.ok.indexOf('tagged'))
|
||||
cb()
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
|
@ -3,14 +3,15 @@ require('./lib/startup')
|
|||
var assert = require('assert')
|
||||
, async = require('async')
|
||||
, crypto = require('crypto')
|
||||
, server = process.server
|
||||
, server2 = process.server2
|
||||
|
||||
function readfile(x) {
|
||||
return require('fs').readFileSync(__dirname + '/' + x)
|
||||
}
|
||||
|
||||
module.exports = function() {
|
||||
var server = process.server
|
||||
var server2 = process.server2
|
||||
|
||||
it('trying to fetch non-existent package', function(cb) {
|
||||
server.get_package('testpkg', function(res, body) {
|
||||
assert.equal(res.statusCode, 404)
|
||||
|
@ -20,13 +21,7 @@ module.exports = function() {
|
|||
})
|
||||
|
||||
describe('testpkg', function() {
|
||||
before(function(cb) {
|
||||
server.put_package('testpkg', require('./lib/package')('testpkg'), function(res, body) {
|
||||
assert.equal(res.statusCode, 201)
|
||||
assert(~body.ok.indexOf('created new package'))
|
||||
cb()
|
||||
})
|
||||
})
|
||||
before(server.add_package.bind(server, 'testpkg'))
|
||||
|
||||
it('creating new package', function(){/* test for before() */})
|
||||
|
||||
|
@ -109,8 +104,6 @@ module.exports = function() {
|
|||
})
|
||||
})
|
||||
})
|
||||
|
||||
require('./security')()
|
||||
})
|
||||
|
||||
it('uploading new package version for bad pkg', function(cb) {
|
||||
|
|
29
test/functional/fixtures/publish.json5
Normal file
29
test/functional/fixtures/publish.json5
Normal file
|
@ -0,0 +1,29 @@
|
|||
{ _id: '__NAME__',
|
||||
name: '__NAME__',
|
||||
description: '',
|
||||
'dist-tags': { latest: '__VERSION__' },
|
||||
versions:
|
||||
{ '__VERSION__':
|
||||
{ name: '__NAME__',
|
||||
version: '__VERSION__',
|
||||
description: '',
|
||||
main: 'index.js',
|
||||
scripts: { test: 'echo "Error: no test specified" && exit 1' },
|
||||
author: '',
|
||||
license: 'ISC',
|
||||
readme: 'ERROR: No README data found!',
|
||||
_id: '__NAME__@__VERSION__',
|
||||
dist:
|
||||
{ shasum: '071c8dd9fd775bf3ebc0d5108431110f5f857ce3',
|
||||
tarball: 'http://localhost:4873/__NAME__/-/__NAME__-__VERSION__.tgz' },
|
||||
_from: '.',
|
||||
_npmVersion: '1.3.21',
|
||||
_npmUser: { name: 'rlidwka', email: 'alex@kocharin.ru' },
|
||||
maintainers: [ { name: 'rlidwka', email: 'alex@kocharin.ru' } ] } },
|
||||
readme: 'ERROR: No README data found!',
|
||||
maintainers: [ { name: 'rlidwka', email: 'alex@kocharin.ru' } ],
|
||||
_attachments:
|
||||
{ '__NAME__-__VERSION__.tgz':
|
||||
{ content_type: 'application/octet-stream',
|
||||
data: 'H4sIAAAAAAAAA+2SP2vDMBDFPftTHDdkah3Zim3IGjJ0zppFyNdE+SMJSSmBkO8eWS6mQ7cGSsC/5cG9p7uTkBXyKHY0t4MWB2909mQYY81iAVHLtmY/NcGrCrKyquq25Q1vm4yVnPEm+s9e5DcuPggXV/lrn+EuMOqLcMsBUIsz4RIwkA/v9rjDt1iN4Bc5r4zuPVawok4GduSlUzZ8O2P6LFQqKN3RNf6kIT1kfTRuKZem9DGSewNbXDtn3BK0gd4Ab0mqT0XdFmE2A7qqACXGk/fUTVzC3rhxLJ6UJO3T9h+bFeb3/L9fdGJiYuI1eACk8AYWAAgAAA==',
|
||||
length: 250 } } }
|
|
@ -1,14 +1,15 @@
|
|||
var assert = require('assert')
|
||||
, crypto = require('crypto')
|
||||
, ex = module.exports
|
||||
, server = process.server
|
||||
, server2 = process.server2
|
||||
|
||||
function readfile(x) {
|
||||
return require('fs').readFileSync(__dirname + '/' + x)
|
||||
}
|
||||
|
||||
module.exports = function() {
|
||||
var server = process.server
|
||||
var server2 = process.server2
|
||||
|
||||
it('downloading non-existent tarball #1 / srv2', function(cb) {
|
||||
server2.get_tarball('testpkg-gh29', 'blahblah', function(res, body) {
|
||||
assert.equal(res.statusCode, 404)
|
||||
|
|
|
@ -4,14 +4,15 @@ var assert = require('assert')
|
|||
, async = require('async')
|
||||
, crypto = require('crypto')
|
||||
, ex = module.exports
|
||||
, server = process.server
|
||||
, server2 = process.server2
|
||||
|
||||
function readfile(x) {
|
||||
return require('fs').readFileSync(__dirname + '/' + x)
|
||||
}
|
||||
|
||||
describe('Func', function() {
|
||||
var server = process.server
|
||||
var server2 = process.server2
|
||||
|
||||
before(function(cb) {
|
||||
async.parallel([
|
||||
function(cb) {
|
||||
|
@ -40,5 +41,7 @@ describe('Func', function() {
|
|||
require('./tags')()
|
||||
require('./mirror')()
|
||||
require('./race')()
|
||||
require('./security')()
|
||||
require('./addtag')()
|
||||
})
|
||||
|
||||
|
|
|
@ -7,6 +7,6 @@ module.exports = function(name, version) {
|
|||
"shasum": "fake",
|
||||
"tarball": "http://localhost:55551/"+escape(name)+"/-/blahblah"
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -86,6 +86,16 @@ Server.prototype.put_tarball = function(name, filename, data, cb) {
|
|||
}, prep(cb)).end(data)
|
||||
}
|
||||
|
||||
Server.prototype.add_tag = function(name, tag, version, cb) {
|
||||
this.request({
|
||||
uri: '/'+encodeURIComponent(name)+'/'+encodeURIComponent(tag),
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
}, prep(cb)).end(JSON.stringify(version))
|
||||
}
|
||||
|
||||
Server.prototype.put_tarball_incomplete = function(name, filename, data, size, cb) {
|
||||
var req = this.request({
|
||||
uri: '/'+encodeURIComponent(name)+'/-/'+encodeURIComponent(filename)+'/whatever',
|
||||
|
@ -105,5 +115,13 @@ Server.prototype.put_tarball_incomplete = function(name, filename, data, size, c
|
|||
}, 20)
|
||||
}
|
||||
|
||||
Server.prototype.add_package = function(name, cb) {
|
||||
this.put_package(name, require('./package')(name), function(res, body) {
|
||||
assert.equal(res.statusCode, 201)
|
||||
assert(~body.ok.indexOf('created new package'))
|
||||
cb()
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = Server
|
||||
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
var assert = require('assert')
|
||||
, ex = module.exports
|
||||
, server = process.server
|
||||
, server2 = process.server2
|
||||
|
||||
function readfile(x) {
|
||||
return require('fs').readFileSync(__dirname + '/' + x)
|
||||
}
|
||||
|
||||
module.exports = function() {
|
||||
var server = process.server
|
||||
var server2 = process.server2
|
||||
|
||||
it('testing anti-loop', function(cb) {
|
||||
server2.get_package('testloop', function(res, body) {
|
||||
assert.equal(res.statusCode, 404)
|
||||
|
@ -58,7 +59,7 @@ module.exports = function() {
|
|||
})
|
||||
|
||||
it(prefix+'uploading new tarball', function(){})
|
||||
|
||||
|
||||
it(prefix+'downloading tarball from server1', function(cb) {
|
||||
server.get_tarball(pkg, pkg+'.file', function(res, body) {
|
||||
assert.equal(res.statusCode, 200)
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
var assert = require('assert')
|
||||
, readfile = require('fs').readFileSync
|
||||
, ex = module.exports
|
||||
, server = process.server
|
||||
, server2 = process.server2
|
||||
, async = require('async')
|
||||
, _oksum = 0
|
||||
|
||||
module.exports = function() {
|
||||
var server = process.server
|
||||
var server2 = process.server2
|
||||
|
||||
describe('race', function() {
|
||||
before(function(cb) {
|
||||
server.put_package('race', require('./lib/package')('race'), function(res, body) {
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
var assert = require('assert')
|
||||
, ex = module.exports
|
||||
, server = process.server
|
||||
, server2 = process.server2
|
||||
|
||||
module.exports = function() {
|
||||
var server = process.server
|
||||
var server2 = process.server2
|
||||
|
||||
describe('Security', function() {
|
||||
before(server.add_package.bind(server, 'testpkg-sec'))
|
||||
|
||||
it('bad pkg #1', function(cb) {
|
||||
server.get_package('package.json', function(res, body) {
|
||||
assert.equal(res.statusCode, 403)
|
||||
|
@ -22,12 +25,12 @@ module.exports = function() {
|
|||
})
|
||||
|
||||
it('__proto__, connect stuff', function(cb) {
|
||||
server.request({uri:'/testpkg?__proto__=1'}, function(err, res, body) {
|
||||
server.request({uri:'/testpkg-sec?__proto__=1'}, function(err, res, body) {
|
||||
// test for NOT outputting stack trace
|
||||
assert(!body || typeof(body) === 'object' || body.indexOf('node_modules') === -1)
|
||||
|
||||
// test for NOT crashing
|
||||
server.request({uri:'/testpkg'}, function(err, res, body) {
|
||||
server.request({uri:'/testpkg-sec'}, function(err, res, body) {
|
||||
assert.equal(res.statusCode, 200)
|
||||
cb()
|
||||
})
|
||||
|
@ -35,7 +38,7 @@ module.exports = function() {
|
|||
})
|
||||
|
||||
it('do not return package.json as an attachment', function(cb) {
|
||||
server.request({uri:'/testpkg/-/package.json'}, function(err, res, body) {
|
||||
server.request({uri:'/testpkg-sec/-/package.json'}, function(err, res, body) {
|
||||
assert.equal(res.statusCode, 403)
|
||||
assert(body.error.match(/invalid filename/))
|
||||
cb()
|
||||
|
@ -43,14 +46,14 @@ module.exports = function() {
|
|||
})
|
||||
|
||||
it('silly things - reading #1', function(cb) {
|
||||
server.request({uri:'/testpkg/-/../../../../../../../../etc/passwd'}, function(err, res, body) {
|
||||
server.request({uri:'/testpkg-sec/-/../../../../../../../../etc/passwd'}, function(err, res, body) {
|
||||
assert.equal(res.statusCode, 404)
|
||||
cb()
|
||||
})
|
||||
})
|
||||
|
||||
it('silly things - reading #2', function(cb) {
|
||||
server.request({uri:'/testpkg/-/%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd'}, function(err, res, body) {
|
||||
server.request({uri:'/testpkg-sec/-/%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd'}, function(err, res, body) {
|
||||
assert.equal(res.statusCode, 403)
|
||||
assert(body.error.match(/invalid filename/))
|
||||
cb()
|
||||
|
@ -58,7 +61,7 @@ module.exports = function() {
|
|||
})
|
||||
|
||||
it('silly things - writing #1', function(cb) {
|
||||
server.put_tarball('testpkg', 'package.json', '{}', function(res, body) {
|
||||
server.put_tarball('testpkg-sec', 'package.json', '{}', function(res, body) {
|
||||
assert.equal(res.statusCode, 403)
|
||||
assert(body.error.match(/invalid filename/))
|
||||
cb()
|
||||
|
@ -66,7 +69,7 @@ module.exports = function() {
|
|||
})
|
||||
|
||||
it('silly things - writing #3', function(cb) {
|
||||
server.put_tarball('testpkg', 'node_modules', '{}', function(res, body) {
|
||||
server.put_tarball('testpkg-sec', 'node_modules', '{}', function(res, body) {
|
||||
assert.equal(res.statusCode, 403)
|
||||
assert(body.error.match(/invalid filename/))
|
||||
cb()
|
||||
|
@ -74,7 +77,7 @@ module.exports = function() {
|
|||
})
|
||||
|
||||
it('silly things - writing #4', function(cb) {
|
||||
server.put_tarball('testpkg', '../testpkg.tgz', '{}', function(res, body) {
|
||||
server.put_tarball('testpkg-sec', '../testpkg.tgz', '{}', function(res, body) {
|
||||
assert.equal(res.statusCode, 403)
|
||||
assert(body.error.match(/invalid filename/))
|
||||
cb()
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
var assert = require('assert')
|
||||
, ex = module.exports
|
||||
, server = process.server
|
||||
, express = process.express
|
||||
|
||||
function readfile(x) {
|
||||
return require('fs').readFileSync(__dirname + '/' + x)
|
||||
}
|
||||
|
||||
module.exports = function() {
|
||||
var server = process.server
|
||||
var express = process.express
|
||||
|
||||
it('tags - testing for 404', function(cb) {
|
||||
server.get_package('testexp_tags', function(res, body) {
|
||||
// shouldn't exist yet
|
||||
|
|
Loading…
Add table
Reference in a new issue