mirror of
https://github.com/usebruno/bruno.git
synced 2024-11-21 23:43:15 +01:00
fix: import openapi -- baseUrl env value should not include trailing slash (#3440)
* fix: openapi baseUrl env value should remove trailing slash * feat: updates
This commit is contained in:
parent
59108472a2
commit
aff7c405cd
16
packages/bruno-app/jest.config.js
Normal file
16
packages/bruno-app/jest.config.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
module.exports = {
|
||||||
|
rootDir: '.',
|
||||||
|
moduleNameMapper: {
|
||||||
|
'^assets/(.*)$': '<rootDir>/src/assets/$1',
|
||||||
|
'^components/(.*)$': '<rootDir>/src/components/$1',
|
||||||
|
'^hooks/(.*)$': '<rootDir>/src/hooks/$1',
|
||||||
|
'^themes/(.*)$': '<rootDir>/src/themes/$1',
|
||||||
|
'^api/(.*)$': '<rootDir>/src/api/$1',
|
||||||
|
'^pageComponents/(.*)$': '<rootDir>/src/pageComponents/$1',
|
||||||
|
'^providers/(.*)$': '<rootDir>/src/providers/$1',
|
||||||
|
'^utils/(.*)$': '<rootDir>/src/utils/$1'
|
||||||
|
},
|
||||||
|
clearMocks: true,
|
||||||
|
moduleDirectories: ['node_modules', 'src'],
|
||||||
|
testEnvironment: 'node'
|
||||||
|
};
|
@ -316,7 +316,7 @@ const getDefaultUrl = (serverObject) => {
|
|||||||
url = url.replace(`{${variableName}}`, sub);
|
url = url.replace(`{${variableName}}`, sub);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return url.endsWith('/') ? url : `${url}/`;
|
return url.endsWith('/') ? url.slice(0, -1) : url;
|
||||||
};
|
};
|
||||||
|
|
||||||
const getSecurity = (apiSpec) => {
|
const getSecurity = (apiSpec) => {
|
||||||
@ -353,7 +353,7 @@ const openAPIRuntimeExpressionToScript = (expression) => {
|
|||||||
return expression;
|
return expression;
|
||||||
};
|
};
|
||||||
|
|
||||||
const parseOpenApiCollection = (data) => {
|
export const parseOpenApiCollection = (data) => {
|
||||||
const brunoCollection = {
|
const brunoCollection = {
|
||||||
name: '',
|
name: '',
|
||||||
uid: uuid(),
|
uid: uuid(),
|
||||||
|
@ -0,0 +1,67 @@
|
|||||||
|
import { parseOpenApiCollection } from './openapi-collection';
|
||||||
|
import { uuid } from 'utils/common';
|
||||||
|
|
||||||
|
jest.mock('utils/common');
|
||||||
|
|
||||||
|
describe('openapi importer util functions', () => {
|
||||||
|
afterEach(jest.clearAllMocks);
|
||||||
|
|
||||||
|
it('should convert openapi object to bruno collection correctly', async () => {
|
||||||
|
const input = {
|
||||||
|
openapi: '3.0.3',
|
||||||
|
info: {
|
||||||
|
title: 'Sample API with Multiple Servers',
|
||||||
|
description: 'API spec with multiple servers.',
|
||||||
|
version: '1.0.0'
|
||||||
|
},
|
||||||
|
servers: [
|
||||||
|
{ url: 'https://api.example.com/v1', description: 'Production Server' },
|
||||||
|
{ url: 'https://staging-api.example.com/v1', description: 'Staging Server' },
|
||||||
|
{ url: 'http://localhost:3000/v1', description: 'Local Server' }
|
||||||
|
],
|
||||||
|
paths: {
|
||||||
|
'/users': {
|
||||||
|
get: {
|
||||||
|
summary: 'Get a list of users',
|
||||||
|
parameters: [
|
||||||
|
{ name: 'page', in: 'query', required: false, schema: { type: 'integer' } },
|
||||||
|
{ name: 'limit', in: 'query', required: false, schema: { type: 'integer' } }
|
||||||
|
],
|
||||||
|
responses: {
|
||||||
|
'200': { description: 'A list of users' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const expectedOutput = {
|
||||||
|
name: 'Sample API with Multiple Servers',
|
||||||
|
version: '1',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
name: 'Get a list of users',
|
||||||
|
type: 'http-request',
|
||||||
|
request: {
|
||||||
|
url: '{{baseUrl}}/users',
|
||||||
|
method: 'GET',
|
||||||
|
params: [
|
||||||
|
{ name: 'page', value: '', enabled: false, type: 'query' },
|
||||||
|
{ name: 'limit', value: '', enabled: false, type: 'query' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
environments: [
|
||||||
|
{ name: 'Production Server', variables: [{ name: 'baseUrl', value: 'https://api.example.com/v1' }] },
|
||||||
|
{ name: 'Staging Server', variables: [{ name: 'baseUrl', value: 'https://staging-api.example.com/v1' }] },
|
||||||
|
{ name: 'Local Server', variables: [{ name: 'baseUrl', value: 'http://localhost:3000/v1' }] }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
const result = await parseOpenApiCollection(input);
|
||||||
|
|
||||||
|
expect(result).toMatchObject(expectedOutput);
|
||||||
|
expect(uuid).toHaveBeenCalledTimes(10);
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user