mirror of https://github.com/Chocobozzz/PeerTube
Server: error if we add a pod that already exists
parent
0d4fb7e6d4
commit
b09ce6455f
|
@ -20,8 +20,8 @@ const router = express.Router()
|
|||
|
||||
router.get('/', listPods)
|
||||
router.post('/',
|
||||
podsMiddleware.setBodyHostPort, // We need to modify the host before running the validator!
|
||||
validators.podsAdd,
|
||||
podsMiddleware.setBodyHostPort,
|
||||
addPods
|
||||
)
|
||||
router.post('/makefriends',
|
||||
|
|
|
@ -8,6 +8,8 @@ const podsMiddleware = {
|
|||
}
|
||||
|
||||
function setBodyHostsPort (req, res, next) {
|
||||
if (!req.body.hosts) return next()
|
||||
|
||||
for (let i = 0; i < req.body.hosts.length; i++) {
|
||||
const hostWithPort = getHostWithPort(req.body.hosts[i])
|
||||
|
||||
|
@ -23,6 +25,8 @@ function setBodyHostsPort (req, res, next) {
|
|||
}
|
||||
|
||||
function setBodyHostPort (req, res, next) {
|
||||
if (!req.body.host) return next()
|
||||
|
||||
const hostWithPort = getHostWithPort(req.body.host)
|
||||
|
||||
// Problem with the url parsing?
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
const checkErrors = require('./utils').checkErrors
|
||||
const constants = require('../../initializers/constants')
|
||||
const db = require('../../initializers/database')
|
||||
const friends = require('../../lib/friends')
|
||||
const logger = require('../../helpers/logger')
|
||||
const utils = require('../../helpers/utils')
|
||||
|
@ -30,23 +31,34 @@ function makeFriends (req, res, next) {
|
|||
|
||||
if (hasFriends === true) {
|
||||
// We need to quit our friends before make new ones
|
||||
res.sendStatus(409)
|
||||
} else {
|
||||
return next()
|
||||
return res.sendStatus(409)
|
||||
}
|
||||
|
||||
return next()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function podsAdd (req, res, next) {
|
||||
req.checkBody('host', 'Should have an host').notEmpty().isURL()
|
||||
req.checkBody('host', 'Should have an host').isHostValid()
|
||||
req.checkBody('publicKey', 'Should have a public key').notEmpty()
|
||||
|
||||
// TODO: check we don't have it already
|
||||
|
||||
logger.debug('Checking podsAdd parameters', { parameters: req.body })
|
||||
|
||||
checkErrors(req, res, next)
|
||||
checkErrors(req, res, function () {
|
||||
db.Pod.loadByHost(req.body.host, function (err, pod) {
|
||||
if (err) {
|
||||
logger.error('Cannot load pod by host.', { error: err })
|
||||
res.sendStatus(500)
|
||||
}
|
||||
|
||||
// Pod with this host already exists
|
||||
if (pod) {
|
||||
return res.sendStatus(409)
|
||||
}
|
||||
|
||||
return next()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
|
|
@ -189,6 +189,14 @@ describe('Test pods API validators', function () {
|
|||
}
|
||||
requestsUtils.makePostBodyRequest(server.url, path, null, data, done, 200)
|
||||
})
|
||||
|
||||
it('Should fail with a host that already exists', function (done) {
|
||||
const data = {
|
||||
host: 'coucou.com',
|
||||
publicKey: 'mysuperpublickey'
|
||||
}
|
||||
requestsUtils.makePostBodyRequest(server.url, path, null, data, done, 409)
|
||||
})
|
||||
})
|
||||
|
||||
after(function (done) {
|
||||
|
|
|
@ -36,7 +36,8 @@ function makePostUploadRequest (url, path, token, fields, attaches, done, status
|
|||
req.attach(attach, value)
|
||||
})
|
||||
|
||||
req.expect(statusCodeExpected, done)
|
||||
req.expect(statusCodeExpected)
|
||||
.end(done)
|
||||
}
|
||||
|
||||
function makePostBodyRequest (url, path, token, fields, done, statusCodeExpected) {
|
||||
|
@ -48,7 +49,9 @@ function makePostBodyRequest (url, path, token, fields, done, statusCodeExpected
|
|||
|
||||
if (token) req.set('Authorization', 'Bearer ' + token)
|
||||
|
||||
req.send(fields).expect(statusCodeExpected, done)
|
||||
req.send(fields)
|
||||
.expect(statusCodeExpected)
|
||||
.end(done)
|
||||
}
|
||||
|
||||
function makePutBodyRequest (url, path, token, fields, done, statusCodeExpected) {
|
||||
|
@ -60,7 +63,9 @@ function makePutBodyRequest (url, path, token, fields, done, statusCodeExpected)
|
|||
|
||||
if (token) req.set('Authorization', 'Bearer ' + token)
|
||||
|
||||
req.send(fields).expect(statusCodeExpected, done)
|
||||
req.send(fields)
|
||||
.expect(statusCodeExpected)
|
||||
.end(done)
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue