bruno-env.test.ts•5.65 kB
import parser from "../src/bruno-lang/envToJson.js";
import { describe, it, expect } from "@jest/globals";
describe("env parser", () => {
it("should parse empty vars", () => {
const input = `
vars {
}`;
const output = parser(input);
const expected = {
variables: [],
};
expect(output).toEqual(expected);
});
it("should parse single var line", () => {
const input = `
vars {
url: http://localhost:3000
}`;
const output = parser(input);
const expected = {
variables: [
{
name: "url",
value: "http://localhost:3000",
enabled: true,
secret: false,
},
],
};
expect(output).toEqual(expected);
});
it("should parse multiple var lines", () => {
const input = `
vars {
url: http://localhost:3000
port: 3000
~token: secret
}`;
const output = parser(input);
const expected = {
variables: [
{
name: "url",
value: "http://localhost:3000",
enabled: true,
secret: false,
},
{
name: "port",
value: "3000",
enabled: true,
secret: false,
},
{
name: "token",
value: "secret",
enabled: false,
secret: false,
},
],
};
expect(output).toEqual(expected);
});
it("should gracefully handle empty lines and spaces", () => {
const input = `
vars {
url: http://localhost:3000
port: 3000
}
`;
const output = parser(input);
const expected = {
variables: [
{
name: "url",
value: "http://localhost:3000",
enabled: true,
secret: false,
},
{
name: "port",
value: "3000",
enabled: true,
secret: false,
},
],
};
expect(output).toEqual(expected);
});
it("should parse vars with empty values", () => {
const input = `
vars {
url:
phone:
api-key:
}
`;
const output = parser(input);
const expected = {
variables: [
{
name: "url",
value: "",
enabled: true,
secret: false,
},
{
name: "phone",
value: "",
enabled: true,
secret: false,
},
{
name: "api-key",
value: "",
enabled: true,
secret: false,
},
],
};
expect(output).toEqual(expected);
});
it("should parse empty secret vars", () => {
const input = `
vars {
url: http://localhost:3000
}
vars:secret [
]
`;
const output = parser(input);
const expected = {
variables: [
{
name: "url",
value: "http://localhost:3000",
enabled: true,
secret: false,
},
],
};
expect(output).toEqual(expected);
});
it("should parse secret vars", () => {
const input = `
vars {
url: http://localhost:3000
}
vars:secret [
token
]
`;
const output = parser(input);
const expected = {
variables: [
{
name: "url",
value: "http://localhost:3000",
enabled: true,
secret: false,
},
{
name: "token",
value: null,
enabled: true,
secret: true,
},
],
};
expect(output).toEqual(expected);
});
it("should parse multiline secret vars", () => {
const input = `
vars {
url: http://localhost:3000
}
vars:secret [
access_token,
access_secret,
~access_password
]
`;
const output = parser(input);
const expected = {
variables: [
{
name: "url",
value: "http://localhost:3000",
enabled: true,
secret: false,
},
{
name: "access_token",
value: null,
enabled: true,
secret: true,
},
{
name: "access_secret",
value: null,
enabled: true,
secret: true,
},
{
name: "access_password",
value: null,
enabled: false,
secret: true,
},
],
};
expect(output).toEqual(expected);
});
it("should parse inline secret vars", () => {
const input = `
vars {
url: http://localhost:3000
}
vars:secret [access_key]
`;
const output = parser(input);
const expected = {
variables: [
{
name: "url",
value: "http://localhost:3000",
enabled: true,
secret: false,
},
{
name: "access_key",
value: null,
enabled: true,
secret: true,
},
],
};
expect(output).toEqual(expected);
});
it("should parse inline multiple secret vars", () => {
const input = `
vars {
url: http://localhost:3000
}
vars:secret [access_key,access_secret, access_password ]
`;
const output = parser(input);
const expected = {
variables: [
{
name: "url",
value: "http://localhost:3000",
enabled: true,
secret: false,
},
{
name: "access_key",
value: null,
enabled: true,
secret: true,
},
{
name: "access_secret",
value: null,
enabled: true,
secret: true,
},
{
name: "access_password",
value: null,
enabled: true,
secret: true,
},
],
};
expect(output).toEqual(expected);
});
});