'use strict'; const Joi = require('joi'); const ServiceTester = require('./runner/service-tester'); const t = new ServiceTester({ id: 'github', title: 'Github' }); module.exports = t; t.create('File size') .get('/size/webcaetano/craft/build/phaser-craft.min.js.json') .expectJSONTypes(Joi.object().keys({ name: Joi.equal('size'), value: Joi.string().regex(/^[0-9]*[.]?[0-9]+\s(B|kB|MB|GB|TB|PB|EB|ZB|YB)$/), })); t.create('File size 404') .get('/size/webcaetano/craft/build/does-not-exist.min.js.json') .expectJSONTypes(Joi.object().keys({ name: Joi.equal('size'), value: Joi.string().regex(/^repo or file not found$/), })); t.create('File size for "not a regular file"') .get('/size/webcaetano/craft/build.json') .expectJSONTypes(Joi.object().keys({ name: Joi.equal('size'), value: Joi.string().regex(/^not a regular file$/), })); t.create('downloads for release without slash') .get('/downloads/atom/atom/v0.190.0/total.json') .expectJSONTypes(Joi.object().keys({ name: Joi.equal('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: Joi.equal('downloads'), value: Joi.string().regex(/^[0-9]+[kMGTPEZY]? v0\.190\.0 \[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: Joi.equal('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: Joi.equal('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: 'none' }); t.create('hit counter') .get('/search/torvalds/linux/goto.json') .expectJSONTypes(Joi.object().keys({ name: Joi.equal('goto counter'), value: Joi.string().regex(/^[0-9]*(k|M|G|T|P|E|Z|Y)$/), })); t.create('hit counter for nonexistent repo') .get('/search/torvalds/not-linux/goto.json') .expectJSONTypes(Joi.object().keys({ name: Joi.equal('goto counter'), value: Joi.string().regex(/^repo not found$/), }));