#884: Made sure graphql variables are only parsed after interpolation

This commit is contained in:
Andreas Schönefeldt 2023-11-04 21:50:55 +01:00
parent 8fb8eee5ef
commit a3125605f3
2 changed files with 9 additions and 1 deletions

View File

@ -284,6 +284,12 @@ const registerNetworkIpc = (mainWindow) => {
// interpolate variables inside request
interpolateVars(request, envVars, collectionVariables, processEnvVars);
// if this is a graphql request, parse the variables, only after interpolation
// https://github.com/usebruno/bruno/issues/884
if (request.mode === 'graphql') {
request.data.variables = JSON.parse(request.data.variables);
}
// stringify the request url encoded params
if (request.headers['content-type'] === 'application/x-www-form-urlencoded') {
request.data = qs.stringify(request.data);

View File

@ -94,6 +94,7 @@ const prepareRequest = (request, collectionRoot) => {
});
let axiosRequest = {
mode: request.body.mode,
method: request.method,
url: request.url,
headers: headers,
@ -163,7 +164,8 @@ const prepareRequest = (request, collectionRoot) => {
if (request.body.mode === 'graphql') {
const graphqlQuery = {
query: get(request, 'body.graphql.query'),
variables: JSON.parse(decomment(get(request, 'body.graphql.variables') || '{}'))
// https://github.com/usebruno/bruno/issues/884 - we must only parse the variables after the variable interpolation
variables: decomment(get(request, 'body.graphql.variables') || '{}')
};
if (!contentTypeDefined) {
axiosRequest.headers['content-type'] = 'application/json';