Cleanup tests imports
[oweals/peertube.git] / server / tests / utils / videos / video-channels.ts
1 import * as request from 'supertest'
2 import { VideoChannelCreate, VideoChannelUpdate } from '../../../../shared/models/videos'
3 import { updateAvatarRequest } from '../requests/requests'
4
5 function getVideoChannelsList (url: string, start: number, count: number, sort?: string) {
6   const path = '/api/v1/video-channels'
7
8   const req = request(url)
9     .get(path)
10     .query({ start: start })
11     .query({ count: count })
12
13   if (sort) req.query({ sort })
14
15   return req.set('Accept', 'application/json')
16             .expect(200)
17             .expect('Content-Type', /json/)
18 }
19
20 function getAccountVideoChannelsList (url: string, accountName: string, specialStatus = 200) {
21   const path = '/api/v1/accounts/' + accountName + '/video-channels'
22
23   return request(url)
24     .get(path)
25     .set('Accept', 'application/json')
26     .expect(specialStatus)
27     .expect('Content-Type', /json/)
28 }
29
30 function addVideoChannel (
31   url: string,
32   token: string,
33   videoChannelAttributesArg: VideoChannelCreate,
34   expectedStatus = 200
35 ) {
36   const path = '/api/v1/video-channels/'
37
38   // Default attributes
39   let attributes = {
40     displayName: 'my super video channel',
41     description: 'my super channel description',
42     support: 'my super channel support'
43   }
44   attributes = Object.assign(attributes, videoChannelAttributesArg)
45
46   return request(url)
47     .post(path)
48     .send(attributes)
49     .set('Accept', 'application/json')
50     .set('Authorization', 'Bearer ' + token)
51     .expect(expectedStatus)
52 }
53
54 function updateVideoChannel (
55   url: string,
56   token: string,
57   channelName: string,
58   attributes: VideoChannelUpdate,
59   expectedStatus = 204
60 ) {
61   const body = {}
62   const path = '/api/v1/video-channels/' + channelName
63
64   if (attributes.displayName) body['displayName'] = attributes.displayName
65   if (attributes.description) body['description'] = attributes.description
66   if (attributes.support) body['support'] = attributes.support
67
68   return request(url)
69     .put(path)
70     .send(body)
71     .set('Accept', 'application/json')
72     .set('Authorization', 'Bearer ' + token)
73     .expect(expectedStatus)
74 }
75
76 function deleteVideoChannel (url: string, token: string, channelName: string, expectedStatus = 204) {
77   const path = '/api/v1/video-channels/' + channelName
78
79   return request(url)
80     .delete(path)
81     .set('Accept', 'application/json')
82     .set('Authorization', 'Bearer ' + token)
83     .expect(expectedStatus)
84 }
85
86 function getVideoChannel (url: string, channelName: string) {
87   const path = '/api/v1/video-channels/' + channelName
88
89   return request(url)
90     .get(path)
91     .set('Accept', 'application/json')
92     .expect(200)
93     .expect('Content-Type', /json/)
94 }
95
96 function updateVideoChannelAvatar (options: {
97   url: string,
98   accessToken: string,
99   fixture: string,
100   videoChannelName: string | number
101 }) {
102
103   const path = '/api/v1/video-channels/' + options.videoChannelName + '/avatar/pick'
104
105   return updateAvatarRequest(Object.assign(options, { path }))
106 }
107
108 // ---------------------------------------------------------------------------
109
110 export {
111   updateVideoChannelAvatar,
112   getVideoChannelsList,
113   getAccountVideoChannelsList,
114   addVideoChannel,
115   updateVideoChannel,
116   deleteVideoChannel,
117   getVideoChannel
118 }