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',
}
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])
}
function setBodyHostPort (req, res, next) {
+ if (!req.body.host) return next()
+
const hostWithPort = getHostWithPort(req.body.host)
// Problem with the url parsing?
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')
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()
+ logger.debug('Checking podsAdd parameters', { parameters: req.body })
- // TODO: check we don't have it already
+ 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)
+ }
- logger.debug('Checking podsAdd parameters', { parameters: req.body })
+ // Pod with this host already exists
+ if (pod) {
+ return res.sendStatus(409)
+ }
- checkErrors(req, res, next)
+ return next()
+ })
+ })
}
// ---------------------------------------------------------------------------
}
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) {
req.attach(attach, value)
})
- req.expect(statusCodeExpected, done)
+ req.expect(statusCodeExpected)
+ .end(done)
}
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) {
if (token) req.set('Authorization', 'Bearer ' + token)
- req.send(fields).expect(statusCodeExpected, done)
+ req.send(fields)
+ .expect(statusCodeExpected)
+ .end(done)
}
// ---------------------------------------------------------------------------