2015-10-01 00:30:16 +02:00

145 lines
3.6 KiB
JavaScript

'use strict';
const fs = require('fs');
const join = require('path').join;
const request = require('supertest');
const strapi = require('../../..');
describe('favicon', function () {
const path = join(__dirname, 'fixtures', 'favicon.ico');
it('should only respond on `/favicon.ico`', function (done) {
const app = strapi.server();
app.use(strapi.middlewares.favicon(path));
app.use(function * () {
(this.body == null).should.be.true;
(this.get('Content-Type') == null).should.be.true;
this.body = 'hello';
});
request(app.listen())
.get('/')
.expect('hello', done);
});
it('favicon should 404 if `path` is missing', function (done) {
const app = strapi.server();
app.use(strapi.middlewares.favicon());
request(app.listen())
.post('/favicon.ico')
.expect(404, done);
});
it('should not accept POST requests', function (done) {
const app = strapi.server();
app.use(strapi.middlewares.favicon(path));
request(app.listen())
.post('/favicon.ico')
.expect('Allow', 'GET, HEAD, OPTIONS')
.expect(405, done);
});
it('should send the favicon', function (done) {
const body = fs.readFileSync(path);
const app = strapi.server();
app.use(strapi.middlewares.favicon(path));
request(app.listen())
.get('/favicon.ico')
.expect(200)
.expect('Content-Type', 'image/x-icon')
.expect(body, done);
});
it('should set cache-control headers', function (done) {
const app = strapi.server();
app.use(strapi.middlewares.favicon(path));
request(app.listen())
.get('/favicon.ico')
.expect('Cache-Control', 'public, max-age=86400')
.expect(200, done);
});
describe('options.maxAge', function () {
it('should set max-age', function (done) {
const app = strapi.server();
app.use(strapi.middlewares.favicon(path, {
maxAge: 5000
}));
request(app.listen())
.get('/favicon.ico')
.expect('Cache-Control', 'public, max-age=5')
.expect(200, done);
});
it('should accept 0', function (done) {
const app = strapi.server();
app.use(strapi.middlewares.favicon(path, {
maxAge: 0
}));
request(app.listen())
.get('/favicon.ico')
.expect('Cache-Control', 'public, max-age=0')
.expect(200, done);
});
it('should be valid delta-seconds', function (done) {
const app = strapi.server();
app.use(strapi.middlewares.favicon(path, {
maxAge: 1234
}));
request(app.listen())
.get('/favicon.ico')
.expect('Cache-Control', 'public, max-age=1')
.expect(200, done);
});
it('should floor at 0', function (done) {
const app = strapi.server();
app.use(strapi.middlewares.favicon(path, {
maxAge: -4000
}));
request(app.listen())
.get('/favicon.ico')
.expect('Cache-Control', 'public, max-age=0')
.expect(200, done);
});
it('should ceil at 31556926', function (done) {
const app = strapi.server();
app.use(strapi.middlewares.favicon(path, {
maxAge: 900000000000
}));
request(app.listen())
.get('/favicon.ico')
.expect('Cache-Control', 'public, max-age=31556926')
.expect(200, done);
});
it('should accept Infinity', function (done) {
const app = strapi.server();
app.use(strapi.middlewares.favicon(path, {
maxAge: Infinity
}));
request(app.listen())
.get('/favicon.ico')
.expect('Cache-Control', 'public, max-age=31556926')
.expect(200, done);
});
});
});