Relatório da aplicação
Questão 1 ( Modelos )
Como foi implementado
Foi utilizado os modelos do django refletindo um diagrama de classes elaborado. Se valendo pelos relacionamentos de ForeignKey e ManyToManyField, e estão localizados em : models.py
Como validar e testar
Essa parte dos modelos é mais a base da aplicação, a parte de testar e validar será mostrada mais à frente;
Questão 2 ( Esquema de autenticação )
Como foi implementado
Foram utilizadas 2 formas de autenticação
- TokenAuthentication (
rest_framework.authentication.TokenAuthentication
) - BasicAuthentication (
'rest_framework.authentication.BasicAuthentication
)
PASSOS
- Adicionado a aplicação que faz a obtenção do token no INSTALLED_APPS ( settings.py )
- Mapeado a url que fará com que o cliente possa requisitar um token. ( url.py )
- No momento da criação de cada usuário é criado um
Token
associado à ele passar posteriormente ser feito autenticação. ( views.py )
Como validar e testar
Essa funcionalidade está validada no arquivo de testes localizado em : testes.py
E para executar basta entrar na raiz do projeto e executar o comando:
python manage.py test core.tests
Questão 3 ( Autenticação )
Como foi feito
Foi usado a classe de permissão padrão do DRF chamada IsAuthenticated
e para cada classe que fosse necessário era adicionada à uma tupla de um atributo responsável por mapear atributos de permissões na view.py.
Views autenticadas
- ProfileViewList
- RequestCategoryViewList
- RequestCategoryViewDetail
- MovementViewDetail
Views não-autenticadas
- ProfileViewDetail
- CategoryViewList
- CategoryViewDetail
- MovementViewDetail
Exemplo de código
class RequestCategoryViewList(RequestCategoryDataRepeated,generics.ListCreateAPIView):
name = 'request-category-list'
permission_classes = (IsAuthenticated,)
Como validar e testar
Há duas formas: acessando via browser e vendo a mensagem solicitando a permissão, ou executar os testes da aplicação, como é dito na questão acima.
Questão 4 ( Documentação )
Como foi implementado
Basicamente foi instaldo o drf-docs via pip , adicionado a aplicação no INSTALLED_APPS e depois mapeado a url para ser acessada, que está localizada em : urls.py
Como validar e testar
Basicamente rodando o projeto e acessando a url da documentação
Questão 5 ( Paginação e Throttling)
Como foi feito
Basicamente foi utilizado os parâmetros default que o próprio DRF provê, e só bastou adicionar eles no arquivo settings.py
Código do trecho:
PAGINATION_REST = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 5
}
THROTTLING_REST = {
'DEFAULT_THROTTLE_CLASSES': ('rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle',),
'DEFAULT_THROTTLE_RATES': {'anon': '10/hour', 'user': '120/hour'}
}
REST_FRAMEWORK = {}
REST_FRAMEWORK.update(PAGINATION_REST)
REST_FRAMEWORK.update(THROTTLING_REST)
Questão 6 ( Filtros , buscas e ordenação )
Questão 7 ( Testes )
Como foi feito
Para essa funcionalidade foi utilizado o arquivo tests.py.
Para fazer as requisições para os endpoints da api foi utilizado a classe base APIClient
, pois como a minha classe de testes herda da APITestCase
então por herança eu teria disponível um atributo chamado : self.client
pronto só para fazer as requisições.
Exemplo:
self.client.post(url, data, format="json") self.client.get(url)
...
Como validar e testar
Para isso basta executar o comando padrão para rodar a bateria de testes:
python manage.py test core.tests
Por enquanto é isso 😄