mirror of
https://github.com/usebruno/bruno.git
synced 2026-07-01 00:24:08 +00:00
* feat: add helper to ensure string conversion for non-string values in Postman to Bruno conversion - Introduced `ensureString` function to convert numeric and non-string values to strings, defaulting null/undefined to an empty string. - Updated request handling in `importPostmanV2CollectionItem` to utilize `ensureString` for headers, parameters, and body fields. - Added tests to verify correct conversion of numeric values to strings in headers, query parameters, and body fields. * test: add test for numeric value conversion in Postman to Bruno transformation - Implemented a new test case to verify that numeric values in example request and response fields are correctly converted to strings during the Postman to Bruno conversion process. - The test checks various components including request headers, query parameters, path parameters, and body fields to ensure proper string conversion. * test: add multipart form value test for numeric conversion in Postman to Bruno transformation - Added a new test case to verify that numeric values in multipart form data are correctly converted to strings during the Postman to Bruno conversion process. - The test checks the conversion of numeric values in the request body to ensure proper handling in the transformation. * feat: enhance header parsing in Postman to Bruno conversion - Added `parseStringHeader` and `normalizeHeaders` functions to handle various header formats, including string headers and concatenated strings. - Updated the request and response handling in `importPostmanV2CollectionItem` to utilize the new header normalization logic. - Introduced tests to verify correct parsing of string headers, including cases with no values and concatenated headers. * refactor: enhance ensureString function for flexible fallback values - Updated the `ensureString` function to accept a fallback parameter, allowing for customizable default values instead of a fixed empty string for null/undefined inputs. - Modified the usage of `ensureString` in the `processAuth` function to utilize the new fallback feature for various authentication fields, improving the handling of optional values. * refactor: update ensureString function to handle empty values - Modified the `ensureString` function to return the fallback for null, undefined, or empty string values, enhancing its flexibility in handling various input scenarios. * chore: update ESLint configuration and enhance Postman to Bruno conversion tests - Added 'no-case-declarations' rule to ESLint configuration to enforce stricter coding standards. - Modified the `processAuth` function to ensure proper block scoping for OAuth2 case handling. - Improved header parsing logic to check for string type in content-type header. - Added new tests to verify conversion of numeric authentication values to strings in both array-backed and object-backed formats during Postman to Bruno transformation. * chore: update ESLint configuration to enforce stricter rules - Added 'no-case-declarations' rule to ESLint configuration to enhance code quality. - Adjusted existing rules for consistency and clarity in the configuration. --------- Co-authored-by: Bijin A B <bijin@usebruno.com>
bruno-converters
The converters package is responsible for converting collections from one format to a Bruno collection. It can be used as a standalone package or as a part of the Bruno framework.
Installation
npm install @usebruno/converters
Usage
Convert Postman collection to Bruno collection
const { postmanToBruno } = require('@usebruno/converters');
// Convert Postman collection to Bruno collection
const brunoCollection = postmanToBruno(postmanCollection);
Convert Postman Environment to Bruno Environment
const { postmanToBrunoEnvironment } = require('@usebruno/converters');
const brunoEnvironment = postmanToBrunoEnvironment(postmanEnvironment);
Convert Insomnia collection to Bruno collection
const { insomniaToBruno } = require('@usebruno/converters');
const brunoCollection = insomniaToBruno(insomniaCollection);
Convert OpenAPI specification to Bruno collection
const { openApiToBruno } = require('@usebruno/converters');
const brunoCollection = openApiToBruno(openApiSpecification);
Convert WSDL file to Bruno collection
import { wsdlToBruno } from '@usebruno/converters';
const brunoCollection = await wsdlToBruno(wsdlContent);
Example
const { postmanToBruno } = require('@usebruno/converters');
const fs = require('fs/promises');
const path = require('path');
async function convertPostmanToBruno(inputFile, outputFile) {
try {
// Read Postman collection file
const inputData = await fs.readFile(inputFile, 'utf8');
// Convert to Bruno collection
const brunoCollection = await postmanToBruno(JSON.parse(inputData));
// Save Bruno collection
await fs.writeFile(outputFile, JSON.stringify(brunoCollection, null, 2));
console.log('Conversion successful!');
} catch (error) {
console.error('Error during conversion:', error);
}
}
// Usage
const inputFilePath = path.resolve(__dirname, 'demo_collection.postman_collection.json');
const outputFilePath = path.resolve(__dirname, 'bruno-collection.json');
convertPostmanToBruno(inputFilePath, outputFilePath);
WSDL Import Features
The WSDL importer supports the following features:
- Service Discovery: Automatically extracts service endpoints from WSDL definitions
- Operation Mapping: Converts WSDL operations to Bruno HTTP requests
- SOAP Envelope Generation: Creates proper SOAP envelopes for each operation
- Header Configuration: Sets up appropriate Content-Type and SOAPAction headers
- Environment Variables: Creates environment variables for service base URLs
- Folder Organization: Groups operations by port type for better organization
WSDL Import Example
import { wsdlToBruno } from '@usebruno/converters';
import fs from 'fs/promises';
async function importWSDL() {
try {
// Read WSDL file
const wsdlContent = await fs.readFile('service.wsdl', 'utf8');
// Convert to Bruno collection
const brunoCollection = await wsdlToBruno(wsdlContent);
// Save Bruno collection
await fs.writeFile('soap-collection.json', JSON.stringify(brunoCollection, null, 2));
console.log('WSDL import successful!');
} catch (error) {
console.error('Error during WSDL import:', error);
}
}
importWSDL();
CLI Usage
You can also use the Bruno CLI to import WSDL files:
# Import WSDL file to a directory
bruno import wsdl --source service.wsdl --output ~/Desktop/soap-collection --collection-name "SOAP Service"
# Import WSDL from URL
bruno import wsdl --source https://example.com/service.wsdl --output ~/Desktop --collection-name "Remote SOAP Service"
# Import WSDL and save as JSON file
bruno import wsdl --source service.wsdl --output-file ~/Desktop/soap-collection.json --collection-name "SOAP Service"
Supported Formats
- Postman Collections (v2.1)
- Insomnia Collections (v4 and v5)
- OpenAPI Specifications (v3.0)
- WSDL Files (Web Services Description Language)
Dependencies
lodash- Utility functionsnanoid- UUID generationjs-yaml- YAML parsingxml2js- XML parsing for WSDL@usebruno/schema- Schema validation