diff --git a/services/wercker/wercker.service.js b/services/wercker/wercker.service.js index d15d969f84f21bfeb717f6895a3c64faf163c46f..1831b542905ce43d79139682331ae7c55128077f 100644 --- a/services/wercker/wercker.service.js +++ b/services/wercker/wercker.service.js @@ -1,130 +1,11 @@ -import Joi from 'joi' -import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' -import { BaseJsonService } from '../index.js' +import { deprecatedService } from '../index.js' -const werckerSchema = Joi.array() - .items( - Joi.object({ - result: isBuildStatus, - }) - ) - .min(0) - .max(1) - .required() - -const werckerCIDocumentation = ` -<p> - Note that Wercker badge Key (used in Wercker's native badge urls) is not the same as - the Application Id and the badge key will not work. -</p> -<p> - You can use the Wercker API to locate your Application Id: - <br /> - <br /> - https://app.wercker.com/api/v3/applications/:username/:applicationName - <br /> - For example: https://app.wercker.com/api/v3/applications/wercker/go-wercker-api - <br /> - <br /> - Your Application Id will be in the 'id' field in the API response. -</p> -` - -export default class Wercker extends BaseJsonService { - static category = 'build' - - static route = { +export default deprecatedService({ + category: 'build', + route: { base: 'wercker', - format: - '(?:(?:ci/)([a-fA-F0-9]{24})|(?:build|ci)/([^/]+/[^/]+?))(?:/(.+?))?', - capture: ['projectId', 'applicationName', 'branch'], - } - - static examples = [ - { - title: 'Wercker CI Run', - pattern: 'ci/:applicationId', - namedParams: { applicationId: '559e33c8e982fc615500b357' }, - staticPreview: this.render({ result: 'passed' }), - documentation: werckerCIDocumentation, - }, - { - title: 'Wercker CI Run (branch)', - pattern: 'ci/:applicationId/:branch', - namedParams: { - applicationId: '559e33c8e982fc615500b357', - branch: 'master', - }, - staticPreview: this.render({ result: 'passed' }), - documentation: werckerCIDocumentation, - }, - { - title: 'Wercker Build', - pattern: 'build/:userName/:applicationName', - namedParams: { - userName: 'wercker', - applicationName: 'go-wercker-api', - }, - staticPreview: this.render({ result: 'passed' }), - }, - { - title: 'Wercker Build (branch)', - pattern: 'build/:userName/:applicationName/:branch', - namedParams: { - userName: 'wercker', - applicationName: 'go-wercker-api', - branch: 'master', - }, - staticPreview: this.render({ result: 'passed' }), - }, - ] - - static render({ result }) { - return renderBuildStatusBadge({ status: result }) - } - - static getBaseUrl({ projectId, applicationName }) { - if (applicationName) { - return `https://app.wercker.com/api/v3/applications/${applicationName}/builds` - } else { - return `https://app.wercker.com/api/v3/runs?applicationId=${projectId}` - } - } - - async fetch({ projectId, applicationName, branch }) { - let url - const searchParams = { branch, limit: 1 } - - if (applicationName) { - url = `https://app.wercker.com/api/v3/applications/${applicationName}/builds` - } else { - url = 'https://app.wercker.com/api/v3/runs' - searchParams.applicationId = projectId - } - - return this._requestJson({ - schema: werckerSchema, - url, - options: { searchParams }, - errorMessages: { - 401: 'private application not supported', - 404: 'application not found', - }, - }) - } - - async handle({ projectId, applicationName, branch }) { - const json = await this.fetch({ - projectId, - applicationName, - branch, - }) - if (json.length === 0) { - return this.constructor.render({ - result: 'not built', - }) - } - const { result } = json[0] - return this.constructor.render({ result }) - } -} + pattern: ':various*', + }, + label: 'wercker', + dateAdded: new Date('2022-11-18'), +}) diff --git a/services/wercker/wercker.tester.js b/services/wercker/wercker.tester.js index bcbd29368db1b0c794c6e98dec2dcae7ce9c9ad4..64af7d538256f6bc214889c19397ce996b7f2659 100644 --- a/services/wercker/wercker.tester.js +++ b/services/wercker/wercker.tester.js @@ -1,58 +1,14 @@ -import { isBuildStatus } from '../build-status.js' -import { createServiceTester } from '../tester.js' -export const t = await createServiceTester() - -t.create('Build status') - .get('/build/wercker/go-wercker-api.json') - .expectBadge({ label: 'build', message: isBuildStatus }) - -t.create('Build status (with branch)') - .get('/build/wercker/go-wercker-api/master.json') - .expectBadge({ label: 'build', message: isBuildStatus }) - -t.create('Build status (application not found)') - .get('/build/some-project/that-doesnt-exist.json') - .expectBadge({ label: 'build', message: 'application not found' }) - -t.create('Build status (private application)') - .get('/build/wercker/blueprint.json') - .expectBadge({ label: 'build', message: 'private application not supported' }) - -t.create('Build passed') +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ + id: 'wercker', + title: 'Wercker', + pathPrefix: '/wercker', +}) + +t.create('Build status (deprecated)') .get('/build/wercker/go-wercker-api.json') - .intercept(nock => - nock('https://app.wercker.com/api/v3/applications/') - .get('/wercker/go-wercker-api/builds?limit=1') - .reply(200, [{ status: 'finished', result: 'passed' }]) - ) - .expectBadge({ - label: 'build', - message: 'passing', - color: 'brightgreen', - }) - -t.create('Build failed') - .get('/build/wercker/go-wercker-api.json') - .intercept(nock => - nock('https://app.wercker.com/api/v3/applications/') - .get('/wercker/go-wercker-api/builds?limit=1') - .reply(200, [{ status: 'finished', result: 'failed' }]) - ) - .expectBadge({ label: 'build', message: 'failing', color: 'red' }) - -t.create('CI status by ID') - .get('/ci/559e33c8e982fc615500b357.json') - .expectBadge({ label: 'build', message: isBuildStatus }) - -t.create('CI status by ID (with branch)') - .get('/ci/559e33c8e982fc615500b357/master.json') - .expectBadge({ label: 'build', message: isBuildStatus }) + .expectBadge({ label: 'wercker', message: 'no longer available' }) -t.create('CI status by ID (no runs yet)') +t.create('CI status (deprecated)') .get('/ci/559e33c8e982fc615500b357.json') - .intercept(nock => - nock('https://app.wercker.com/api/v3') - .get('/runs?applicationId=559e33c8e982fc615500b357&limit=1') - .reply(200, []) - ) - .expectBadge({ label: 'build', message: 'not built' }) + .expectBadge({ label: 'wercker', message: 'no longer available' })