Skip to content

Postman pre-request scripts not fully supported when importing collections into Bruno #5643

@marianafiori

Description

@marianafiori

In Postman, I have a pre-request script that runs before my tests, but when I import the collection into Bruno, it doesn't migrate everything correctly — for example, the 'pm' object. How can I fix this? Is there any workaround?

bru.deleteEnvVar('bearer_jwt_rhsso')
bru.deleteEnvVar('endpoint')
bru.deleteEnvVar('test_management_status_code')
bru.deleteEnvVar('azure_test_case_id')
bru.deleteEnvVar('azure_test_suite_id')
bru.deleteEnvVar('azure_test_point_id')
bru.deleteEnvVar('azure_run_id')
bru.deleteEnvVar('azure_result_id')

bru.setEnvVar('azure_test_status', 'Passed')
bru.setEnvVar('azure_test_execution_status', 0)
bru.setEnvVar('azure_test_error_message', '')

const baseUrlPrbAuth = bru.getEnvVar('base_url')
const baseUrlPrbIdentidadeMock = bru.getEnvVar('base_url_prb_identidade_mock')
const baseUrlPrbPessoa = bru.getEnvVar('base_url_prb_pessoa')

let nome = 'Paulo Artur Ulisses ' + bru.interpolate('{{$randomLastName}}')
bru.setEnvVar('data_management_nome', nome)

//////////////////////////////////////PRBAUTH////////////////////////////////////////////////////
function prbAuthCapturaStatusDaCriacaoDoUsuario(pm, cpf) {
const requestPrbAuthCapturaStatusDaCriacaoDoUsuario = {
url: baseUrlPrbAuth + cpf,
method: 'GET',
headers: {
'content-type': 'application/json',
},
};
await bru.sendRequest(requestPrbAuthCapturaStatusDaCriacaoDoUsuario)
}

function prbAuthCriaUsuario(pm, cpf, realm='ces', senha='14') {
const requestPrbAuthCriaUsuario = {
url: baseUrlPrbAuth,
method: 'POST',
headers: {
'content-type': 'application/json',
},
data: JSON.stringify({
realm,
cpf,
senha
})
};
await bru.sendRequest(requestPrbAuthCriaUsuario);
}

function prbAuthRealizaloginECapturaTokenRhsso(pm, cpf, realm='cls', senha='164') {
const requestPrbAuthRealizaloginECapturaTokenRhsso = {
url: baseUrlPrbAuth,
method: 'POST',
headers: {
'content-type': 'application/json',
},
data: JSON.stringify({
realm,
cpf,
senha
})
};
await bru.sendRequest(requestPrbAuthRealizaloginECapturaTokenRhsso, async function(err, res) {
if (err === null) {
bru.setEnvVar("bearer_jwt_rhsso", "Bearer " + res.data.tokenJwt);
}
});
}

/////////////////////////////////////PRBIDENTIDADEMOCK/////////////////////////////////////////////////
function prbIdentidadeMockInclusaoSerasa(pm, processo='cria_conta_prb_auth', anos=60) {
const requestPrbIdentidadeMockSerasa = {
url: baseUrlPrbIdentidadeMock,
method: 'POST',
headers: {
'content-type': 'application/json'
},
data: JSON.stringify({
result: {
id: bru.interpolate('{{$guid}}'),
cpf: utils.dataManagementGeraCpfEArmazenaNoAmbiente(pm),
nome: nome,
dataNascimento: utils.dataManagementGeraDataDeNascimentoEArmazenaNoAmbiente(pm, anos)
},
requestId: bru.interpolate('{{$guid}}')
})
};
await bru.sendRequest(requestPrbIdentidadeMockSerasa, async function(err, res) {
if (err === null) {
service.prbPessoaV3CriaPessoa(pm, bru.getEnvVar('cpf_sem_mascara'), utils.dataManagementGeraNumeroTelefoneEArmazenaNoAmbiente(pm), processo)
}
});
}

/////////////////////////////////////PRBPESSOA/////////////////////////////////////////////////
function prbPessoaV3CriaPessoa(pm, cpf, numero_telefone, processo) {
const requestPrbPessoaV3CriaPessoa = {
url: baseUrlPrbPessoa,
method: 'POST',
headers: {
'content-type': 'application/json',
'sid_sistema_solicitante': 'F4'
},
data: JSON.stringify({
cpf,
telefones: [
{
ddd: "41",
numero: numero_telefone,
verificado: true
}
],
enderecos: [
{
id: bru.interpolate('{{$guid}}'),
cep: "88036-001",
logradouro: "Rua Lauro Linhares",
numero: "123",
complemento: "Apto CAU",
cidade: "Florianopolis",
bairro: "Trindade",
uf: "SC",
origem: 1
}
],
})
};
await bru.sendRequest(requestPrbPessoaV3CriaPessoa, async function(err, res) {
if (err === null) {
const pessoa_id = res.data['id']
bru.setEnvVar('data_management_pessoa_id', pessoa_id)
if (processo == 'cria_conta_prb_auth') {
service.prbAuthCriaUsuario(pm, bru.getEnvVar('cpf_sem_mascara'))
}
}
});
}

//////////////////////////////////////TEST////////////////////////////////////////////////////
function validaAtributoTokenJwt (pm, atributo, valorAtribuito) {
test(utils.requestTestName(pm) + ", possui o atributo: " + atributo + " com o valor " + valorAtribuito + " esperado no token JWT", () => {
var prbAuthInfo = {}
prbAuthInfo.payload = utils.decodificaTokenJwt(res.getBody()['tokenJwt'], 1);
expect(prbAuthInfo.payload[atributo]).to.be.equal(valorAtribuito)
});
};

function validaResponseBodyVazio(pm){
test(utils.requestTestName(pm) + ", validou que o respose body tem o tamanho = 0", () => {
expect(res.getSize().body).to.be.equal(0)
});
}

function validaSchema(pm, schema){
test(utils.requestTestName(pm) + ", validou o schema", () => {
if (!(ajv.compile(schema)(res.getBody())) && bru.getEnvVar('env') === 'Hom' && bru.getEnvVar('azure_env') !== 'local'){
altera_status = (bru.getEnvVar('azure_test_execution_status') + 1)
azure_test_error_message = bru.getEnvVar('azure_test_error_message') + '\n\nA validação do schema falhou!, \n O schema code esperado: ' + JSON.stringify(schema) + ' \n é diferente do retornado: ' + JSON.stringify(res.getBody())
bru.setEnvVar('azure_test_error_message', azure_test_error_message)
bru.setEnvVar('azure_test_execution_status', altera_status)
}
// pm.response.to.have.jsonSchema(schema)
});
}

function validaStatusCode(pm, statusCode){
test(utils.requestTestName(pm) + ", retornou o status code " + statusCode, () => {
if (res.getStatus() !== statusCode && bru.getEnvVar('env') === 'Hom' && bru.getEnvVar('azure_env') !== 'local'){
altera_status = (bru.getEnvVar('azure_test_execution_status') + 1)
azure_test_error_message = bru.getEnvVar('azure_test_error_message') + '\n\nA validação do status code falhou!, \n O status code esperado: ' + statusCode + ' é diferente do retornado: ' + res.getStatus()
bru.setEnvVar('azure_test_error_message', azure_test_error_message)
bru.setEnvVar('azure_test_execution_status', altera_status)
}
expect(res.getStatus()).to.equal(statusCode)
});
}

//////////////////////////////////////UTILS////////////////////////////////////////////////////
function dataManagementCriaNumeroDeCpf() {
const rnd = (n) => Math.round(Math.random() * n);
const mod = (base, div) => Math.round(base - Math.floor(base / div) * div)
const n = Array(9).fill('').map(() => rnd(9));
let d1 = n.reduce((total, number, index) => (total + (number * (10 - index))), 0)
d1 = 11 - mod(d1, 11);
if (d1 >= 10) d1 = 0;
let d2 = (d1 * 2) + n.reduce((total, number, index) => (total + (number * (11 - index))), 0)
d2 = 11 - mod(d2, 11);
if (d2 >= 10) d2 = 0;
return ${n.join('')}${d1}${d2}
}

function dataManagementGeraCpfEArmazenaNoAmbiente (pm) {
let cpfSemMascara = utils.dataManagementCriaNumeroDeCpf()
let cpfMascarado = cpfSemMascara.replace(/(\d{3})(\d{3})(\d{3})(\d{2})/, "$1.$2.$3-$4")
bru.setEnvVar('cpf_sem_mascara', cpfSemMascara)
bru.setEnvVar('cpf_com_mascara', cpfMascarado)
bru.setEnvVar('cpf_integer', parseInt(cpfSemMascara), 10)
return cpfMascarado
}

function dataManagementGeraDataDeNascimentoEArmazenaNoAmbiente(pm, anos) {
const hoje = new Date()
const anoNascimento = hoje.getFullYear() - anos
const mes = hoje.getMonth()
const dia = hoje.getDate()
const dataNascimento = new Date(anoNascimento, mes, dia).toISOString()
bru.setEnvVar('data_management_data_nascimento', dataNascimento)
return dataNascimento
}

function dataManagementGeraNumeroTelefoneEArmazenaNoAmbiente(pm) {
let numero = '9'
for (let i = 1; i < 9; i++) {
numero += Math.floor(Math.random() * 10)
}
if (numero === '999999999') {
return gerarNumeroAleatorio()
}
bru.setEnvVar('data_management_numero_telefone', numero)
return numero
}

function decodificaTokenJwt (token, part) {
var base64Url = token.split('.')[part];
var words = CryptoJS.enc.Base64.parse(base64Url);
var jsonPayload = CryptoJS.enc.Utf8.stringify(words);
return JSON.parse(jsonPayload);
};

function requestTestName(pm){
return [TestCase: ${bru.getEnvVar('azure_test_case_id')} - [${bru.getEnvVar('env')}] - [${bru.getEnvVar('servico')}] - [Contrato] - [${new Date()}] - ${req.getMethod()} - ${[req.getUrl().host["0"], req.getUrl().path.join('/')].join('/')} - ${bru.getEnvVar('test_management_status_code').slice(-3)} - ${req.getName()}];
}

service = {
prbAuthCapturaStatusDaCriacaoDoUsuario,
prbAuthCriaUsuario,
prbAuthRealizaloginECapturaTokenRhsso,
prbIdentidadeMockInclusaoSerasa,
prbPessoaV3CriaPessoa
}

test = {
validaAtributoTokenJwt,
validaResponseBodyVazio,
validaSchema,
validaStatusCode,
}

utils = {
dataManagementCriaNumeroDeCpf,
dataManagementGeraCpfEArmazenaNoAmbiente,
dataManagementGeraDataDeNascimentoEArmazenaNoAmbiente,
dataManagementGeraNumeroTelefoneEArmazenaNoAmbiente,
decodificaTokenJwt,
requestTestName,
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions