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:
yaoweiprc
2024-08-12 16:12:27 +08:00
committed by GitHub
parent 22a9fd97c1
commit df5729d6ae
3 changed files with 31 additions and 1 deletions

View File

@@ -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);

View File

@@ -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__",
},

View File

@@ -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) {