Skip to content

elicaciocdefarias/desafio-instruct-magpy

 
 

Repository files navigation

MagPy

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.

Objetivo

Garantir que os projetos estão usando as últimas versões disponíves dos pacotes.

Principais Tecnologias utilizadas

  • Python = "3.9.5"
  • django = "~=3.2"
  • djangorestframework = "~=3.12"
  • requests = "~=2.25"
  • gunicorn = "~=20.1"
  • psycopg2 = "~=2.9"
  • whitenoise = "~=5.2"

Demostração

Click aqui para acessar.

Como instalar localmente

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

Mode de usar

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/

Principais operações

Criar

http POST 'http://127.0.0.1:8000/api/projects/' name='borg' packages:='[]' 
{
    "name": "borg",
    "packages": []
}

Criar com pacotes

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"
        }
    ]
}

Listar todos.

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

Listar um.

http GET 'http://127.0.0.1:8000/api/projects/borg/'
{
    "name": "borg",
    "packages": []
}

Atualizar um.

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"
        }
    ]
}

Deletar um.

http DELETE 'http://127.0.0.1:8000/api/projects/borg/'

Observações

o método delete não retorna valor

About

Teste técnico para a vaga remota de Dev Python Jr da Instruct

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Python 75.3%
  • JavaScript 21.3%
  • HTML 3.4%