mirror of
https://github.com/strapi/strapi.git
synced 2025-08-13 19:27:34 +00:00
145 lines
3.6 KiB
JavaScript
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);
|
|
});
|
|
});
|
|
});
|