0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-02-03 23:09:17 -05:00
verdaccio/packages/middleware/test/media.spec.ts
Marc Bernard 899504143a
fix(middleware): allow content-type with charset (#4990)
* fix(middleware): allow content-type with charset

* Add test
2024-12-12 21:37:46 +01:00

56 lines
1.5 KiB
TypeScript

import mime from 'mime';
import request from 'supertest';
import { test } from 'vitest';
import { HEADERS, HTTP_STATUS } from '@verdaccio/core';
import { media } from '../src';
import { getApp } from './helper';
test('media is json', async () => {
const app = getApp([]);
app.get('/json', media(mime.getType('json')), (req, res) => {
res.status(200).json();
});
return request(app)
.get('/json')
.set(HEADERS.CONTENT_TYPE, 'application/json')
.expect('Content-Type', /json/)
.expect(200);
});
test('media is json with charset', async () => {
const app = getApp([]);
app.get('/json', media(mime.getType('json')), (req, res) => {
res.status(200).json();
});
return request(app)
.get('/json')
.set(HEADERS.CONTENT_TYPE, 'application/json; charset=utf-8')
.expect('Content-Type', /json/)
.expect(200);
});
test('media is not json', async () => {
const app = getApp([]);
app.get('/json', media(mime.getType('json')), (req, res) => {
res.status(HTTP_STATUS.OK).json({});
});
return request(app)
.get('/json')
.set(HEADERS.CONTENT_TYPE, 'text/html; charset=utf-8')
.expect('Content-Type', /html/)
.expect(HTTP_STATUS.UNSUPPORTED_MEDIA);
});
test('missing content-type', async () => {
const app = getApp([]);
app.get('/json', media(mime.getType('json')), (req, res) => {
res.status(HTTP_STATUS.OK).json({});
});
return request(app).get('/json').expect(HTTP_STATUS.UNSUPPORTED_MEDIA);
});