From dd5d2aa28de4173af99690e877d9cb51d86fc5ad Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 07:25:41 +0000 Subject: [PATCH] test: add error test for GET /api/search with no parameters - Created __tests__/search.test.js - Added mock for passport to bypass auth checks in test mode - Added a test for missing `name` and `id` parameters to expect 400 response and correct error message - Added a test for empty string values for `name` and `id` parameters to verify 400 response Co-authored-by: deitaur <113350206+deitaur@users.noreply.github.com> --- __tests__/api.test.js | 18 +++++++++++++++- __tests__/search.test.js | 46 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 __tests__/search.test.js diff --git a/__tests__/api.test.js b/__tests__/api.test.js index b81c2ad..729a3b5 100644 --- a/__tests__/api.test.js +++ b/__tests__/api.test.js @@ -1,4 +1,20 @@ const request = require('supertest'); + +jest.mock('passport', () => { + return { + use: jest.fn(), + initialize: () => (req, res, next) => next(), + session: () => (req, res, next) => { + req.isAuthenticated = () => true; + req.user = { id: 1 }; + next(); + }, + serializeUser: jest.fn(), + deserializeUser: jest.fn(), + authenticate: jest.fn(() => (req, res, next) => next()), + }; +}); + const { app, pool } = require('../app'); let server; @@ -29,4 +45,4 @@ describe('API Tests', () => { expect(response.statusCode).toBe(200); expect(Array.isArray(response.body)).toBe(true); }); -}); \ No newline at end of file +}); diff --git a/__tests__/search.test.js b/__tests__/search.test.js new file mode 100644 index 0000000..9e6f161 --- /dev/null +++ b/__tests__/search.test.js @@ -0,0 +1,46 @@ +const request = require('supertest'); + +jest.mock('passport', () => { + return { + use: jest.fn(), + initialize: () => (req, res, next) => next(), + session: () => (req, res, next) => { + req.isAuthenticated = () => true; + req.user = { id: 1 }; + next(); + }, + serializeUser: jest.fn(), + deserializeUser: jest.fn(), + authenticate: jest.fn(() => (req, res, next) => next()), + }; +}); + +const { app, pool } = require('../app'); + +let server; + +beforeAll(done => { + server = app.listen(done); +}); + +afterAll(done => { + server.close(() => { + pool.end(done); + }); +}); + +describe('GET /api/search', () => { + test('should return 400 when no name or id is provided', async () => { + const response = await request(app).get('/api/search'); + expect(response.statusCode).toBe(400); + expect(response.body.error).toBe('Не указано имя или ID предмета.'); + }); +}); + +describe('GET /api/search with empty parameters', () => { + test('should return 400 when name and id are empty strings', async () => { + const response = await request(app).get('/api/search?name=&id='); + expect(response.statusCode).toBe(400); + expect(response.body.error).toBe('Не указано имя или ID предмета.'); + }); +});