Skip to content

Commit 416b693

Browse files
authored
fix: YML parsing and stringification to support post-response variables (#7009)
1 parent bafb235 commit 416b693

File tree

4 files changed

+34
-2
lines changed

4 files changed

+34
-2
lines changed

packages/bruno-filestore/src/formats/yml/parseCollection.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { parseYml } from './utils';
44
import { toBrunoAuth } from './common/auth';
55
import { toBrunoHttpHeaders } from './common/headers';
66
import { toBrunoVariables } from './common/variables';
7+
import { toBrunoPostResponseVariables } from './common/actions';
78
import { toBrunoScripts } from './common/scripts';
89
import { ensureString } from '../../utils';
910

@@ -174,7 +175,11 @@ const parseCollection = (ymlString: string): ParsedCollection => {
174175

175176
// variables
176177
const variables = toBrunoVariables(oc.request.variables);
177-
collectionRoot.request.vars = variables;
178+
const postResponseVars = toBrunoPostResponseVariables((oc.request as any).actions);
179+
collectionRoot.request.vars = {
180+
req: variables.req,
181+
res: postResponseVars
182+
};
178183

179184
// scripts
180185
const scripts = toBrunoScripts(oc.request.scripts);

packages/bruno-filestore/src/formats/yml/parseFolder.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { parseYml } from './utils';
44
import { toBrunoAuth } from './common/auth';
55
import { toBrunoHttpHeaders } from './common/headers';
66
import { toBrunoVariables } from './common/variables';
7+
import { toBrunoPostResponseVariables } from './common/actions';
78
import { toBrunoScripts } from './common/scripts';
89
import { ensureString } from '../../utils';
910

@@ -52,7 +53,11 @@ const parseFolder = (ymlString: string): FolderRoot => {
5253

5354
// variables
5455
const variables = toBrunoVariables(ocFolder.request.variables);
55-
folderRoot.request.vars = variables;
56+
const postResponseVars = toBrunoPostResponseVariables((ocFolder.request as any).actions);
57+
folderRoot.request.vars = {
58+
req: variables.req,
59+
res: postResponseVars
60+
};
5661

5762
// scripts
5863
const scripts = toBrunoScripts(ocFolder.request.scripts);

packages/bruno-filestore/src/formats/yml/stringifyCollection.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ import type { ProtoFileItem, ProtoFileImportPath } from '@opencollection/types/c
33
import type { HttpRequestHeader } from '@opencollection/types/requests/http';
44
import type { ClientCertificate, PemCertificate, Pkcs12Certificate } from '@opencollection/types/config/certificates';
55
import type { Variable } from '@opencollection/types/common/variables';
6+
import type { Action } from '@opencollection/types/common/actions';
67
import type { Scripts } from '@opencollection/types/common/scripts';
78
import { stringifyYml } from './utils';
89
import { toOpenCollectionAuth } from './common/auth';
910
import { toOpenCollectionHttpHeaders } from './common/headers';
1011
import { toOpenCollectionVariables } from './common/variables';
12+
import { toOpenCollectionActions } from './common/actions';
1113
import { toOpenCollectionScripts } from './common/scripts';
1214
import type { Auth } from '@opencollection/types/common/auth';
1315

@@ -39,6 +41,7 @@ const hasRequestDefaults = (collectionRoot: any): boolean => {
3941

4042
return Boolean((requestRoot?.headers?.length)
4143
|| (requestRoot?.vars?.req?.length)
44+
|| (requestRoot?.vars?.res?.length)
4245
|| hasRequestScripts(collectionRoot)
4346
|| hasRequestAuth(collectionRoot));
4447
};
@@ -178,6 +181,14 @@ const stringifyCollection = (collectionRoot: any, brunoConfig: any): string => {
178181
}
179182
}
180183

184+
// actions (post-response variables)
185+
if (collectionRoot.request?.vars?.res?.length) {
186+
const ocActions: Action[] | undefined = toOpenCollectionActions(collectionRoot.request?.vars?.res);
187+
if (ocActions) {
188+
(oc.request as any).actions = ocActions;
189+
}
190+
}
191+
181192
// scripts
182193
if (hasRequestScripts(collectionRoot)) {
183194
const ocScripts: Scripts | undefined = toOpenCollectionScripts(collectionRoot.request);

packages/bruno-filestore/src/formats/yml/stringifyFolder.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import type { FolderRoot } from '@usebruno/schema-types/collection/folder';
22
import type { Folder, FolderInfo } from '@opencollection/types/collection/item';
33
import type { Variable } from '@opencollection/types/common/variables';
4+
import type { Action } from '@opencollection/types/common/actions';
45
import type { Scripts } from '@opencollection/types/common/scripts';
56
import type { Auth } from '@opencollection/types/common/auth';
67
import type { HttpRequestHeader } from '@opencollection/types/requests/http';
78
import type { RequestDefaults } from '@opencollection/types/common/request-defaults';
89
import { toOpenCollectionAuth } from './common/auth';
910
import { toOpenCollectionHttpHeaders } from './common/headers';
1011
import { toOpenCollectionVariables } from './common/variables';
12+
import { toOpenCollectionActions } from './common/actions';
1113
import { toOpenCollectionScripts } from './common/scripts';
1214
import { stringifyYml } from './utils';
1315

@@ -16,6 +18,7 @@ const hasRequestDefaults = (folderRoot: FolderRoot): boolean => {
1618

1719
return Boolean((requestDefaults?.headers?.length)
1820
|| (requestDefaults?.vars?.req?.length)
21+
|| (requestDefaults?.vars?.res?.length)
1922
|| hasRequestScripts(folderRoot)
2023
|| hasRequestAuth(folderRoot));
2124
};
@@ -70,6 +73,14 @@ const stringifyFolder = (folderRoot: FolderRoot): string => {
7073
}
7174
}
7275

76+
// actions (post-response variables)
77+
if (folderRoot.request?.vars?.res?.length) {
78+
const ocActions: Action[] | undefined = toOpenCollectionActions(folderRoot.request?.vars?.res);
79+
if (ocActions) {
80+
(ocFolder.request as any).actions = ocActions;
81+
}
82+
}
83+
7384
// scripts
7485
if (hasRequestScripts(folderRoot)) {
7586
const ocScripts: Scripts | undefined = toOpenCollectionScripts(folderRoot?.request);

0 commit comments

Comments
 (0)