Skip to content

Instantly share code, notes, and snippets.

@thiagosouza
Last active April 2, 2024 14:11
Show Gist options
  • Save thiagosouza/76078e9d23ef553bd8d3c5b2cab56b83 to your computer and use it in GitHub Desktop.
Save thiagosouza/76078e9d23ef553bd8d3c5b2cab56b83 to your computer and use it in GitHub Desktop.
[Postman Tests] Postman test suite config and code examples #postman #test
pm.test("Successful POST request", function () {
pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]);
});
pm.test("Response time is less than 10s", function () {
pm.expect(pm.response.responseTime).to.be.below(10000);
});
pm.test('Response has all properties', function () {
let data = pm.response.json();
pm.expect(data).to.have.keys(["id", "url", "internalCode", "bmpCode", "active", "signedURL", "IP", "number", "CreditRequestId", "UserId", "transferred", "wasUploadedToBMP", "codeParam", "createdAt", "updatedAt"])
});
pm.test('Response has all properties', function () {
let data = pm.response.json();
let test_datetime_request_ccbs_create = pm.environment.get("test_datetime_request_ccbs_create")
let now = Math.round(Date.now()/1000.0)
console.log("comparing ", test_datetime_request_ccbs_create)
console.log("and ", now)
let updatedAtInTimestamp = Math.round(new Date(data.updatedAt).getTime()/1000.0)
console.log('updatedAtInTimestamp', updatedAtInTimestamp)
pm.expect(updatedAtInTimestamp).to.be.within(test_datetime_request_ccbs_create, now)
});
let response = pm.response.json()
pm.test("Open Plus Integrator Default Request Tests", function () {
pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 401]);
});
if(pm.response.code == 401){
pm.test("401 should contains type and message", function () {
pm.expect(response.type).includes(['NO_TOKEN']);
pm.expect(response.message).matches(/unauthorized/i);
});
}
pm.environment.set("test_datetime_request_ccbs_create", Math.round(Date.now() / 1000.0))
pm.environment.unset('PRE_REQUEST_PAYLOAD');
const users = [{
cpf: "",
name: "",
phone: "+5511988887777",
email: "email@email.com.br"
},
{
cpf: "",
name: "",
phone: "+5511966665555",
email: "email2@email.com.br"
}];
// 4devs API to generate random data
const postRequest = {
url: `https://www.4devs.com.br/ferramentas_online.php`,
method: 'POST',
header: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
mode: 'urlencoded',
urlencoded: [
{ key: "acao", value: "gerar_pessoa" },
{ key: "txt_qtde", value: 2 }
]
}
};
(async function () {
await new Promise((resolve, reject) => {
pm.sendRequest(postRequest, (error, response) => {
if (error) {
console.info(`Can't generate random signers. Cause: ${error}`);
return reject(`Can't generate random signers. Cause: ${error}`);
}
/** @type{[{
* nome: String
* cpf: String
* rg: String
* cep: String
* endereco: String
* numero: Number
* bairro: String
* cidade: String
* estado: String
}]} */
const persons = response.json();
persons.forEach((person, index) => {
users[index].name = person.nome;
users[index].cpf = person.cpf;
users[index].rg = person.rg;
users[index].city = person.cidade;
users[index].state = person.estado;
users[index].district = person.bairro;
users[index].zip = person.cep;
users[index].address = person.endereco + person.numero;
});
console.info(`Random signers created correctly. Signers = ${JSON.stringify(users)}`);
pm.environment.set('PRE_REQUEST_PAYLOAD', JSON.stringify(users));
return resolve(`Random signers created correctly`);
});
});
})();
let body = {
"grant_type": "client_credentials",
"client_id": "client_id",
"scope": "openid",
"client_secret": "bd26****-****-****-****-********37e9"
};
pm.sendRequest({
method: "POST",
url: pm.environment.get("keycloak_url") + `/realms/sandbox-dev/protocol/openid-connect/token`,
header: "Accept:application/json",
header: "Content-Type:application/x-www-form-urlencoded",
body: Object.keys(body).map((key) => `${key}=${body[key]}`).join("&")
}, (err, response) => {
console.log(err, response.json().access_token)
pm.environment.set("access_token, response.json().access_token);
});
// local open keys
let varsLocalOpenKeysDev = {
envApp: "sandbox", //production
env: "dev",//hml, prd
projectName : "projectname",
client: "keys",
}
// local bech dev
let vars = {
envOpenPlusApp: "sandbox", //production
env: "dev",//hml, prd
projectName : "openplus",
client: "bdc"
}
// datarruder + openplus dev
let varsOpenplus = {
envOpenPlusApp: "sandbox", //production
env: "dev",//hml, prd
projectName : "opb",
client: "openplus"
}
let varsOverwrite = {
// openplus_integrator_baseurl : "http://localhost:3030"
};
vars = varsLocalOpenKeysDev;
Object.keys(vars).forEach(varKey=> pm.environment.set(varKey, (vars[varKey].match(/\{\{.*?\}\}/g)) ? pm.environment.replaceIn(vars[varKey]) : vars[varKey] ) );
Object.keys(varsOverwrite).forEach(varKey=> pm.environment.set(varKey, (varsOverwrite[varKey].match(/\{\{.*?\}\}/g)) ? pm.environment.replaceIn(varsOverwrite[varKey]) : varsOverwrite[varKey] ) );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment