Server: error if we add a pod that already exists

pull/40/head
Chocobozzz 2017-01-27 11:55:31 +01:00
parent 0d4fb7e6d4
commit b09ce6455f
5 changed files with 41 additions and 12 deletions

View File

@ -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',

View File

@ -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?

View File

@ -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()
})
})
}
// ---------------------------------------------------------------------------

View File

@ -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) {

View File

@ -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)
}
// ---------------------------------------------------------------------------