UNPKG

licenses

Version:

A small tool that detects licensing information for a given Node.js module

118 lines (99 loc) 4.08 kB
describe('opensource', function () { 'use strict'; var chai = require('chai') , expect = chai.expect; var opensource = require('../opensource') , Parser = require('../parser') , parser = new Parser(); it('exposes the full license info as array', function () { expect(opensource.full).to.be.a('array'); }); it('exposes the full license info as object', function () { expect(opensource.licenses).to.be.a('object'); expect(Object.keys(opensource.licenses).length).to.equal(opensource.full.length); }); describe('license integrity', function () { it('has the required id, name, full fields', function () { opensource.full.forEach(function (license) { ['name', 'id', 'full'].forEach(function (field) { expect(license).to.have.property(field); expect(license[field].trim()).to.equal(license[field]); }); }); }); it('has a JavaScript friendly id', function () { opensource.full.forEach(function (license) { var res = (new Function('var license = {}; return license.'+ license.id +' || "foo"'))(); expect(res).to.equal('foo'); }); }); describe('url', function () { var request = require('request'); opensource.full.filter(function filter(license) { return !!license.url; }).forEach(function each(license) { it('has a valid license url for: '+ license.full, function (next) { this.timeout(10000); request({ uri: license.url, followRedirect: false, headers: { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding': 'gzip,deflate,sdch', 'Accept-Language': 'en-US,en;q=0.8', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'DNT': '1', 'Pragma': 'no-cache', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36' } }, function done(err, res, body) { if (err) return next(err); if (res.statusCode !== 200) return next(new Error('Invalid statusCode: '+ res.statusCode)); next(); }); }); }); }); describe('tldr', function () { var request = require('request'); opensource.full.filter(function filter(license) { return !!license.tldr; }).forEach(function each(license) { it('has a valid license tldr for: '+ license.full, function (next) { this.timeout(10000); request({ uri: license.tldr, followRedirect: false, headers: { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding': 'gzip,deflate,sdch', 'Accept-Language': 'en-US,en;q=0.8', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'DNT': '1', 'Pragma': 'no-cache', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36' } }, function done(err, res, body) { if (err) return next(err); if (res.statusCode !== 200) return next(new Error('Invalid statusCode: '+ res.statusCode)); next(); }); }); }); }); describe('file', function () { var path = require('path') , fs = require('fs'); opensource.full.filter(function file(license) { return !!license.file; }).forEach(function each(license) { var content = fs.readFileSync(path.join(__dirname, '../licenses/'+ license.file), 'utf-8'); it(license.name +' can be found through its license file content', function () { expect(parser.scan(content)[0]).to.equal(license.name); }); }); }); }); });