From 5c98d3bf078852043cbdd582c01e3dc4f4b5b79f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 5 Sep 2017 22:09:16 +0200 Subject: Begin tests for user quota --- server/tests/api/users.ts | 53 ++++++++++++++++++++++++++++++++++++++------- server/tests/utils/users.ts | 44 +++++++++++++++++++++++++++++++------ 2 files changed, 82 insertions(+), 15 deletions(-) (limited to 'server/tests') diff --git a/server/tests/api/users.ts b/server/tests/api/users.ts index fd3b51123..104d783bb 100644 --- a/server/tests/api/users.ts +++ b/server/tests/api/users.ts @@ -19,14 +19,16 @@ import { makePutBodyRequest, createUser, loginAndGetAccessToken, - getUserInformation, + getMyUserInformation, getUsersList, getUsersListPaginationAndSort, updateUser, + updateMyUser, registerUser, removeUser } from '../utils' import { killallServers } from '../utils/servers' +import { getUserInformation } from '../utils/users' describe('Test users', function () { let server: ServerInfo @@ -166,7 +168,7 @@ describe('Test users', function () { it('Should be able to upload a video again') it('Should be able to create a new user', async function () { - await createUser(server.url, accessToken, 'user_1', 'super password') + await createUser(server.url, accessToken, 'user_1', 'super password', 2 * 1024 * 1024) }) it('Should be able to login with this user', async function () { @@ -179,12 +181,13 @@ describe('Test users', function () { }) it('Should be able to get the user information', async function () { - const res = await getUserInformation(server.url, accessTokenUser) + const res = await getMyUserInformation(server.url, accessTokenUser) const user = res.body expect(user.username).to.equal('user_1') expect(user.email).to.equal('user_1@example.com') expect(user.displayNSFW).to.be.false + expect(user.videoQuota).to.equal(2 * 1024 * 1024) expect(user.id).to.be.a('number') }) @@ -282,22 +285,49 @@ describe('Test users', function () { expect(users[1].displayNSFW).to.be.false }) - it('Should update the user password', async function () { - await updateUser(server.url, userId, accessTokenUser, 'new password', null) + it('Should update my password', async function () { + await updateMyUser(server.url, accessTokenUser, 'new password') server.user.password = 'new password' await login(server.url, server.client, server.user, 200) }) it('Should be able to change the NSFW display attribute', async function () { - await updateUser(server.url, userId, accessTokenUser, null, true) + await updateMyUser(server.url, accessTokenUser, undefined, true) - const res = await getUserInformation(server.url, accessTokenUser) + const res = await getMyUserInformation(server.url, accessTokenUser) const user = res.body expect(user.username).to.equal('user_1') expect(user.email).to.equal('user_1@example.com') expect(user.displayNSFW).to.be.ok + expect(user.videoQuota).to.equal(2 * 1024 * 1024) + expect(user.id).to.be.a('number') + }) + + it('Should be able to change the email display attribute', async function () { + await updateMyUser(server.url, accessTokenUser, undefined, undefined, 'updated@example.com') + + const res = await getMyUserInformation(server.url, accessTokenUser) + const user = res.body + + expect(user.username).to.equal('user_1') + expect(user.email).to.equal('updated@example.com') + expect(user.displayNSFW).to.be.ok + expect(user.videoQuota).to.equal(2 * 1024 * 1024) + expect(user.id).to.be.a('number') + }) + + it('Should be able to update another user', async function () { + await updateUser(server.url, userId, server.accessToken, 'updated2@example.com', 42 ) + + const res = await getUserInformation(server.url, server.accessToken, userId) + const user = res.body + + expect(user.username).to.equal('user_1') + expect(user.email).to.equal('updated2@example.com') + expect(user.displayNSFW).to.be.ok + expect(user.videoQuota).to.equal(42) expect(user.id).to.be.a('number') }) @@ -329,7 +359,14 @@ describe('Test users', function () { password: 'my super password' } - await loginAndGetAccessToken(server) + accessToken = await loginAndGetAccessToken(server) + }) + + it('Should have the correct video quota', async function () { + const res = await getMyUserInformation(server.url, accessToken) + const user = res.body + + expect(user.videoQuota).to.equal(5 * 1024 * 1024) }) after(async function () { diff --git a/server/tests/utils/users.ts b/server/tests/utils/users.ts index 6e4b5f2f5..1c3f6826e 100644 --- a/server/tests/utils/users.ts +++ b/server/tests/utils/users.ts @@ -1,11 +1,12 @@ import * as request from 'supertest' -function createUser (url: string, accessToken: string, username: string, password: string, specialStatus = 204) { +function createUser (url: string, accessToken: string, username: string, password: string, videoQuota = 1000000, specialStatus = 204) { const path = '/api/v1/users' const body = { username, password, - email: username + '@example.com' + email: username + '@example.com', + videoQuota } return request(url) @@ -31,7 +32,7 @@ function registerUser (url: string, username: string, password: string, specialS .expect(specialStatus) } -function getUserInformation (url: string, accessToken: string) { +function getMyUserInformation (url: string, accessToken: string) { const path = '/api/v1/users/me' return request(url) @@ -42,6 +43,17 @@ function getUserInformation (url: string, accessToken: string) { .expect('Content-Type', /json/) } +function getUserInformation (url: string, accessToken: string, userId: number) { + const path = '/api/v1/users/' + userId + + return request(url) + .get(path) + .set('Accept', 'application/json') + .set('Authorization', 'Bearer ' + accessToken) + .expect(200) + .expect('Content-Type', /json/) +} + function getUserVideoRating (url: string, accessToken: string, videoId: number) { const path = '/api/v1/users/me/videos/' + videoId + '/rating' @@ -86,12 +98,28 @@ function removeUser (url: string, userId: number, accessToken: string, expectedS .expect(expectedStatus) } -function updateUser (url: string, userId: number, accessToken: string, newPassword: string, displayNSFW: boolean) { - const path = '/api/v1/users/' + userId +function updateMyUser (url: string, accessToken: string, newPassword: string, displayNSFW?: boolean, email?: string) { + const path = '/api/v1/users/me' const toSend = {} if (newPassword !== undefined && newPassword !== null) toSend['password'] = newPassword if (displayNSFW !== undefined && displayNSFW !== null) toSend['displayNSFW'] = displayNSFW + if (email !== undefined && email !== null) toSend['email'] = email + + return request(url) + .put(path) + .set('Accept', 'application/json') + .set('Authorization', 'Bearer ' + accessToken) + .send(toSend) + .expect(204) +} + +function updateUser (url: string, userId: number, accessToken: string, email: string, videoQuota: number) { + const path = '/api/v1/users/' + userId + + const toSend = {} + if (email !== undefined && email !== null) toSend['password'] = email + if (videoQuota !== undefined && videoQuota !== null) toSend['videoQuota'] = videoQuota return request(url) .put(path) @@ -106,10 +134,12 @@ function updateUser (url: string, userId: number, accessToken: string, newPasswo export { createUser, registerUser, - getUserInformation, + getMyUserInformation, getUserVideoRating, getUsersList, getUsersListPaginationAndSort, removeUser, - updateUser + updateUser, + updateMyUser, + getUserInformation } -- cgit v1.2.3