mirror of
https://github.com/Kong/insomnia.git
synced 2026-04-21 06:37:36 -04:00
Import postman env in Insomnia project level [INS-4253] (#7821)
* Suport for importing environment from postman in Insomnia project level * Update vitest snapshot * Update vitest snapshot * use ts enum * remove change in smoke test
This commit is contained in:
@@ -17,6 +17,7 @@ import {
|
||||
} from '../models/websocket-request';
|
||||
import { isWorkspace, type Workspace } from '../models/workspace';
|
||||
import { convert, type InsomniaImporter } from '../utils/importers/convert';
|
||||
import { id as postmanEnvImporterId } from '../utils/importers/importers/postman-env';
|
||||
import { invariant } from '../utils/invariant';
|
||||
import { database as db } from './database';
|
||||
import { generateId } from './misc';
|
||||
@@ -159,6 +160,19 @@ export async function importResourcesToProject({ projectId }: { projectId: strin
|
||||
await importResourcesToNewWorkspace(projectId, postmanTopLevelFolder);
|
||||
return { resources };
|
||||
}
|
||||
// if the resource is postman environment,
|
||||
if (ResourceCache.type.id === postmanEnvImporterId && resources.find(isEnvironment)) {
|
||||
await Promise.all(resources.filter(isEnvironment).map(resource =>
|
||||
importResourcesToNewWorkspace(projectId, {
|
||||
name: resource.name,
|
||||
scope: 'environment',
|
||||
// __BASE_ENVIRONMENT_ID__ is the default parentId for environment imported by postman env importer, we use it to indicate the new workspace id
|
||||
_id: '__BASE_ENVIRONMENT_ID__',
|
||||
} as Workspace)
|
||||
));
|
||||
return { resources };
|
||||
}
|
||||
|
||||
// No workspace, so create one
|
||||
if (!resources.find(isWorkspace)) {
|
||||
await importResourcesToNewWorkspace(projectId);
|
||||
|
||||
@@ -6002,6 +6002,9 @@ exports[`Fixtures > Import postman-env > basic-input.json 1`] = `
|
||||
"data": {
|
||||
"foo": "production",
|
||||
},
|
||||
"meta": {
|
||||
"postmanEnvScope": "environment",
|
||||
},
|
||||
"name": "Production Env",
|
||||
"parentId": "__BASE_ENVIRONMENT_ID__",
|
||||
},
|
||||
@@ -6022,6 +6025,9 @@ exports[`Fixtures > Import postman-env > no-name-input.json 1`] = `
|
||||
"data": {
|
||||
"foo-and-bar": "production-env",
|
||||
},
|
||||
"meta": {
|
||||
"postmanEnvScope": "environment",
|
||||
},
|
||||
"name": "Postman Environment",
|
||||
"parentId": "__BASE_ENVIRONMENT_ID__",
|
||||
},
|
||||
|
||||
@@ -20,13 +20,20 @@ type Data = {
|
||||
[key in EnvVar['key']]: EnvVar['value'];
|
||||
};
|
||||
|
||||
export enum POSTMAN_ENV_TYPE {
|
||||
GLOBAL = 'globals',
|
||||
ENVIRONMENT = 'environment',
|
||||
};
|
||||
|
||||
const validPostmanEnvTypeList = Object.values(POSTMAN_ENV_TYPE) as string[];
|
||||
|
||||
export const convert: Converter<Data> = rawData => {
|
||||
try {
|
||||
const { _postman_variable_scope, name, values } = JSON.parse(
|
||||
rawData,
|
||||
) as Environment;
|
||||
|
||||
if (_postman_variable_scope !== 'environment') {
|
||||
if (!validPostmanEnvTypeList.includes(_postman_variable_scope)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -44,6 +51,9 @@ export const convert: Converter<Data> = rawData => {
|
||||
[key]: value,
|
||||
};
|
||||
}, {}),
|
||||
meta: {
|
||||
postmanEnvScope: _postman_variable_scope,
|
||||
},
|
||||
},
|
||||
];
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user