API REST criada para gerenciar projetos escritos com python e seus pacotes.
O principal motivo para desenvolvimento dessa ferramento foi poder centralizar o gerenciamento dos pacotes usados nos projetos.
Garantir que os projetos estão usando as últimas versões disponíves dos pacotes.
- Python = "3.9.5"
- django = "~=3.2"
- djangorestframework = "~=3.12"
- requests = "~=2.25"
- gunicorn = "~=20.1"
- psycopg2 = "~=2.9"
- whitenoise = "~=5.2"
Click aqui para acessar.
Clone o projeto
git clone https://github.com/elicaciocdefarias/teste-python-jr-remoto-2021-06.git
Acesse o projeto
cd teste-python-jr-remoto-2021-06
Crie o arquivo .env na raiz do projeto e adicione as duas variáveis abaixo
SECRET_KEY=altere_esse_valor
DEBUG=True
Instale todas as dependências, incluindo as de desenvolvimento
pipenv install --dev
Rode as migrações
pipenv run python manage.py migrate
Para rodar os testes de unidade
pipenv run pytest -vv
Para rodar os testes de integração
Observações:
Antes de prosseguir você precisa instalar k6, click aqui para acessar o guia de instalação.
Abra duas janelas do terminal.
Observações:
Se estiver usando tilix ou tmux, basta dividir a janela em dois paineis.
Em uma janela ou painel, rode o comando abaixo para subir a aplicação.
pipenv run python manage.py runserver
Na outra janela ou painel, rode.
k6 run -e API_BASE='http://127.0.0.1:8000/' tests-open.js
Observações:
Rode o comando abaixo para testar a aplicação em produção.
k6 run -e API_BASE='https://magpy-elicacio.herokuapp.com/' tests-open.js
Observações
Os exemplos abaixo foram realizados usando HTTPie.
Para testar a API em produção basta troca http://127.0.0.1:8000/api/projects/ por https://magpy-elicacio.herokuapp.com/api/projects/
http POST 'http://127.0.0.1:8000/api/projects/' name='borg' packages:='[]'
{
"name": "borg",
"packages": []
}
http POST 'http://127.0.0.1:8000/api/projects/' name='dinos' packages:='[{"Django": "3.2.5"}]'
{
"name": "dinos",
"packages": [
{
"name": "Django",
"version": "3.2.5"
}
]
}
http GET 'http://127.0.0.1:8000/api/projects/'
[
{
"name": "borg",
"packages": []
},
{
"name": "dinos",
"packages": [
{
"name": "Django",
"version": "3.2.5"
}
]
}
]
Observações
As operações abaixo são realizadas usando o nome do projeto.
Está sendo usado o nome do projeto criado aqui
http GET 'http://127.0.0.1:8000/api/projects/borg/'
{
"name": "borg",
"packages": []
}
http PUT 'http://127.0.0.1:8000/api/projects/borg/' packages:='[{"name": "pytest-mock", "version": "3.5.1"}]
{
"name": "borg",
"packages": [
{
"name": "pytest-mock",
"version": "3.5.1"
}
]
}
http DELETE 'http://127.0.0.1:8000/api/projects/borg/'
Observações
o método delete não retorna valor