{"info":{"_postman_id":"9dc4b8a4-a2ba-453f-8e70-b293efcfb13e","name":"serverest-collection-mouts-ti","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"18794515","collectionId":"9dc4b8a4-a2ba-453f-8e70-b293efcfb13e","publishedId":"2sBXqRjcb9","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-05-18T14:24:37.000Z"},"item":[{"name":"Usuarios","item":[{"name":"[Teste] Cadastrar usuário","event":[{"id":"553e4a45-7f85-4082-b8dc-15ab8d06d701","listen":"test","script":{"id":"8edd9d2e-7849-4b8e-aaed-b09208642f8c","exec":["pm.test('Status code is 201', function () {","    pm.response.to.have.status(201);","});","","pm.test('User creation returns message and id', function () {","    const jsonData = pm.response.json();","    pm.expect(jsonData).to.have.property('message');","    pm.expect(jsonData.message).to.include('sucesso');","    pm.expect(jsonData).to.have.property('_id');","    pm.expect(jsonData._id).to.be.a('string').and.not.empty;","});","","pm.test('Save created user data for follow-up requests', function () {","    const jsonData = pm.response.json();","    ","    pm.collectionVariables.set('userId', jsonData._id);","","    const requestBodyRaw = pm.variables.replaceIn(pm.request.body.raw);","    const requestBody = JSON.parse(requestBodyRaw || '{}');","","    if (requestBody.nome) {","        pm.collectionVariables.set('createdUserNome', requestBody.nome);","    }","","    if (requestBody.email) {","        pm.collectionVariables.set('createdUserEmail', requestBody.email);","    }","","    if (requestBody.password) {","        pm.collectionVariables.set('createdUserPassword', requestBody.password);","    }","","    pm.expect(pm.collectionVariables.get('userId')).to.eql(jsonData._id);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"82dfbaad-152a-42b8-85db-ce113db70054","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","disabled":false}],"body":{"mode":"raw","raw":"{\r\n    \"nome\": \"Harold Dibbert\",\r\n    \"email\": \"f186f516-7c1a-48ef-8d4d-08ae8e026480@teste.com\",\r\n    \"password\": \"123456\",\r\n    \"administrador\": \"true\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{API_URL}}/usuarios","description":"<p>Cadastra um usuário com dados dinâmicos para evitar conflito.</p>\n","urlObject":{"path":["usuarios"],"host":["{{API_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"82dfbaad-152a-42b8-85db-ce113db70054"},{"name":"[Teste] Buscar usuário por ID","event":[{"listen":"test","script":{"id":"23138ed0-ccb4-42fb-b6fd-4cf63ce19cf5","exec":["pm.test('Status code is 200', function () {","    pm.response.to.have.status(200);","});","","pm.test('Response returns persisted user with required fields', function () {","    const jsonData = pm.response.json();","    pm.expect(jsonData).to.have.property('_id');","    pm.expect(jsonData._id).to.be.a('string').and.not.empty;","    pm.expect(jsonData).to.have.property('nome');","    pm.expect(jsonData.nome).to.be.a('string').and.not.empty;","    pm.expect(jsonData).to.have.property('email');","    pm.expect(jsonData.email).to.be.a('string').and.not.empty;","});","","pm.test('Response _id matches saved userId', function () {","    const jsonData = pm.response.json();","    pm.expect(jsonData._id).to.eql(pm.collectionVariables.get('userId'));","});","","pm.test('Response nome and email match created user when available', function () {","    const jsonData = pm.response.json();","    const savedEmail = pm.collectionVariables.get('createdUserEmail');","    const savedNome = pm.collectionVariables.get('createdUserNome');","","    if (savedEmail) {","        pm.expect(jsonData.email).to.eql(savedEmail);","    }","","    if (savedNome && !savedNome.includes('{{')) {","        pm.expect(jsonData.nome).to.eql(savedNome);","    }","});","",""],"type":"text/javascript","packages":{},"requests":{}}}],"id":"d316be69-b121-4070-9a0a-7fc28811ad29","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{API_URL}}/usuarios/","description":"<p>Busca um usuário previamente cadastrado usando a variável userId e valida a persistência dos dados após o cadastro.</p>\n","urlObject":{"path":["usuarios",""],"host":["{{API_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"d316be69-b121-4070-9a0a-7fc28811ad29"},{"name":"[Teste] Listar usuários","event":[{"id":"65f53163-bc2b-4965-b5c2-0553e5caa891","listen":"test","script":{"id":"23cd5beb-0df5-44da-bbc6-2bd693c0335d","exec":["pm.test('Status code is 200', function () {","    pm.response.to.have.status(200);","});","","pm.test('Response has usuarios list', function () {","    const jsonData = pm.response.json();","    pm.expect(jsonData).to.have.property('usuarios');","    pm.expect(jsonData.usuarios).to.be.an('array');","});","","pm.test('Response has quantidade', function () {","    const jsonData = pm.response.json();","    pm.expect(jsonData).to.have.property('quantidade');","    pm.expect(jsonData.quantidade).to.be.a('number');","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"305f6ce5-4746-4100-998b-2f587c2b06d0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{API_URL}}/usuarios","description":"<p>Lista os usuários cadastrados na Serverest.</p>\n","urlObject":{"path":["usuarios"],"host":["{{API_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"305f6ce5-4746-4100-998b-2f587c2b06d0"}],"id":"6e4521c0-fbfb-4c81-aebd-fb78a0df9664","_postman_id":"6e4521c0-fbfb-4c81-aebd-fb78a0df9664","description":""},{"name":"Login","item":[{"name":"[Teste] Login com sucesso","event":[{"id":"ec69cab4-8fd3-4b3c-97ec-609e65559859","listen":"test","script":{"id":"f70ed822-5128-4686-855b-e690675d15f5","exec":["pm.test('Status code is 200', function () {","    pm.response.to.have.status(200);","});","","pm.test('Login response has success message and authorization token', function () {","    const jsonData = pm.response.json();","    ","    pm.expect(jsonData).to.have.property('message');","    pm.expect(jsonData.message).to.include('Login realizado com sucesso');","    ","    pm.expect(jsonData).to.have.property('authorization');","    pm.expect(jsonData.authorization).to.be.a('string').and.not.empty;","});","","pm.test('Capture and store bearerToken', function () {","    const jsonData = pm.response.json();","    const rawToken = jsonData.authorization || jsonData.token;","    ","    pm.expect(rawToken).to.be.a('string').and.not.empty;","","    const formattedToken = /^Bearer\\s+/i.test(rawToken) ? rawToken : `Bearer ${rawToken}`;","  ","    pm.collectionVariables.set('bearerToken', formattedToken);","   ","    pm.expect(pm.collectionVariables.get('bearerToken')).to.eql(formattedToken);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"7857f1fd-482c-46df-938c-ae088ace4d2d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","disabled":false}],"body":{"mode":"raw","raw":"{\r\n    \"email\": \"\",\r\n    \"password\": \"\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{API_URL}}/login","description":"<p>Realiza login com sucesso na Serverest e captura o token para uso nos requests autenticados.</p>\n","urlObject":{"path":["login"],"host":["{{API_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"7857f1fd-482c-46df-938c-ae088ace4d2d"},{"name":"[Teste] Login com email ou senha inválidos","event":[{"listen":"test","script":{"id":"fbf2c822-01f0-4487-b294-e7bd5bfca79e","exec":["pm.test('Status code is 401', function () {\r","    pm.response.to.have.status(401);\r","});\r","\r","pm.test('Validate error message for invalid credentials', function () {\r","    const jsonData = pm.response.json();\r","    \r","    pm.expect(jsonData).to.have.property('message');\r","    \r","    pm.expect(jsonData.message).to.eql('Email e/ou senha inválidos');\r","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"6907152e-e683-4abe-a9e4-1616b81fb01d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\": \"usuario.inexistente@naoexiste.com\",\r\n    \"password\": \"senhaInvalida123\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{API_URL}}/login","description":"<p>Realiza uma tentativa de login com credenciais inválidas.</p>\n","urlObject":{"path":["login"],"host":["{{API_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"6907152e-e683-4abe-a9e4-1616b81fb01d"}],"id":"c2b92144-aa0d-4cd8-aa66-67b4c3a3b1e3","_postman_id":"c2b92144-aa0d-4cd8-aa66-67b4c3a3b1e3","description":""},{"name":"Produtos","item":[{"name":"[Teste] Cadastrar produto","event":[{"id":"966ba363-d5ba-44e1-8b4f-a7fa5eb9f81e","listen":"test","script":{"id":"85dce1db-3fb2-4254-9fd7-ccf94f293264","exec":["pm.test('Status code is 201', function () {","    pm.response.to.have.status(201);","});","","pm.test('Product creation returns success message and id', function () {","    const jsonData = pm.response.json();","    ","    pm.expect(jsonData).to.have.property('message');","    pm.expect(jsonData.message).to.include('Cadastro realizado com sucesso');","    ","    pm.expect(jsonData).to.have.property('_id');","    pm.expect(jsonData._id).to.be.a('string').and.not.empty;","});","","pm.test('Save created product ID', function () {","    const jsonData = pm.response.json();","    ","    if (jsonData._id) {","        pm.collectionVariables.set('createdProductId', jsonData._id);","    }","    pm.expect(pm.collectionVariables.get('createdProductId')).to.eql(jsonData._id);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"d630911f-0af3-4daf-b4c0-65973b29221b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","disabled":false},{"key":"Authorization","value":"","disabled":false}],"body":{"mode":"raw","raw":"{\r\n    \"nome\": \"Intelligent Cotton Pizza\",\r\n    \"preco\": 470,\r\n    \"descricao\": \"Use the online THX panel, then you can connect the digital transmitter!\",\r\n    \"quantidade\": 100\r\n}","options":{"raw":{"language":"json"}}},"url":"{{API_URL}}/produtos","description":"<p>Cadastra um produto autenticado e captura o _id retornado.</p>\n","urlObject":{"path":["produtos"],"host":["{{API_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"d630911f-0af3-4daf-b4c0-65973b29221b"},{"name":"[Teste] Buscar produto por ID","event":[{"id":"cd1ab5b6-c0f0-4b9c-963a-bf408b0bce18","listen":"test","script":{"id":"4ba5840b-3ce6-4271-8b91-da8719a2573c","exec":["pm.test('Status code is 200', function () {","    pm.response.to.have.status(200);","});","","pm.test('Validate product schema and data integrity', function () {","    const jsonData = pm.response.json();","    ","    pm.expect(jsonData).to.have.property('nome');","    pm.expect(jsonData).to.have.property('preco');","    pm.expect(jsonData).to.have.property('descricao');","    pm.expect(jsonData).to.have.property('quantidade');","    pm.expect(jsonData).to.have.property('_id');","    ","    pm.expect(jsonData._id).to.eql(pm.collectionVariables.get('createdProductId'));","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"dc73c35f-34ca-4cb9-a369-ca3ecb4fb26d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{API_URL}}/produtos/","description":"<p>Busca um produto previamente cadastrado usando a variável productId.</p>\n","urlObject":{"path":["produtos",""],"host":["{{API_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"dc73c35f-34ca-4cb9-a369-ca3ecb4fb26d"},{"name":"[Teste] Listar produtos","event":[{"id":"b424a370-0454-491d-9e2d-f099c79b868b","listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status code is 200', function () {","    pm.response.to.have.status(200);","});","","pm.test('Response has produtos list', function () {","    const jsonData = pm.response.json();","    pm.expect(jsonData).to.have.property('produtos');","    pm.expect(jsonData.produtos).to.be.an('array');","});","","pm.test('Response has quantidade', function () {","    const jsonData = pm.response.json();","    pm.expect(jsonData).to.have.property('quantidade');","    pm.expect(jsonData.quantidade).to.be.a('number');","});"]}}],"id":"b7595a3c-244b-4837-a36f-09b50a99b6a2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{API_URL}}/produtos","description":"<p>Lista os produtos cadastrados na Serverest.</p>\n","urlObject":{"path":["produtos"],"host":["{{API_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"b7595a3c-244b-4837-a36f-09b50a99b6a2"},{"name":"[Teste] Atualizar produto por ID","event":[{"listen":"test","script":{"id":"6b754d26-b33d-498b-8206-2974088efb99","exec":["pm.test('Status code is 200', function () {\r","    pm.response.to.have.status(200);\r","});\r","\r","pm.test('Product update returns success message', function () {\r","    const jsonData = pm.response.json();\r","    \r","    pm.expect(jsonData).to.have.property('message');\r","    pm.expect(jsonData.message).to.eql('Registro alterado com sucesso');\r","});\r","\r","pm.test('Store updated data for persistence verification', function () {\r","    const requestBodyRaw = pm.variables.replaceIn(pm.request.body.raw);\r","    const requestBody = JSON.parse(requestBodyRaw || '{}');\r","\r","    if (requestBody.nome) {\r","        pm.collectionVariables.set('updatedProductName', requestBody.nome);\r","        pm.collectionVariables.set('updatedProductPreco', requestBody.preco);\r","        pm.collectionVariables.set('updatedProductDescricao', requestBody.descricao);\r","        pm.collectionVariables.set('updatedProductQuantidade', requestBody.quantidade);\r","    }\r","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"961ccab2-e809-4e02-abf2-f94b49bf5381","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"nome\": \"Tasty Metal Tuna (atualizado)\",\r\n  \"preco\": 599,\r\n  \"descricao\": \"Descrição atualizada via automação de testes com Postman.\",\r\n  \"quantidade\": 250\r\n}","options":{"raw":{"language":"json"}}},"url":"{{API_URL}}/produtos/","description":"<p>Atualiza um produto cadastrado, identificado por id.</p>\n","urlObject":{"path":["produtos",""],"host":["{{API_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"961ccab2-e809-4e02-abf2-f94b49bf5381"},{"name":"[Teste] Deletar produto por ID","event":[{"listen":"test","script":{"id":"fba3407d-e54f-4e15-a453-6ec6ff0b4a96","exec":["pm.test('Status code is 200', function () {\r","    pm.response.to.have.status(200);\r","});\r","\r","pm.test('Product deletion returns success message', function () {\r","    const jsonData = pm.response.json();\r","    \r","    pm.expect(jsonData).to.have.property('message');\r","    pm.expect(jsonData.message).to.eql('Registro excluído com sucesso');\r","});\r","\r","pm.test('Clear product variables from collection', function () {\r","    pm.collectionVariables.unset('updatedProductName');\r","    pm.collectionVariables.set('productIsDeleted', true);\r","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"73b72558-abe0-4208-8ef8-b02800758b0c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Authorization","value":"","type":"text"}],"url":"{{API_URL}}/produtos/","description":"<p>Exclui um produto cadastrado, identificado por id.</p>\n","urlObject":{"path":["produtos",""],"host":["{{API_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"73b72558-abe0-4208-8ef8-b02800758b0c"}],"id":"d8561af6-b2ef-49cb-902b-cac28868b83c","event":[{"listen":"prerequest","script":{"id":"d4da2544-c0e7-4ad0-8f85-a0720505bf2d","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"e8560daf-2f7f-4d65-9275-c4ba4323193a","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"_postman_id":"d8561af6-b2ef-49cb-902b-cac28868b83c","description":""}],"variable":[{"key":"userId","value":""},{"key":"createdUserNome","value":""},{"key":"createdUserEmail","value":""},{"key":"createdUserPassword","value":""},{"key":"bearerToken","value":""},{"key":"createdProductId","value":""},{"key":"updatedProductPreco","value":""},{"key":"updatedProductDescricao","value":""},{"key":"updatedProductQuantidade","value":""},{"key":"productIsDeleted","value":""}]}