[crates] tidyup (#9883)
* fix downloads service test * remove handling of 200 OK with an error body * remove obsolete tests
This commit is contained in:
@@ -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' }
|
||||
|
||||
@@ -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 })
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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 }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 } }),
|
||||
|
||||
@@ -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' })
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user