'use strict' const { makeColor } = require('../../lib/badge-data') const { licenseToColor } = require('../../lib/licenses') const { colorScheme: colorsB } = require('../test-helpers') const publicDomainLicenseColor = makeColor(licenseToColor('CC0-1.0')) const permissiveLicenseColor = colorsB[licenseToColor('MIT')] const copyleftLicenseColor = colorsB[licenseToColor('GPL-3.0')] const unknownLicenseColor = colorsB[licenseToColor()] const t = (module.exports = require('../create-service-tester')()) t.create('Public domain license') .get('/github/gitignore.json?style=_shields_test') .expectJSON({ name: 'license', value: 'CC0-1.0', colorB: publicDomainLicenseColor, }) t.create('Copyleft license') .get('/ansible/ansible.json?style=_shields_test') .expectJSON({ name: 'license', value: 'GPL-3.0', colorB: copyleftLicenseColor, }) t.create('Permissive license') .get('/atom/atom.json?style=_shields_test') .expectJSON({ name: 'license', value: 'MIT', colorB: permissiveLicenseColor }) t.create('License for repo without a license') .get('/badges/badger.json?style=_shields_test') .expectJSON({ name: 'license', value: 'missing', colorB: colorsB.red }) t.create('License for repo with an unrecognized license') .get('/philokev/sopel-noblerealms.json?style=_shields_test') .expectJSON({ name: 'license', value: 'unknown', colorB: unknownLicenseColor, }) t.create('License with SPDX id not appearing in configuration') .get('/user1/project-with-EFL-license.json?style=_shields_test') .intercept(nock => nock('https://api.github.com') .get('/repos/user1/project-with-EFL-license') .query(true) // GitHub API currently returns "other" as a key for repo with EFL license .reply(200, { license: { key: 'efl-1.0', name: 'Eiffel Forum License v1.0', spdx_id: 'EFL-1.0', url: 'https://api.github.com/licenses/efl-1.0', featured: true, }, }) ) .expectJSON({ name: 'license', value: 'EFL-1.0', colorB: unknownLicenseColor, }) t.create('License for unknown repo') .get('/user1/github-does-not-have-this-repo.json?style=_shields_test') .expectJSON({ name: 'license', value: 'repo not found', colorB: colorsB.lightgrey, }) t.create('License - API rate limit exceeded') .get('/user1/repo1.json?style=_shields_test') .intercept(nock => nock('https://api.github.com') .get('/repos/user1/repo1') .query(true) .reply(403, { message: "API rate limit exceeded for 123.123.123.123. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)", documentation_url: 'https://developer.github.com/v3/#rate-limiting', }) ) .expectJSON({ name: 'license', value: 'access denied', colorB: colorsB.lightgrey, })