Server: error if we add a pod that already exists
This commit is contained in:
parent
0d4fb7e6d4
commit
b09ce6455f
|
@ -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',
|
||||||
|
|
|
@ -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?
|
||||||
|
|
|
@ -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()
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue