Files
bruno/packages/bruno-lang/v2/tests/bruToJson.spec.js

180 lines
3.0 KiB
JavaScript

const parser = require('../src/bruToJson');
describe('bruToJson parser', () => {
describe('body:ws', () => {
it('infers message and settings | smoke', () => {
const input = `
body:ws {
type: json
name: message 1
content: '''
{"foo":"bar"}
'''
}
settings {
timeout: 30
}
`;
const expected = {
body: {
mode: 'ws',
ws: [
{
content: '{"foo":"bar"}',
name: 'message 1',
type: 'json'
}
]
},
settings: {
encodeUrl: false,
timeout: 30
}
};
const output = parser(input);
expect(output).toEqual(expected);
});
});
describe('body:grpc', () => {
it('parses message content with name and content', () => {
const input = `
body:grpc {
name: message 1
content: '''
{"foo":"bar"}
'''
}
`;
const expected = {
body: {
mode: 'grpc',
grpc: [
{
content: '{"foo":"bar"}',
name: 'message 1'
}
]
}
};
const output = parser(input);
expect(output).toEqual(expected);
});
it('parses message with variables in content', () => {
const input = `
body:grpc {
name: message 1
content: '''
{"id":{{userId}},"name":"{{userName}}"}
'''
}
`;
const expected = {
body: {
mode: 'grpc',
grpc: [
{
content: '{"id":{{userId}},"name":"{{userName}}"}',
name: 'message 1'
}
]
}
};
const output = parser(input);
expect(output).toEqual(expected);
});
});
describe('multi-line values', () => {
it('parses multi-line values in URL, headers, params, and vars', () => {
const input = `
meta {
name: new-line
type: http
seq: 1
}
get {
url: '''
https://httpbin.io/anything?foo=hello
world
'''
body: none
auth: oauth2
}
params:query {
foo: '''
hello
world
'''
}
headers {
"test header": '''
t1
t2
'''
}
vars:pre-request {
test-var: '''
t1
t2
'''
}
`;
const expected = {
meta: {
name: 'new-line',
type: 'http',
seq: '1'
},
http: {
method: 'get',
url: 'https://httpbin.io/anything?foo=hello\nworld',
body: 'none',
auth: 'oauth2'
},
params: [
{
name: 'foo',
value: 'hello\nworld',
enabled: true,
type: 'query'
}
],
headers: [
{
name: 'test header',
value: 't1\nt2',
enabled: true
}
],
vars: {
req: [
{
name: 'test-var',
value: 't1\nt2',
enabled: true,
local: false
}
]
}
};
const output = parser(input);
expect(output).toEqual(expected);
});
});
});