mirror of https://github.com/Chocobozzz/PeerTube
Server: add ability to register new user
parent
db216afd98
commit
2c2e909216
|
@ -18,3 +18,6 @@ storage:
|
||||||
|
|
||||||
admin:
|
admin:
|
||||||
email: 'admin2@example.com'
|
email: 'admin2@example.com'
|
||||||
|
|
||||||
|
signup:
|
||||||
|
enabled: false
|
||||||
|
|
|
@ -44,6 +44,12 @@ router.post('/',
|
||||||
createUser
|
createUser
|
||||||
)
|
)
|
||||||
|
|
||||||
|
router.post('/register',
|
||||||
|
ensureRegistrationEnabled,
|
||||||
|
validatorsUsers.usersAdd,
|
||||||
|
createUser
|
||||||
|
)
|
||||||
|
|
||||||
router.put('/:id',
|
router.put('/:id',
|
||||||
oAuth.authenticate,
|
oAuth.authenticate,
|
||||||
validatorsUsers.usersUpdate,
|
validatorsUsers.usersUpdate,
|
||||||
|
@ -66,6 +72,16 @@ module.exports = router
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
function ensureRegistrationEnabled (req, res, next) {
|
||||||
|
const registrationEnabled = constants.CONFIG.SIGNUP.ENABLED
|
||||||
|
|
||||||
|
if (registrationEnabled === true) {
|
||||||
|
return next()
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.status(400).send('User registration is not enabled.')
|
||||||
|
}
|
||||||
|
|
||||||
function createUser (req, res, next) {
|
function createUser (req, res, next) {
|
||||||
const user = db.User.build({
|
const user = db.User.build({
|
||||||
username: req.body.username,
|
username: req.body.username,
|
||||||
|
|
|
@ -17,6 +17,7 @@ describe('Test users API validators', function () {
|
||||||
let rootId = null
|
let rootId = null
|
||||||
let videoId = null
|
let videoId = null
|
||||||
let server = null
|
let server = null
|
||||||
|
let serverWithRegistrationDisabled = null
|
||||||
let userAccessToken = null
|
let userAccessToken = null
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
|
@ -29,8 +30,15 @@ describe('Test users API validators', function () {
|
||||||
serversUtils.flushTests(next)
|
serversUtils.flushTests(next)
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
serversUtils.runServer(1, function (server1) {
|
serversUtils.runServer(1, function (serverCreated) {
|
||||||
server = server1
|
server = serverCreated
|
||||||
|
|
||||||
|
next()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
function (next) {
|
||||||
|
serversUtils.runServer(2, function (serverCreated) {
|
||||||
|
serverWithRegistrationDisabled = serverCreated
|
||||||
|
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
|
@ -394,6 +402,121 @@ describe('Test users API validators', function () {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('When register a new user', function () {
|
||||||
|
const registrationPath = path + '/register'
|
||||||
|
|
||||||
|
it('Should fail with a too small username', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'ji',
|
||||||
|
email: 'test@example.com',
|
||||||
|
password: 'mysuperpassword'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(server.url, registrationPath, server.accessToken, data, done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail with a too long username', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'mysuperusernamewhichisverylong',
|
||||||
|
email: 'test@example.com',
|
||||||
|
password: 'mysuperpassword'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(server.url, registrationPath, server.accessToken, data, done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail with an incorrect username', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'my username',
|
||||||
|
email: 'test@example.com',
|
||||||
|
password: 'mysuperpassword'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(server.url, registrationPath, server.accessToken, data, done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail with a missing email', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'ji',
|
||||||
|
password: 'mysuperpassword'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(server.url, registrationPath, server.accessToken, data, done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail with an invalid email', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'mysuperusernamewhichisverylong',
|
||||||
|
email: 'testexample.com',
|
||||||
|
password: 'mysuperpassword'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(server.url, registrationPath, server.accessToken, data, done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail with a too small password', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'myusername',
|
||||||
|
email: 'test@example.com',
|
||||||
|
password: 'bla'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(server.url, registrationPath, server.accessToken, data, done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail with a too long password', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'myusername',
|
||||||
|
email: 'test@example.com',
|
||||||
|
password: 'my super long password which is very very very very very very very very very very very very very very' +
|
||||||
|
'very very very very very very very very very very very very very very very veryv very very very very' +
|
||||||
|
'very very very very very very very very very very very very very very very very very very very very long'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(server.url, registrationPath, server.accessToken, data, done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail if we register a user with the same username', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'root',
|
||||||
|
email: 'test@example.com',
|
||||||
|
password: 'my super password'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(server.url, registrationPath, server.accessToken, data, done, 409)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail if we register a user with the same email', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'myusername',
|
||||||
|
email: 'admin1@example.com',
|
||||||
|
password: 'my super password'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(server.url, registrationPath, server.accessToken, data, done, 409)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should succeed with the correct params', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'user3',
|
||||||
|
email: 'test3@example.com',
|
||||||
|
password: 'my super password'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(server.url, registrationPath, server.accessToken, data, done, 204)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail on a server with registration disabled', function (done) {
|
||||||
|
const data = {
|
||||||
|
username: 'user4',
|
||||||
|
email: 'test4@example.com',
|
||||||
|
password: 'my super password 4'
|
||||||
|
}
|
||||||
|
|
||||||
|
requestsUtils.makePostBodyRequest(serverWithRegistrationDisabled.url, registrationPath, serverWithRegistrationDisabled.accessToken, data, done, 400)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
after(function (done) {
|
after(function (done) {
|
||||||
process.kill(-server.app.pid)
|
process.kill(-server.app.pid)
|
||||||
|
|
||||||
|
|
|
@ -383,6 +383,19 @@ describe('Test users', function () {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('Should register a new user', function (done) {
|
||||||
|
usersUtils.registerUser(server.url, 'user_15', 'my super password', done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should be able to login with this registered user', function (done) {
|
||||||
|
server.user = {
|
||||||
|
username: 'user_15',
|
||||||
|
password: 'my super password'
|
||||||
|
}
|
||||||
|
|
||||||
|
loginUtils.loginAndGetAccessToken(server, done)
|
||||||
|
})
|
||||||
|
|
||||||
after(function (done) {
|
after(function (done) {
|
||||||
process.kill(-server.app.pid)
|
process.kill(-server.app.pid)
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ const request = require('supertest')
|
||||||
|
|
||||||
const usersUtils = {
|
const usersUtils = {
|
||||||
createUser,
|
createUser,
|
||||||
|
registerUser,
|
||||||
getUserInformation,
|
getUserInformation,
|
||||||
getUserVideoRating,
|
getUserVideoRating,
|
||||||
getUsersList,
|
getUsersList,
|
||||||
|
@ -36,6 +37,27 @@ function createUser (url, accessToken, username, password, specialStatus, end) {
|
||||||
.end(end)
|
.end(end)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function registerUser (url, username, password, specialStatus, end) {
|
||||||
|
if (!end) {
|
||||||
|
end = specialStatus
|
||||||
|
specialStatus = 204
|
||||||
|
}
|
||||||
|
|
||||||
|
const path = '/api/v1/users/register'
|
||||||
|
const body = {
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
email: username + '@example.com'
|
||||||
|
}
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.post(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.send(body)
|
||||||
|
.expect(specialStatus)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
function getUserInformation (url, accessToken, end) {
|
function getUserInformation (url, accessToken, end) {
|
||||||
const path = '/api/v1/users/me'
|
const path = '/api/v1/users/me'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue