-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Description
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,
}