1
0
Fork 0

Server: error if we add a pod that already exists

This commit is contained in:
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.get('/', listPods)
router.post('/', router.post('/',
podsMiddleware.setBodyHostPort, // We need to modify the host before running the validator!
validators.podsAdd, validators.podsAdd,
podsMiddleware.setBodyHostPort,
addPods addPods
) )
router.post('/makefriends', router.post('/makefriends',

View File

@ -8,6 +8,8 @@ const podsMiddleware = {
} }
function setBodyHostsPort (req, res, next) { function setBodyHostsPort (req, res, next) {
if (!req.body.hosts) return next()
for (let i = 0; i < req.body.hosts.length; i++) { for (let i = 0; i < req.body.hosts.length; i++) {
const hostWithPort = getHostWithPort(req.body.hosts[i]) const hostWithPort = getHostWithPort(req.body.hosts[i])
@ -23,6 +25,8 @@ function setBodyHostsPort (req, res, next) {
} }
function setBodyHostPort (req, res, next) { function setBodyHostPort (req, res, next) {
if (!req.body.host) return next()
const hostWithPort = getHostWithPort(req.body.host) const hostWithPort = getHostWithPort(req.body.host)
// Problem with the url parsing? // Problem with the url parsing?

View File

@ -2,6 +2,7 @@
const checkErrors = require('./utils').checkErrors const checkErrors = require('./utils').checkErrors
const constants = require('../../initializers/constants') const constants = require('../../initializers/constants')
const db = require('../../initializers/database')
const friends = require('../../lib/friends') const friends = require('../../lib/friends')
const logger = require('../../helpers/logger') const logger = require('../../helpers/logger')
const utils = require('../../helpers/utils') const utils = require('../../helpers/utils')
@ -30,23 +31,34 @@ function makeFriends (req, res, next) {
if (hasFriends === true) { if (hasFriends === true) {
// We need to quit our friends before make new ones // We need to quit our friends before make new ones
res.sendStatus(409) return res.sendStatus(409)
} else {
return next()
} }
return next()
}) })
}) })
} }
function podsAdd (req, res, 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() 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 }) 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) 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) { after(function (done) {

View File

@ -36,7 +36,8 @@ function makePostUploadRequest (url, path, token, fields, attaches, done, status
req.attach(attach, value) req.attach(attach, value)
}) })
req.expect(statusCodeExpected, done) req.expect(statusCodeExpected)
.end(done)
} }
function makePostBodyRequest (url, path, token, fields, done, statusCodeExpected) { 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) 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) { 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) if (token) req.set('Authorization', 'Bearer ' + token)
req.send(fields).expect(statusCodeExpected, done) req.send(fields)
.expect(statusCodeExpected)
.end(done)
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------