]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/server-commands/runners/runners-command.ts
Add runner server tests
[github/Chocobozzz/PeerTube.git] / shared / server-commands / runners / runners-command.ts
diff --git a/shared/server-commands/runners/runners-command.ts b/shared/server-commands/runners/runners-command.ts
new file mode 100644 (file)
index 0000000..ca9a1d7
--- /dev/null
@@ -0,0 +1,77 @@
+import { pick } from '@shared/core-utils'
+import { HttpStatusCode, RegisterRunnerBody, RegisterRunnerResult, ResultList, Runner, UnregisterRunnerBody } from '@shared/models'
+import { unwrapBody } from '../requests'
+import { AbstractCommand, OverrideCommandOptions } from '../shared'
+
+export class RunnersCommand extends AbstractCommand {
+
+  list (options: OverrideCommandOptions & {
+    start?: number
+    count?: number
+    sort?: string
+  } = {}) {
+    const path = '/api/v1/runners'
+
+    return this.getRequestBody<ResultList<Runner>>({
+      ...options,
+
+      path,
+      query: pick(options, [ 'start', 'count', 'sort' ]),
+      implicitToken: true,
+      defaultExpectedStatus: HttpStatusCode.OK_200
+    })
+  }
+
+  register (options: OverrideCommandOptions & RegisterRunnerBody) {
+    const path = '/api/v1/runners/register'
+
+    return unwrapBody<RegisterRunnerResult>(this.postBodyRequest({
+      ...options,
+
+      path,
+      fields: pick(options, [ 'name', 'registrationToken', 'description' ]),
+      implicitToken: true,
+      defaultExpectedStatus: HttpStatusCode.OK_200
+    }))
+  }
+
+  unregister (options: OverrideCommandOptions & UnregisterRunnerBody) {
+    const path = '/api/v1/runners/unregister'
+
+    return this.postBodyRequest({
+      ...options,
+
+      path,
+      fields: pick(options, [ 'runnerToken' ]),
+      implicitToken: false,
+      defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
+    })
+  }
+
+  delete (options: OverrideCommandOptions & {
+    id: number
+  }) {
+    const path = '/api/v1/runners/' + options.id
+
+    return this.deleteRequest({
+      ...options,
+
+      path,
+      implicitToken: true,
+      defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
+    })
+  }
+
+  // ---------------------------------------------------------------------------
+
+  async autoRegisterRunner () {
+    const { data } = await this.server.runnerRegistrationTokens.list({ sort: 'createdAt' })
+
+    const { runnerToken } = await this.register({
+      name: 'runner',
+      registrationToken: data[0].registrationToken
+    })
+
+    return runnerToken
+  }
+}