diff --git a/services/docker/docker-cloud-automated.service.js b/services/docker/docker-cloud-automated.service.js index a4692a643583b8794018cc1f507a271b9269ceac..55da8e9fe7d443f482006ac3012a484f8e49ce0a 100644 --- a/services/docker/docker-cloud-automated.service.js +++ b/services/docker/docker-cloud-automated.service.js @@ -28,6 +28,12 @@ export default class DockerCloudAutomatedBuild extends BaseJsonService { async handle({ user, repo }) { const data = await fetchBuild(this, { user, repo }) + + if (data.objects.length === 0) { + return this.constructor.render({ + buildSettings: [], + }) + } return this.constructor.render({ buildSettings: data.objects[0].build_settings, }) diff --git a/services/docker/docker-cloud-automated.tester.js b/services/docker/docker-cloud-automated.tester.js index 936451900d4486fc38b365a41d0678a596f09614..25e3614876b276ee3e962e2adf6195b498c53ca5 100644 --- a/services/docker/docker-cloud-automated.tester.js +++ b/services/docker/docker-cloud-automated.tester.js @@ -5,13 +5,29 @@ export const t = await createServiceTester() const isAutomatedBuildStatus = Joi.string().valid('automated', 'manual') -t.create('docker cloud automated build (valid, user)') - .get('/jrottenberg/ffmpeg.json') +t.create('docker cloud automated build (valid user)') + .get('/pavics/magpie.json') .expectBadge({ label: 'docker build', message: isAutomatedBuildStatus, }) +t.create('docker cloud automated build status (invalid, nonexisting user)') + .get('/pavicsssss/magpie.json') + .expectBadge({ + label: 'docker build', + message: `manual`, + }) + +t.create( + `docker cloud build status (valid user, but the 'objects' array from the response is empty)` +) + .get('/pavics/weaver.json') + .expectBadge({ + label: 'docker build', + message: `manual`, + }) + t.create('docker cloud automated build (not found)') .get('/badges/not-a-real-repo.json') .intercept(nock => diff --git a/services/docker/docker-cloud-build.service.js b/services/docker/docker-cloud-build.service.js index 8fd3aa8b45f3e85230d03f6994724ac62a9025b8..22ec6f5d4fba8ae2dd779f549ea110f0828c566a 100644 --- a/services/docker/docker-cloud-build.service.js +++ b/services/docker/docker-cloud-build.service.js @@ -1,4 +1,4 @@ -import { BaseJsonService } from '../index.js' +import { BaseJsonService, NotFound } from '../index.js' import { dockerBlue, buildDockerUrl } from './docker-helpers.js' import { fetchBuild } from './docker-cloud-common-fetch.js' @@ -31,6 +31,12 @@ export default class DockerCloudBuild extends BaseJsonService { async handle({ user, repo }) { const data = await fetchBuild(this, { user, repo }) + + if (data.objects.length === 0) { + throw new NotFound({ + prettyMessage: `automated builds not set up`, + }) + } return this.constructor.render({ state: data.objects[0].state }) } } diff --git a/services/docker/docker-cloud-build.tester.js b/services/docker/docker-cloud-build.tester.js index 9335af250124dfec39bed06cf4880e37258c10b7..1f874d5879c3a69fc030e39d674aceda420ca885 100644 --- a/services/docker/docker-cloud-build.tester.js +++ b/services/docker/docker-cloud-build.tester.js @@ -3,13 +3,29 @@ import { createServiceTester } from '../tester.js' import { dockerBlue } from './docker-helpers.js' export const t = await createServiceTester() -t.create('docker cloud build status (valid, user)') - .get('/jrottenberg/ffmpeg.json') +t.create('docker cloud build status (valid user)') + .get('/pavics/magpie.json') .expectBadge({ label: 'docker build', message: isBuildStatus, }) +t.create('docker cloud build status (invalid, nonexisting user)') + .get('/pavicsssss/magpie.json') + .expectBadge({ + label: 'docker build', + message: `automated builds not set up`, + }) + +t.create( + `docker cloud build status (valid user, but the 'objects' array from the response is empty)` +) + .get('/pavics/weaver.json') + .expectBadge({ + label: 'docker build', + message: `automated builds not set up`, + }) + t.create('docker cloud build status (not found)') .get('/badges/not-a-real-repo.json') .intercept(nock => diff --git a/services/docker/docker-cloud-common-fetch.js b/services/docker/docker-cloud-common-fetch.js index f0047cb576f7ae0a9343a1bbe0cc77ebddd16c12..26204daee502c371bf9808b89bf69a589878e642 100644 --- a/services/docker/docker-cloud-common-fetch.js +++ b/services/docker/docker-cloud-common-fetch.js @@ -6,7 +6,7 @@ const cloudBuildSchema = Joi.object({ Joi.object({ state: Joi.string(), build_settings: Joi.array(), - }).required() + }) ) .required(), }).required() diff --git a/services/docker/docker-version.tester.js b/services/docker/docker-version.tester.js index fe13f285943b88e6ddd644b95bcefad10e5e6fd6..c737cb8abe1f65262c8e027a1f68cec8cf82de57 100644 --- a/services/docker/docker-version.tester.js +++ b/services/docker/docker-version.tester.js @@ -39,5 +39,5 @@ t.create('docker version (invalid, unknown repository)') .get('/_/not-a-real-repo.json') .expectBadge({ label: 'version', - message: 'repository not found', + message: 'repository or tag not found', })