mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-23 04:35:40 +00:00
288 lines
5.5 KiB
JavaScript
288 lines
5.5 KiB
JavaScript
const { parseBruFileMeta } = require("../../src/utils/collection");
|
|
|
|
describe('parseBruFileMeta', () => {
|
|
test('parses valid meta block correctly', () => {
|
|
const data = `meta {
|
|
name: 0.2_mb
|
|
type: http
|
|
seq: 1
|
|
}`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toEqual({
|
|
type: 'http-request',
|
|
name: '0.2_mb',
|
|
seq: 1,
|
|
settings: {},
|
|
tags: [],
|
|
request: {
|
|
method: '',
|
|
url: '',
|
|
params: [],
|
|
headers: [],
|
|
auth: { mode: 'none' },
|
|
body: { mode: 'none' },
|
|
script: {},
|
|
vars: {},
|
|
assertions: [],
|
|
tests: '',
|
|
docs: ''
|
|
}
|
|
});
|
|
});
|
|
|
|
test('returns null for missing meta block', () => {
|
|
const data = `someOtherBlock {
|
|
key: value
|
|
}`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
test('handles empty meta block gracefully', () => {
|
|
const data = `meta {}`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toEqual({
|
|
type: 'http-request',
|
|
name: undefined,
|
|
seq: 1,
|
|
settings: {},
|
|
tags: [],
|
|
request: {
|
|
method: '',
|
|
url: '',
|
|
params: [],
|
|
headers: [],
|
|
auth: { mode: 'none' },
|
|
body: { mode: 'none' },
|
|
script: {},
|
|
vars: {},
|
|
assertions: [],
|
|
tests: '',
|
|
docs: ''
|
|
}
|
|
});
|
|
});
|
|
|
|
test('ignores invalid lines in meta block', () => {
|
|
const data = `meta {
|
|
name: 0.2_mb
|
|
invalidLine
|
|
seq: 1
|
|
}`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toEqual({
|
|
type: 'http-request',
|
|
name: '0.2_mb',
|
|
seq: 1,
|
|
settings: {},
|
|
tags: [],
|
|
request: {
|
|
method: '',
|
|
url: '',
|
|
params: [],
|
|
headers: [],
|
|
auth: { mode: 'none' },
|
|
body: { mode: 'none' },
|
|
script: {},
|
|
vars: {},
|
|
assertions: [],
|
|
tests: '',
|
|
docs: ''
|
|
}
|
|
});
|
|
});
|
|
|
|
test('handles unexpected input gracefully', () => {
|
|
const data = null;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
test('handles missing colon gracefully', () => {
|
|
const data = `meta {
|
|
name 0.2_mb
|
|
seq: 1
|
|
}`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toEqual({
|
|
type: 'http-request',
|
|
name: undefined,
|
|
seq: 1,
|
|
settings: {},
|
|
tags: [],
|
|
request: {
|
|
method: '',
|
|
url: '',
|
|
params: [],
|
|
headers: [],
|
|
auth: { mode: 'none' },
|
|
body: { mode: 'none' },
|
|
script: {},
|
|
vars: {},
|
|
assertions: [],
|
|
tests: '',
|
|
docs: ''
|
|
}
|
|
});
|
|
});
|
|
|
|
test('parses numeric values correctly', () => {
|
|
const data = `meta {
|
|
numValue: 1234
|
|
floatValue: 12.34
|
|
strValue: some_text
|
|
seq: 5
|
|
}`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toEqual({
|
|
type: 'http-request',
|
|
name: undefined,
|
|
seq: 5,
|
|
settings: {},
|
|
tags: [],
|
|
request: {
|
|
method: '',
|
|
url: '',
|
|
params: [],
|
|
headers: [],
|
|
auth: { mode: 'none' },
|
|
body: { mode: 'none' },
|
|
script: {},
|
|
vars: {},
|
|
assertions: [],
|
|
tests: '',
|
|
docs: ''
|
|
}
|
|
});
|
|
});
|
|
|
|
test('handles syntax error in meta block 1', () => {
|
|
const data = `meta
|
|
name: 0.2_mb
|
|
type: http
|
|
seq: 1
|
|
}`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
test('handles syntax error in meta block 2', () => {
|
|
const data = `meta {
|
|
name: 0.2_mb
|
|
type: http
|
|
seq: 1
|
|
`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
test('handles graphql type correctly', () => {
|
|
const data = `meta {
|
|
name: graphql_query
|
|
type: graphql
|
|
seq: 2
|
|
}`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toEqual({
|
|
type: 'graphql-request',
|
|
name: 'graphql_query',
|
|
seq: 2,
|
|
settings: {},
|
|
tags: [],
|
|
request: {
|
|
method: '',
|
|
url: '',
|
|
params: [],
|
|
headers: [],
|
|
auth: { mode: 'none' },
|
|
body: { mode: 'none' },
|
|
script: {},
|
|
vars: {},
|
|
assertions: [],
|
|
tests: '',
|
|
docs: ''
|
|
}
|
|
});
|
|
});
|
|
|
|
test('handles unknown type correctly', () => {
|
|
const data = `meta {
|
|
name: unknown_request
|
|
type: unknown
|
|
seq: 3
|
|
}`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toEqual({
|
|
type: 'http-request',
|
|
name: 'unknown_request',
|
|
seq: 3,
|
|
settings: {},
|
|
tags: [],
|
|
request: {
|
|
method: '',
|
|
url: '',
|
|
params: [],
|
|
headers: [],
|
|
auth: { mode: 'none' },
|
|
body: { mode: 'none' },
|
|
script: {},
|
|
vars: {},
|
|
assertions: [],
|
|
tests: '',
|
|
docs: ''
|
|
}
|
|
});
|
|
});
|
|
|
|
test('handles missing seq gracefully', () => {
|
|
const data = `meta {
|
|
name: no_seq_request
|
|
type: http
|
|
}`;
|
|
|
|
const result = parseBruFileMeta(data);
|
|
|
|
expect(result).toEqual({
|
|
type: 'http-request',
|
|
name: 'no_seq_request',
|
|
seq: 1, // Default fallback
|
|
settings: {},
|
|
tags: [],
|
|
request: {
|
|
method: '',
|
|
url: '',
|
|
params: [],
|
|
headers: [],
|
|
auth: { mode: 'none' },
|
|
body: { mode: 'none' },
|
|
script: {},
|
|
vars: {},
|
|
assertions: [],
|
|
tests: '',
|
|
docs: ''
|
|
}
|
|
});
|
|
});
|
|
}); |