From 5fa34358417939761f68262426256ba0cfb511c4 Mon Sep 17 00:00:00 2001 From: chris48s Date: Sat, 13 Jan 2024 18:25:40 +0000 Subject: [PATCH] [crates] tidyup (#9883) * fix downloads service test * remove handling of 200 OK with an error body * remove obsolete tests --- services/crates/crates-base.js | 9 +-------- services/crates/crates-downloads.service.js | 11 +---------- services/crates/crates-downloads.tester.js | 2 +- services/crates/crates-license.service.js | 14 ++------------ services/crates/crates-license.spec.js | 8 -------- services/crates/crates-msrv.service.js | 8 +------- services/crates/crates-version.service.js | 5 +---- services/crates/crates-version.spec.js | 8 -------- 8 files changed, 7 insertions(+), 58 deletions(-) diff --git a/services/crates/crates-base.js b/services/crates/crates-base.js index 86746405d9..28c1af3e7e 100644 --- a/services/crates/crates-base.js +++ b/services/crates/crates-base.js @@ -29,14 +29,7 @@ const versionSchema = Joi.object({ }).required(), }).required() -const errorSchema = Joi.object({ - errors: Joi.array() - .items(Joi.object({ detail: Joi.string().required() })) - .min(1) - .required(), -}).required() - -const schema = Joi.alternatives(crateSchema, versionSchema, errorSchema) +const schema = Joi.alternatives(crateSchema, versionSchema) class BaseCratesService extends BaseJsonService { static defaultBadgeData = { label: 'crates.io' } diff --git a/services/crates/crates-downloads.service.js b/services/crates/crates-downloads.service.js index 9bd5c655bc..f5435dbc90 100644 --- a/services/crates/crates-downloads.service.js +++ b/services/crates/crates-downloads.service.js @@ -1,5 +1,5 @@ import { renderDownloadsBadge } from '../downloads.js' -import { InvalidParameter, NotFound, pathParams } from '../index.js' +import { InvalidParameter, pathParams } from '../index.js' import { BaseCratesService, description } from './crates-base.js' export default class CratesDownloads extends BaseCratesService { @@ -93,15 +93,6 @@ export default class CratesDownloads extends BaseCratesService { const json = await this.fetch({ crate, version }) - if (json.errors) { - /* a call like - https://crates.io/api/v1/crates/libc/0.1 - or - https://crates.io/api/v1/crates/libc/0.1.76 - returns a 200 OK with an errors object */ - throw new NotFound({ prettyMessage: json.errors[0].detail }) - } - const downloads = this.transform({ variant, json }) return this.constructor.render({ variant, downloads, version }) diff --git a/services/crates/crates-downloads.tester.js b/services/crates/crates-downloads.tester.js index 407241f913..24e7d1ca7d 100644 --- a/services/crates/crates-downloads.tester.js +++ b/services/crates/crates-downloads.tester.js @@ -55,7 +55,7 @@ t.create('recent downloads (with version)') t.create('downloads (invalid version)') .get('/d/libc/7.json') - .expectBadge({ label: 'crates.io', message: 'invalid semver: 7' }) + .expectBadge({ label: 'crates.io', message: 'not found' }) t.create('downloads (not found)') .get('/d/not-a-real-package.json') diff --git a/services/crates/crates-license.service.js b/services/crates/crates-license.service.js index b59dfeb0da..42bffc2b17 100644 --- a/services/crates/crates-license.service.js +++ b/services/crates/crates-license.service.js @@ -36,17 +36,7 @@ export default class CratesLicense extends BaseCratesService { static defaultBadgeData = { label: 'license', color: 'blue' } - static render({ license: message }) { - return { message } - } - - static transform({ errors, version, versions }) { - // crates.io returns a 200 response with an errors object in - // error scenarios, e.g. https://crates.io/api/v1/crates/libc/0.1 - if (errors) { - throw new InvalidResponse({ prettyMessage: errors[0].detail }) - } - + static transform({ version, versions }) { const license = version ? version.license : versions[0].license if (!license) { throw new InvalidResponse({ prettyMessage: 'invalid null license' }) @@ -58,6 +48,6 @@ export default class CratesLicense extends BaseCratesService { async handle({ crate, version }) { const json = await this.fetch({ crate, version }) const { license } = this.constructor.transform(json) - return this.constructor.render({ license }) + return { message: license } } } diff --git a/services/crates/crates-license.spec.js b/services/crates/crates-license.spec.js index 54259e3c9d..0e9db1858d 100644 --- a/services/crates/crates-license.spec.js +++ b/services/crates/crates-license.spec.js @@ -14,14 +14,6 @@ describe('CratesLicense', function () { }).expect({ license: 'MIT/Apache 2.0' }) }) - it('throws InvalidResponse on error response', function () { - expect(() => - CratesLicense.transform({ errors: [{ detail: 'invalid semver' }] }), - ) - .to.throw(InvalidResponse) - .with.property('prettyMessage', 'invalid semver') - }) - it('throws InvalidResponse on null license with specific version', function () { expect(() => CratesLicense.transform({ version: { num: '1.2.3', license: null } }), diff --git a/services/crates/crates-msrv.service.js b/services/crates/crates-msrv.service.js index b66b3477e9..569745e557 100644 --- a/services/crates/crates-msrv.service.js +++ b/services/crates/crates-msrv.service.js @@ -51,13 +51,7 @@ export default class CratesMSRV extends BaseCratesService { static defaultBadgeData = { label: 'msrv', color: 'blue' } - static transform({ errors, version, versions }) { - // crates.io returns a 200 response with an errors object in - // error scenarios, e.g. https://crates.io/api/v1/crates/libc/0.1 - if (errors) { - throw new NotFound({ prettyMessage: errors[0].detail }) - } - + static transform({ version, versions }) { const msrv = version ? version.rust_version : versions[0].rust_version if (!msrv) { throw new NotFound({ prettyMessage: 'unknown' }) diff --git a/services/crates/crates-version.service.js b/services/crates/crates-version.service.js index e174e43ce5..fd85174d98 100644 --- a/services/crates/crates-version.service.js +++ b/services/crates/crates-version.service.js @@ -1,5 +1,5 @@ import { renderVersionBadge } from '../version.js' -import { InvalidResponse, pathParams } from '../index.js' +import { pathParams } from '../index.js' import { BaseCratesService, description } from './crates-base.js' export default class CratesVersion extends BaseCratesService { @@ -20,9 +20,6 @@ export default class CratesVersion extends BaseCratesService { } transform(json) { - if (json.errors) { - throw new InvalidResponse({ prettyMessage: json.errors[0].detail }) - } return json.crate.max_stable_version ? json.crate.max_stable_version : json.crate.max_version diff --git a/services/crates/crates-version.spec.js b/services/crates/crates-version.spec.js index 481eaf2414..f4d00f2d3d 100644 --- a/services/crates/crates-version.spec.js +++ b/services/crates/crates-version.spec.js @@ -1,6 +1,4 @@ import { test, given } from 'sazerac' -import { expect } from 'chai' -import { InvalidResponse } from '../index.js' import CratesVersion from './crates-version.service.js' describe('CratesVersion', function () { @@ -10,10 +8,4 @@ describe('CratesVersion', function () { crate: { max_stable_version: '1.1.0', max_version: '1.9.0-alpha' }, }).expect('1.1.0') }) - - it('throws InvalidResponse on error response', function () { - expect(() => - CratesVersion.prototype.transform({ errors: [{ detail: 'idk how...' }] }), - ).to.throw(InvalidResponse) - }) })