/** * Generated Jest tests for {{ api_title }} API v{{ api_version }} * * This file was auto-generated by API TestGen. */ const request = require('supertest'); const BASE_URL = process.env.MOCK_SERVER_URL || '{{ mock_server_url }}'; {% if security_schemes %} {% for scheme_name, scheme in security_schemes.items() %} {% if scheme.type == "apiKey" %} const get{{ scheme_name|capitalize }}Headers = () => ({{ "{{ scheme.name }}": process.env.API_KEY || 'your-api-key', }}); {% elif scheme.type == "http" and scheme.scheme == "bearer" %} const getBearerHeaders = () => ({{ Authorization: `Bearer ${{process.env.TOKEN || 'your-token'}}`, }}); {% elif scheme.type == "http" and scheme.scheme == "basic" %} const getBasicHeaders = () => {{ const credentials = Buffer.from(`${{process.env.USERNAME || 'username'}}:${{process.env.PASSWORD || 'password'}}`).toString('base64'); return {{ Authorization: `Basic ${{credentials}}` }}; }}; {% endif %} {% endfor %} {% endif %} const validateResponse = (response, expectedStatus) => {{ expect(response.headers['content-type']).toMatch(/application\\/json/); if (expectedStatus) {{ expect(response.status).toBe(expectedStatus); }} }}; describe('{{ api_title }} API', () => {{ {% for endpoint in endpoints %} {% set endpoint_id = endpoint.operation_id or (endpoint.method + "_" + endpoint.path.strip("/").replace("/", "_").replace("{", "").replace("}", "")) %} describe('{{ endpoint.method.upper() }} {{ endpoint.path }}', () => {{ {{ endpoint.description or "" }} it('should return valid response', async () => {{ {% if endpoint.security %} {% set scheme_name = endpoint.security[0].keys()|first %} {% set scheme = security_schemes[scheme_name] %} {% if scheme.type == "apiKey" %} const headers = get{{ scheme_name|capitalize }}Headers(); {% elif scheme.type == "http" and scheme.scheme == "bearer" %} const headers = getBearerHeaders(); {% elif scheme.type == "http" and scheme.scheme == "basic" %} const headers = getBasicHeaders(); {% else %} const headers = {{}}; {% endif %} {% else %} const headers = {{ 'Content-Type': 'application/json' }}; {% endif %} {% if endpoint.method in ["post", "put", "patch"] %} const body = {{}}; const response = await request(BASE_URL) .{{ endpoint["method"] }}('{{ endpoint["path"] }}') .send(body) .set(headers); {% else %} {% if endpoint.parameters|selectattr("in", "equalto", "query")|list %} {% set query_params = endpoint.parameters|selectattr("in", "equalto", "query")|list %} const queryParams = {{ {% for param in query_params %} {{ param.name }}: 'test'{% if not loop.last %}, {% endif %} {% endfor %} }}; const response = await request(BASE_URL) .{{ endpoint["method"] }}('{{ endpoint["path"] }}') .query(queryParams) .set(headers); {% else %} const response = await request(BASE_URL) .{{ endpoint["method"] }}('{{ endpoint["path"] }}') .set(headers); {% endif %} {% endif %} expect([200, 201, 204]).toContain(response.status); {% if endpoint.responses["200"] %} validateResponse(response, {{ endpoint.responses["200"] }}); {% else %} validateResponse(response); {% endif %} }}); }}); {% endfor %} }});