const request = require('supertest'); const express = require('express'); const helmet = require('helmet'); const badgeRouter = require('../src/api/badge'); const app = express(); app.use(helmet({ crossOriginResourcePolicy: false })); app.use(badgeRouter); describe('GET /badge', () => { it('should return SVG with default params', async () => { const res = await request(app).get('/badge'); const resBody = Buffer.from(res.body).toString(); expect(res.statusCode).toBe(200); expect(res.headers['content-type']).toMatch(/image\/svg\+xml/); expect(resBody).toContain(' { const res = await request(app).get('/badge?icon=github&label=GitHub'); const resBody = Buffer.from(res.body).toString(); expect(res.statusCode).toBe(200); expect(resBody).toContain('GitHub'); expect(resBody).toContain(' { const res = await request(app).get('/badge?icon=github'); const resBody = Buffer.from(res.body).toString(); expect(res.statusCode).toBe(200); expect(resBody).toContain(' { const res = await request(app).get('/badge?bgicon=none'); const resBody = Buffer.from(res.body).toString(); expect(res.statusCode).toBe(200); expect(resBody).toContain('fill="none"'); }); it('should set label background to transparent', async () => { const res = await request(app).get('/badge?bglabel=none'); const resBody = Buffer.from(res.body).toString(); expect(res.statusCode).toBe(200); expect(resBody).toContain('fill="none"'); }); it('should use flat style with rounded corners', async () => { const res = await request(app).get('/badge?style=flat'); const resBody = Buffer.from(res.body).toString(); expect(res.statusCode).toBe(200); expect(resBody).toContain('rx="'); }); it('should handle labelpos left', async () => { const res = await request(app).get('/badge?labelpos=left'); const resBody = Buffer.from(res.body).toString(); expect(res.statusCode).toBe(200); expect(resBody).toContain(' { const res = await request(app).get('/badge?labelpos=above'); const resBody = Buffer.from(res.body).toString(); expect(res.statusCode).toBe(200); expect(resBody).toContain(' { const res = await request(app).get('/badge?labelpos=below'); const resBody = Buffer.from(res.body).toString(); expect(res.statusCode).toBe(200); expect(resBody).toContain(' { const res = await request(app).get('/badge?fontweight=bold'); const resBody = Buffer.from(res.body).toString(); expect(res.statusCode).toBe(200); expect(resBody).toContain('font-weight="bold"'); }); // Test not applicable, since icon is not real should handle 404 from CDN it('should return 404 for unknown icon', async () => { const res = await request(app).get('/badge?icon=notarealicon'); expect(res.statusCode).toBe(404); }); });