nexstream-api / backend /tests /security /resilience.integration.test.ts
circleci
deploy ccb248c
65fc551
Raw
History Blame Contribute Delete
1.27 kB
import { describe, it, expect, vi } from 'vitest';
import request from 'supertest';
import app from '../../src/app.js';
import db from '../../src/utils/infra/db.util.js';
import { createRedisClient } from '../../src/utils/infra/redis.util.js';
import Redis from 'ioredis';
describe('Infrastructure Fault Injection', () => {
it('Should handle Turso Database mid-flight dropouts without crashing', async () => {
// mock DB
vi.spyOn(db, 'execute').mockRejectedValueOnce(
new Error('LibSQL Client Error: Cannot reach remote database')
);
const res = await request(app).get(
'/info?url=https://open.spotify.com/track/404'
);
// verify fallback
// expect 200
expect(res.status).toBe(200);
});
it('Should survive Redis connection timeouts during heavy concurrency checks', async () => {
const mockClient = createRedisClient('security');
vi.spyOn(mockClient as unknown as Redis, 'incr').mockRejectedValueOnce(
new Error('Redis command timeout (ETIMEDOUT)')
);
const res = await request(app)
.post('/convert')
.send({
url: 'https://www.youtube.com/watch?v=aqz-KE-bpKQ',
format: 'mp3',
});
// check Redis
// expect 500
expect(res.status).toBe(500);
});
});