remove /media endpoint

This commit is contained in:
Florian Zumpe
2026-06-17 00:10:46 +02:00
parent c98f304ffa
commit 833b5ad3a4
12 changed files with 443 additions and 365 deletions
+12 -8
View File
@@ -18,6 +18,7 @@ test('complete REST API documentation is kept outside the README', async () => {
'GET /api/health',
'GET /api/routes',
'GET /api/routes/:id',
'GET /api/routes/:id/gpx',
'GET /api/routes/:id/pois',
'GET /api/pois/:id',
'POST /api/routes',
@@ -31,9 +32,10 @@ test('complete REST API documentation is kept outside the README', async () => {
'PUT /api/routes/:id/pictures/:pictureId',
'DELETE /api/routes/:id/pictures/:pictureId',
'GET /api/routes/:id/audio',
'GET /api/routes/:id/audio/:poiId',
'POST /api/routes/:id/audio',
'PUT /api/routes/:id/audio',
'DELETE /api/routes/:id/audio',
'PUT /api/routes/:id/audio/:poiId',
'DELETE /api/routes/:id/audio/:poiId',
'DELETE /api/routes/:id',
'POST /api/routes/:id/restore'
]) {
@@ -43,7 +45,7 @@ test('complete REST API documentation is kept outside the README', async () => {
for (const parameter of [
'lat', 'lon', 'radiusKm', 'includeDeleted', 'gpx', 'name', 'slug',
'description', 'schoolName', 'title', 'triggerRadiusM', 'sequence',
'picture', 'pictureId', 'caption', 'audio', 'poiId'
'picture', 'pictureId', 'caption', 'audio', 'poiId', 'metadata'
]) {
assert.match(api, new RegExp(`\\b${parameter}\\b`), `missing parameter documentation: ${parameter}`);
}
@@ -58,13 +60,15 @@ test('POI media uploads use dedicated single-resource endpoints', async () => {
assert.match(router, /put\('\/routes\/:id\/pictures\/:pictureId', upload\.single\('picture'\)/);
assert.match(router, /delete\('\/routes\/:id\/pictures\/:pictureId'/);
assert.match(router, /post\('\/routes\/:id\/audio', upload\.single\('audio'\)/);
assert.match(router, /put\('\/routes\/:id\/audio', upload\.single\('audio'\)/);
assert.match(router, /delete\('\/routes\/:id\/audio'/);
assert.match(router, /put\('\/routes\/:id\/audio\/:poiId', upload\.single\('audio'\)/);
assert.match(router, /delete\('\/routes\/:id\/audio\/:poiId'/);
assert.match(router, /post\('\/routes\/:id\/pois', upload\.none\(\)/);
assert.doesNotMatch(routesService, /files\.images|files\.audio/);
assert.match(mediaService, /caption/);
assert.match(mediaService, /removeStoredFile/);
assert.match(mediaService, /pictureApiUrl/);
assert.match(mediaService, /audioApiUrl/);
assert.doesNotMatch(router, /audio\/:poiId/);
assert.match(router, /get\('\/routes\/:id\/gpx'/);
assert.match(router, /req\.query\.metadata === 'true'/);
assert.doesNotMatch(router, /['"`]\/media\//);
assert.doesNotMatch(routesService, /safeMediaUrl|\/media\//);
assert.doesNotMatch(mediaService, /safeMediaUrl|\/media\//);
});