diff --git a/packages/insomnia-app/app/common/__tests__/import.test.js b/packages/insomnia-app/app/common/__tests__/import.test.js index 4f6c6c8d5f..51373e0bd6 100644 --- a/packages/insomnia-app/app/common/__tests__/import.test.js +++ b/packages/insomnia-app/app/common/__tests__/import.test.js @@ -52,10 +52,11 @@ describe('exportWorkspacesHAR()', () => { }); const includePrivateDocs = true; - const json = await importUtil.exportWorkspacesHAR(wrk1, includePrivateDocs); - const data = JSON.parse(json); - expect(data).toMatchObject({ + // Test export whole workspace. + const exportWorkspacesJson = await importUtil.exportWorkspacesHAR(wrk1, includePrivateDocs); + const exportWorkspacesData = JSON.parse(exportWorkspacesJson); + expect(exportWorkspacesData).toMatchObject({ log: { entries: [ { @@ -70,7 +71,24 @@ describe('exportWorkspacesHAR()', () => { ], }, }); - expect(data.log.entries.length).toBe(2); + expect(exportWorkspacesData.log.entries.length).toBe(2); + + // Test export some requests only. + const exportRequestsJson = await importUtil.exportRequestsHAR([req1], includePrivateDocs); + const exportRequestsData = JSON.parse(exportRequestsJson); + expect(exportRequestsData).toMatchObject({ + log: { + entries: [ + { + request: { + headers: [{ name: 'X-Environment', value: 'private1' }], + }, + comment: req1.name, + }, + ], + }, + }); + expect(exportRequestsData.log.entries.length).toBe(1); }); it('exports all workspaces as an HTTP Archive', async () => { const wrk1 = await models.workspace.create({ @@ -162,9 +180,17 @@ describe('exportWorkspacesJSON()', () => { const w = await models.workspace.create({ name: 'Workspace' }); const jar = await models.cookieJar.getOrCreateForParentId(w._id); const r1 = await models.request.create({ - name: 'Request', + name: 'Request 1', parentId: w._id, }); + const f2 = await models.requestGroup.create({ + name: 'Folder 2', + parentId: w._id, + }); + const r2 = await models.request.create({ + name: 'Request 2', + parentId: f2._id, + }); const eBase = await models.environment.getOrCreateForWorkspace(w); const ePub = await models.environment.create({ name: 'Public', @@ -176,18 +202,42 @@ describe('exportWorkspacesJSON()', () => { parentId: eBase._id, }); - const json = await importUtil.exportWorkspacesJSON(); - const data = JSON.parse(json); + // Test export whole workspace. + const exportedWorkspacesJson = await importUtil.exportWorkspacesJSON(); + const exportWorkspacesData = JSON.parse(exportedWorkspacesJson); + expect(exportWorkspacesData).toMatchObject({ + _type: 'export', + __export_format: 3, + __export_date: expect.stringMatching(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/), + __export_source: `insomnia.desktop.app:v${getAppVersion()}`, + resources: expect.arrayContaining([ + expect.objectContaining({ _id: w._id }), + expect.objectContaining({ _id: eBase._id }), + expect.objectContaining({ _id: jar._id }), + expect.objectContaining({ _id: r1._id }), + expect.objectContaining({ _id: f2._id }), + expect.objectContaining({ _id: r2._id }), + expect.objectContaining({ _id: ePub._id }), + ]), + }); + expect(exportWorkspacesData.resources.length).toBe(7); - expect(data._type).toBe('export'); - expect(data.__export_format).toBe(3); - expect(data.__export_date).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/); - expect(data.__export_source).toBe(`insomnia.desktop.app:v${getAppVersion()}`); - expect(data.resources[0]._id).toBe(w._id); - expect(data.resources[1]._id).toBe(eBase._id); - expect(data.resources[2]._id).toBe(jar._id); - expect(data.resources[3]._id).toBe(r1._id); - expect(data.resources[4]._id).toBe(ePub._id); - expect(data.resources.length).toBe(5); + // Test export some requests only. + const exportRequestsJson = await importUtil.exportRequestsJSON([r1]); + const exportRequestsData = JSON.parse(exportRequestsJson); + expect(exportRequestsData).toMatchObject({ + _type: 'export', + __export_format: 3, + __export_date: expect.stringMatching(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/), + __export_source: `insomnia.desktop.app:v${getAppVersion()}`, + resources: expect.arrayContaining([ + expect.objectContaining({ _id: w._id }), + expect.objectContaining({ _id: eBase._id }), + expect.objectContaining({ _id: jar._id }), + expect.objectContaining({ _id: r1._id }), + expect.objectContaining({ _id: ePub._id }), + ]), + }); + expect(exportRequestsData.resources.length).toBe(5); }); });