UNPKG

usezap-cli

Version:

Zap CLI - Command-line interface for Zap API client

120 lines (103 loc) 3.22 kB
const _ = require('lodash'); const { zapToEnvJsonV2, zapToJsonV2, collectionZapToJson: _collectionZapToJson } = require('@usezap/lang'); const collectionZapToJson = (zapContent) => { try { const json = _collectionZapToJson(zapContent); const transformedJson = { request: { headers: _.get(json, 'headers', []), auth: _.get(json, 'auth', {}), script: _.get(json, 'script', {}), vars: _.get(json, 'vars', {}), tests: _.get(json, 'tests', '') } }; // add meta if it exists // this is only for folder zap file // in the future, all of this will be replaced by standard zap lang const sequence = _.get(json, 'meta.seq'); if (json?.meta) { transformedJson.meta = { name: json.meta.name, seq: !isNaN(sequence) ? Number(sequence) : 1 }; } return transformedJson; } catch (error) { return Promise.reject(error); } }; /** * The transformer function for converting a Zap file to JSON. * * We map the json response from the zap lang and transform it into the DSL * format that is used by the zap app * * @param {string} zapContent The Zap file content. * @returns {object} The JSON representation of the Zap file. */ const zapToJson = (zapContent) => { try { const json = zapToJsonV2(zapContent); let requestType = _.get(json, 'meta.type'); if (requestType === 'http') { requestType = 'http-request'; } else if (requestType === 'graphql') { requestType = 'graphql-request'; } else { requestType = 'http'; } const sequence = _.get(json, 'meta.seq'); const transformedJson = { type: requestType, name: _.get(json, 'meta.name'), seq: !isNaN(sequence) ? Number(sequence) : 1, request: { method: _.upperCase(_.get(json, 'http.method')), url: _.get(json, 'http.url'), auth: _.get(json, 'auth', {}), params: _.get(json, 'params', []), headers: _.get(json, 'headers', []), body: _.get(json, 'body', {}), vars: _.get(json, 'vars', []), assertions: _.get(json, 'assertions', []), script: _.get(json, 'script', {}), tests: _.get(json, 'tests', '') } }; transformedJson.request.body.mode = _.get(json, 'http.body', 'none'); transformedJson.request.auth.mode = _.get(json, 'http.auth', 'none'); return transformedJson; } catch (err) { return Promise.reject(err); } }; const zapToEnvJson = (zapContent) => { try { return zapToEnvJsonV2(zapContent); } catch (err) { return Promise.reject(err); } }; const getEnvVars = (environment = {}) => { const variables = environment.variables; if (!variables || !variables.length) { return {}; } const envVars = {}; _.each(variables, (variable) => { if (variable.enabled) { envVars[variable.name] = variable.value; } }); return envVars; }; const options = {}; const getOptions = () => { return options; }; module.exports = { zapToJson, zapToEnvJson, getEnvVars, getOptions, collectionZapToJson };