12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- const assert = require('assert');
- const sinon = require('sinon');
- const proxyquire = require('proxyquire').noCallThru();
- const config = {
- l10n_dev: false // prod configuration
- };
- const pkg = {
- availableLanguages: ['en-US', 'fr', 'it', 'es-ES']
- };
- function request(acceptLang) {
- return {
- headers: {
- 'accept-language': acceptLang
- }
- };
- }
- const langMiddleware = proxyquire('../../server/middleware/language', {
- '../config': config,
- '../../package.json': pkg
- });
- describe('Language Middleware', function() {
- it('defaults to en-US when no header is present', function() {
- const req = request();
- const next = sinon.stub();
- langMiddleware(req, null, next);
- assert.equal(req.language, 'en-US');
- sinon.assert.calledOnce(next);
- });
- it('sets req.language to en-US when accept-language > 255 chars', function() {
- const accept = Array(257).join('a');
- assert.equal(accept.length, 256);
- const req = request(accept);
- const next = sinon.stub();
- langMiddleware(req, null, next);
- assert.equal(req.language, 'en-US');
- sinon.assert.calledOnce(next);
- });
- it('defaults to en-US when no accept-language is available', function() {
- const req = request('fa,cs,ja');
- const next = sinon.stub();
- langMiddleware(req, null, next);
- assert.equal(req.language, 'en-US');
- sinon.assert.calledOnce(next);
- });
- it('prefers higher q values', function() {
- const req = request('fa;q=0.5, it;q=0.9');
- const next = sinon.stub();
- langMiddleware(req, null, next);
- assert.equal(req.language, 'it');
- sinon.assert.calledOnce(next);
- });
- it('uses likely subtags', function() {
- const req = request('es-MX');
- const next = sinon.stub();
- langMiddleware(req, null, next);
- assert.equal(req.language, 'es-ES');
- sinon.assert.calledOn(next);
- });
- });
|