TDD (Test Driven Development)
Happy Path
[x] 1. Email exists and password match [x] 2. With a token [x] 3. Token with a valid secret key [x] 4. With a valid token (user exists on payload) [x] 5. Existing user accessing others endpoints with fake token
Unhappy Path
[x] 1. No email and/or password [x] 2. No email but with password [x] 3. With email but with no password [x] 4. With email and password, but email does not exists [x] 5. With a valid email, but password does not match [x] 6. With no token [x] 7. With a token expired [x] 8. Token with a invalid secret key [x] 9. With an invalid token (user does not exist on payload) [x] 10. No existing user accessing others endpoints with fake token
- Adicionar o IP global no mongoDB Atlas
- Após se logar no no site mongodb.com
- Com o Cluster aberto, clique no lado esquerdo em "Network Access"
- Com o "Network Access" aberto, clique no botão + ADD IP ADDRESS
- No campo "Access List Entry", adicione o IP: 0.0.0.0/0
- Não precisa de comentário no campo "Comments"
- Clique no botão "Confirm"
Importate: Não esquecer de estar na branch master ou main
- Alterar o arquivo package.json
- Clonar o script start para dev, como abaixo
- "dev": "nodemon src/server.js"
- Alterar o script start removendo nodemon e adicionando node, como abaixo
- "start": "node src/server.js",
- Clonar o script start para dev, como abaixo
- Se ainda não tiver criado, com base no arquivo .env.sample, criar um arquivo .env com as seguintes variáves
- MONGODB_URL = "mongodb+srv://:@cluster0.phugsom.mongodb.net/?retryWrites=true&w=majority"
- SECRET_KEY = "imagineSchool"
- PORT=8080
- Alterar o arquivo server.js
- Onde é declarada a const port, mudar a linha conforme abaixo
- const port = process.env.PORT || 8080
- Onde é declarada a const port, mudar a linha conforme abaixo
REFERÊNCIA: https://fly.io/docs/hands-on/install-flyctl/
- Logar-se no github
- Logar-se no site fly.io utilizando a autenticação social do github
- Instalar localmente
- No seu terminal, seguindo as instruções conforme link de referência
REFERÊNCIA: https://fly.io/docs/languages-and-frameworks/node/#launch-the-app-on-fly Utilizando como referência o documento acima, a partir do passo "Launch the App on Fly", executar os passos abaixo
-
Mantenha-se na branch master ou main
-
Execute o comando: flyctl launch
- Ele detectará o NodeJs
- Em "Choose an app name", adicione o nome da aplicação
- Sugestão: imagineshop ou imagineshop-api
- Em "Choose a region for deployment", escolha
- Rio de Janeiro OU
- São Paulo
- Em "Would you like to set up a Postgresql database now?", escolha N
- Em "Would you like to set up an Upstash Redis database now?", escolha N
- Tudo dando certo, é para mostrar uma mensagem parecida como a abaixo
"Your Node app is prepared for deployment. Be sure to set your listen port to 8080 using code similar to the following:
const port = process.env.PORT || "8080";
If you need custom packages installed, or have problems with your deployment build, you may need to edit the Dockerfile for app-specific changes. If you need help, please post on https://community.fly.io.
Now: run 'fly deploy' to deploy your Node app."
-
Execute o comando flyctl deploy ou fly deploy para realizar o deployment da aplicação.
-
Aguarde alguns minutos.
-
Caso tudo dê certo, algo como abaixo deve ser mostrado na tela
1 desired, 1 placed, 1 healthy, 0 unhealthy [health checks: 1 total, 1 passing] --> v0 deployed successfully
-
-
Após finalizar o passo anterior, verifique o status com o comando flyctl status
- O status esperado é "running"
-
Para executar a API e saber qual a URL da mesma, execute o comando flyctl open
-
Espere alguns instantes
-
A API deve ser aberta no browser com sucesso mostrando a mensagem "IMAGINE SHOP"
-
Caso ela não abra no Chrome
- Limpe o cache, feche e abra o navegador novamente OU
- tente abrir no Firefox ou no Edge
-
Tente abrir no Insomnia também
-
Lembre-se de utilizar https principalmente no Insomnia, para cada endpoint
IMPORTANTE: Embora o fly mostre http, no browser ele redireciona para https
-