Fixes #2876 with @paulmelnikow's suggestion Moved imports of `ServiceTester` and `createServiceTester` to a separate file so that dev dependencies are not imported by service classes.
93 lines
2.7 KiB
JavaScript
93 lines
2.7 KiB
JavaScript
'use strict'
|
|
|
|
const Joi = require('joi')
|
|
const { isMetric } = require('../test-validators')
|
|
|
|
const t = (module.exports = require('../tester').createServiceTester())
|
|
|
|
t.create('Downloads all releases')
|
|
.get('/downloads/photonstorm/phaser/total.json')
|
|
.expectJSONTypes(
|
|
Joi.object().keys({
|
|
name: 'downloads',
|
|
value: Joi.string().regex(/^\w+\s+total$/),
|
|
})
|
|
)
|
|
|
|
t.create('Downloads all releases (repo not found)')
|
|
.get('/downloads/badges/helmets/total.json')
|
|
.expectJSON({
|
|
name: 'downloads',
|
|
value: 'repo or release not found',
|
|
})
|
|
|
|
t.create('downloads for latest release')
|
|
.get('/downloads/photonstorm/phaser/latest/total.json')
|
|
.expectJSONTypes(Joi.object().keys({ name: 'downloads', value: isMetric }))
|
|
|
|
t.create('downloads-pre for latest release')
|
|
.get('/downloads-pre/photonstorm/phaser/latest/total.json')
|
|
.expectJSONTypes(Joi.object().keys({ name: 'downloads', value: isMetric }))
|
|
|
|
t.create('downloads for release without slash')
|
|
.get('/downloads/atom/atom/v0.190.0/total.json')
|
|
.expectJSONTypes(
|
|
Joi.object().keys({
|
|
name: 'downloads',
|
|
value: Joi.string().regex(/^[0-9]+[kMGTPEZY]? v0\.190\.0$/),
|
|
})
|
|
)
|
|
|
|
t.create('downloads for specific asset without slash')
|
|
.get('/downloads/atom/atom/v0.190.0/atom-amd64.deb.json')
|
|
.expectJSONTypes(
|
|
Joi.object().keys({
|
|
name: 'downloads',
|
|
value: Joi.string().regex(
|
|
/^[0-9]+[kMGTPEZY]? v0\.190\.0 \[atom-amd64\.deb\]$/
|
|
),
|
|
})
|
|
)
|
|
|
|
t.create('downloads for specific asset from latest release')
|
|
.get('/downloads/atom/atom/latest/atom-amd64.deb.json')
|
|
.expectJSONTypes(
|
|
Joi.object().keys({
|
|
name: 'downloads',
|
|
value: Joi.string().regex(/^[0-9]+[kMGTPEZY]? \[atom-amd64\.deb\]$/),
|
|
})
|
|
)
|
|
|
|
t.create('downloads-pre for specific asset from latest release')
|
|
.get('/downloads-pre/atom/atom/latest/atom-amd64.deb.json')
|
|
.expectJSONTypes(
|
|
Joi.object().keys({
|
|
name: 'downloads',
|
|
value: Joi.string().regex(/^[0-9]+[kMGTPEZY]? \[atom-amd64\.deb\]$/),
|
|
})
|
|
)
|
|
|
|
t.create('downloads for release with slash')
|
|
.get('/downloads/NHellFire/dban/stable/v2.2.8/total.json')
|
|
.expectJSONTypes(
|
|
Joi.object().keys({
|
|
name: 'downloads',
|
|
value: Joi.string().regex(/^[0-9]+[kMGTPEZY]? stable\/v2\.2\.8$/),
|
|
})
|
|
)
|
|
|
|
t.create('downloads for specific asset with slash')
|
|
.get('/downloads/NHellFire/dban/stable/v2.2.8/dban-2.2.8_i586.iso.json')
|
|
.expectJSONTypes(
|
|
Joi.object().keys({
|
|
name: 'downloads',
|
|
value: Joi.string().regex(
|
|
/^[0-9]+[kMGTPEZY]? stable\/v2\.2\.8 \[dban-2\.2\.8_i586\.iso\]$/
|
|
),
|
|
})
|
|
)
|
|
|
|
t.create('downloads for unknown release')
|
|
.get('/downloads/atom/atom/does-not-exist/total.json')
|
|
.expectJSON({ name: 'downloads', value: 'repo or release not found' })
|