Passo a Passo para Testar o Backend
Passos
Essa documentação fornece um passo a passo detalhado para realizar testes no backend do nosso projeto. Clique nas caixas abaixo para avançar em cada etapa do processo.
Autenticação e autorização
Gerar Token de Acesso e Autorizar
O primeiro passo é criar um Token de Acesso usando um dos usuários administrativos. Para isso, utilize o Swagger em Login for Access Token. Siga as etapas abaixo:
- Clique em Try it out.
- Preencha os seguintes campos:
- username: "email@email.com.br"
- password: "your_password"
- client_id: "1"
Isso gerará o Token de Acesso necessário para prosseguir com as etapas que exigem autenticação via token.
Ao tentar acessar endpoints que requerem autorização, como category, orders, e products, siga estas etapas adicionais:
- Clique em Authorize (símbolo de cadeado).
- Faça login usando seu e-mail e senha administrativo.
- username: "email@email.com.br"
- password: "your_password"
- client_id: 1
Solução de Problemas: 401 Unhauthorized
Se ao tentar acessar os endpoints category, orders, ou products você receber uma resposta com o erro 401 Unauthorized, isso significa que as credenciais não foram validadas corretamente.
Verifique se o Token de Acesso foi gerado corretamente e se as credenciais estão corretas ao tentar autorizar o acesso.Para garantir a segurança, o token expira a cada operação (GET, PUT ou POST). Para ajustar o tempo de expiração do token, você deve definir a variável de ambiente TIMETOKEN no arquivo .env com o valor desejado para o tempo de expiração personalizado.
Onboarding: Cliente anônimo
Passo 01: Realizando pedido sem identificação
Este projeto permite que o cliente faça um pedido sem a necessidade de cadastro de seus dados pessoais. Para executar esse fluxo, siga os passos abaixo: 1. Acesse o Swagger em Create Anonymous Customer. 2. Clique em Try it out. 3. Em seguida, clique em Execute. Após seguir esses passos, um cliente anônimo será gerado, permitindo que o pedido seja realizado sem identificação.
Onboarding: Cliente identificado
Passo 02: Fazendo cadastro do cliente
Para os clientes que desejam se cadastrar na aplicação, basta usar o endpoint customers/register e preencher com os dados solicitados como no exemplo abaixo:
{
"name": "Abelardo",
"email": "abe@email.com.br",
"cpf": "001001001-11",
"password": "my_password"
}
Para certificar que o cliente foi registrado utilize o endpoint customers/read_customers e liste todos os clientes cadastrados.
Pedido: Seleção do pedido
Passo 03: Efetuando um pedido
Com o endpoint orders/create_orders preencha com os valores de customer_id que foi cadastrado nos passos 01 ou 02 e product_id para adicionar o produto a um pedido, exemplo:
{
"status": "string",
"user_agent": "string",
"ip_address": "string",
"os": "string",
"browser": "string",
"device": "string",
"comments": "string",
"customer_id": 4,
"products": [
{
"product_id": 10,
"comment": "sem gelo"
}
]
}
Pagamento: Processando o pagamento do pedido
Passo 04: Realizando pagamento do pedido (fake checkout)
Após executar o orders/fake_checkout siga para o fluxo de atualização de status do pedido.
Preparação e atualização do pedido
Passo 05: Atualização de status de pedido
Com order_id é possível fazer a atualização de status de cada pedido, com o endpoint orders/update_order_status. Exemplo com valor de entrada usando o order_id 3:
Passo 06: Visualizando status do pedido
Para visualizar o status atual de um pedido, siga os passos abaixo: - Com o valor do order_id, acesse o endpoint orders/read_order. - Verifique o status atual do pedido. Exemplo de retorno:
- Para atualizar o status do pedido para pronto, utilize o endpoint oorders/update_order_status com o seguinte corpo de requisição: - Depois de atualizar o status, você pode confirmar a atualização acessando novamente o endpoint orders/read_order. O estado do pedido será exibido como pronto para retirada.Listando todos os pedidos registrados
Em orders/read_orders é possível listar todos os pedidos feitos por cliente. Exemplo com valores de retorno:
Gerenciamento de produtos e categorias
Cadastro de produto
Usando o endpoint products/create_product é possível fazer o cadastro de um novo produto de acordo com as categorias previamente cadastradas. Exemplo com valores de entrada:
Atualização de categoria
Para atualizar uma categoria de produto, utilize o endpoint category/update_category: - Com o valor do category_id, faça a requisição com o corpo de requisição similar ao exemplo abaixo:
Listando categorias e produtos
Usando o endpoint category/list_categories é possível fazer o cadastro de um novo produto de acordo com as categorias previamente cadastradas. Exemplo com valores que retornam nessa operação:
{
"categories": [
{
"name": "Sanduíches",
"id": 1,
"products": [
{
"name": "Sanduíche de Frango Grelhado",
"description": "Grilled chicken sandwich with lettuce and tomato",
"price": 15,
"category_id": 1,
"category": "Sanduíches",
"id": 1
},
{
"name": "Cheeseburger Clássico",
"description": "Classic cheeseburger with beef patty and cheese",
"price": 12,
"category_id": 1,
"category": "Sanduíches",
"id": 2
},
{
"name": "Sanduíche Vegano de Grão-de-Bico",
"description": "Vegan sandwich with chickpea patty",
"price": 14,
"category_id": 1,
"category": "Sanduíches",
"id": 3
}
]
},
{
"name": "Pizzas",
"id": 2,
"products": [
{
"name": "Pizza Margherita",
"description": "Pizza with tomato sauce, mozzarella, and basil",
"price": 25,
"category_id": 2,
"category": "Pizzas",
"id": 4
},
{
"name": "Pizza Pepperoni",
"description": "Pizza with tomato sauce, mozzarella, and pepperoni",
"price": 27,
"category_id": 2,
"category": "Pizzas",
"id": 5
},
{
"name": "Pizza Quatro Queijos",
"description": "Pizza with four types of cheese",
"price": 28,
"category_id": 2,
"category": "Pizzas",
"id": 6
}
]
},
{
"name": "Acompanhamentos",
"id": 3,
"products": [
{
"name": "Batata Frita",
"description": "Portion of crispy french fries",
"price": 8,
"category_id": 3,
"category": "Acompanhamentos",
"id": 7
},
{
"name": "Anéis de Cebola",
"description": "Portion of breaded onion rings",
"price": 9,
"category_id": 3,
"category": "Acompanhamentos",
"id": 8
},
{
"name": "Salada Caesar",
"description": "Caesar salad with lettuce, croutons, and parmesan cheese",
"price": 10,
"category_id": 3,
"category": "Acompanhamentos",
"id": 9
}
]
},
{
"name": "Bebidas",
"id": 4,
"products": [
{
"name": "Coca-Cola",
"description": "Cola soft drink",
"price": 5,
"category_id": 4,
"category": "Bebidas",
"id": 10
},
{
"name": "Suco de Laranja",
"description": "Natural orange juice",
"price": 6,
"category_id": 4,
"category": "Bebidas",
"id": 11
},
{
"name": "Água Mineral",
"description": "Still mineral water",
"price": 4,
"category_id": 4,
"category": "Bebidas",
"id": 12
}
]
},
{
"name": "Sobremesas",
"id": 5,
"products": [
{
"name": "Brownie de Chocolate",
"description": "Chocolate brownie with walnuts",
"price": 7,
"category_id": 5,
"category": "Sobremesas",
"id": 13
},
{
"name": "Torta de Maçã",
"description": "Apple pie with cinnamon",
"price": 8,
"category_id": 5,
"category": "Sobremesas",
"id": 14
},
{
"name": "Sorvete de Baunilha",
"description": "Vanilla ice cream",
"price": 6,
"category_id": 5,
"category": "Sobremesas",
"id": 15
},
{
"name": "Brigadeiro",
"description": "Doce feito com leite condensado e achocolatado",
"price": 3,
"category_id": 5,
"category": "Sobremesas",
"id": 16
},
{
"name": "Brigadeiro",
"description": "Doce feito com leite condensado e achocolatado",
"price": 3,
"category_id": 5,
"category": "Sobremesas",
"id": 17
},
{
"name": "Brigadeiro",
"description": "Doce feito com leite condensado e achocolatado",
"price": 3,
"category_id": 5,
"category": "Sobremesas",
"id": 18
},
{
"name": "Brigadeiro",
"description": "Doce feito com leite condensado e achocolatado",
"price": 3,
"category_id": 5,
"category": "Sobremesas",
"id": 19
}
]
}
]
}