Add ability to list jobs

This commit is contained in:
Chocobozzz
2017-11-30 10:51:13 +01:00
parent 1f3e9feca2
commit 5cd8054542
29 changed files with 462 additions and 27 deletions

View File

@@ -1,5 +1,6 @@
// Order of the tests we want to execute
import './follows'
import './jobs'
import './users'
import './services'
import './videos'

View File

@@ -0,0 +1,84 @@
/* tslint:disable:no-unused-expression */
import 'mocha'
import * as request from 'supertest'
import { createUser, flushTests, getUserAccessToken, killallServers, runServer, ServerInfo, setAccessTokensToServers } from '../../utils'
describe('Test jobs API validators', function () {
const path = '/api/v1/jobs/'
let server: ServerInfo
let userAccessToken = ''
// ---------------------------------------------------------------
before(async function () {
this.timeout(120000)
await flushTests()
server = await runServer(1)
await setAccessTokensToServers([ server ])
const user = {
username: 'user1',
password: 'my super password'
}
await createUser(server.url, server.accessToken, user.username, user.password)
userAccessToken = await getUserAccessToken(server, user)
})
describe('When listing jobs', function () {
it('Should fail with a bad start pagination', async function () {
await request(server.url)
.get(path)
.query({ start: 'hello' })
.set('Accept', 'application/json')
.set('Authorization', 'Bearer ' + server.accessToken)
.expect(400)
})
it('Should fail with a bad count pagination', async function () {
await request(server.url)
.get(path)
.query({ count: 'hello' })
.set('Accept', 'application/json')
.set('Authorization', 'Bearer ' + server.accessToken)
.expect(400)
})
it('Should fail with an incorrect sort', async function () {
await request(server.url)
.get(path)
.query({ sort: 'hello' })
.set('Accept', 'application/json')
.set('Authorization', 'Bearer ' + server.accessToken)
.expect(400)
})
it('Should fail with a non authenticated user', async function () {
await request(server.url)
.get(path)
.set('Accept', 'application/json')
.expect(401)
})
it('Should fail with a non admin user', async function () {
await request(server.url)
.get(path)
.set('Accept', 'application/json')
.set('Authorization', 'Bearer ' + userAccessToken)
.expect(403)
})
})
after(async function () {
killallServers([ server ])
// Keep the logs if the test failed
if (this['ok']) {
await flushTests()
}
})
})

View File

@@ -3,3 +3,4 @@
import './video-transcoder'
import './multiple-servers'
import './follows'
import './jobs'

64
server/tests/api/jobs.ts Normal file
View File

@@ -0,0 +1,64 @@
/* tslint:disable:no-unused-expression */
import * as chai from 'chai'
import 'mocha'
import { flushTests, killallServers, ServerInfo, setAccessTokensToServers, wait } from '../utils'
import { doubleFollow } from '../utils/follows'
import { getJobsList, getJobsListPaginationAndSort } from '../utils/jobs'
import { flushAndRunMultipleServers } from '../utils/servers'
import { uploadVideo } from '../utils/videos'
import { dateIsValid } from '../utils/miscs'
const expect = chai.expect
describe('Test jobs', function () {
let servers: ServerInfo[]
before(async function () {
this.timeout(30000)
servers = await flushAndRunMultipleServers(2)
await setAccessTokensToServers(servers)
// Server 1 and server 2 follow each other
await doubleFollow(servers[0], servers[1])
})
it('Should create some jobs', async function () {
this.timeout(30000)
await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video1' })
await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video2' })
await wait(15000)
})
it('Should list jobs', async function () {
const res = await getJobsList(servers[1].url, servers[1].accessToken)
expect(res.body.total).to.be.above(2)
expect(res.body.data).to.have.length.above(2)
})
it('Should list jobs with sort and pagination', async function () {
const res = await getJobsListPaginationAndSort(servers[1].url, servers[1].accessToken, 4, 1, 'createdAt')
expect(res.body.total).to.be.above(2)
expect(res.body.data).to.have.lengthOf(1)
const job = res.body.data[0]
expect(job.state).to.equal('success')
expect(job.category).to.equal('transcoding')
expect(job.handlerName).to.have.length.above(3)
expect(dateIsValid(job.createdAt)).to.be.true
expect(dateIsValid(job.updatedAt)).to.be.true
})
after(async function () {
killallServers(servers)
// Keep the logs if the test failed
if (this['ok']) {
await flushTests()
}
})
})