Skip to content

Тестовое задание от компании KODE на должность Python разработчика | Менти. Пожалуйста, дайте фидбэк!

Notifications You must be signed in to change notification settings

Telmann/KODE_test_case

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KODE_test_case

Стек

  • FastAPI Для API/backend на Python.
    • 🧰 SQLAlchemy Для взаимодействия с базой данных (ORM).
    • 🔍 Pydantic, используется FastAPI для валидации данных и управления настройками.
    • 💾 PostgreSQL в качестве SQL БД.
    • 🦄 Uvicorn, Веб-сервер ASGI для Python. (при запуске приложения/сервиса через docker используется gunicorn)
    • pip в качестве стандартного пакетного менеджера. Зависимости зафиксированы
    • yapf для автоматического форматирования кода в проекте.
    • pytest + pytest-asyncio для тестирования приложения. Плагин pytest-asyncio обеспечивает поддержку coroutines в качестве тестовых функций. Позволяет использовать await внутри тестов.
    • 🔒PyJWT для получения JWT-токена для аутентификации.
    • Я.Спеллер для валидации текста.
    • 🐋Docker Запуск сервиса и требуемой им инфраструктуры проводится в docker контейнерах.

Task / Задание

Ссылка на задание

Инструкция по запуску и тестированию сервиса с помощью 🐋Docker🐋

1. Клонируйте репозиторий

bash команда: git clone https://github.com/Telmann/KODE_test_case.git

2. Откройте терминал (перейдите в директорию проекта)

выполните: docker compose up --build test
данная команда запустит тесты и после их успешного проведения вы увидите что-то похожее:

image

2. Далее для запуска приложения

выполните: docker compose up --build app

3. Готово! Приложение будет доступно по адресу: http://127.0.0.1:9999/docs#/

При тестировании приложения с помощью SwaggerUI:

Советую проводить авторизацию с помощью замочков перед попыткой обратиться к /notes

image image

Интерактивная документация по API

image

Кратко про существующие эндпоинты:

- **POST /registration/**: Регистрация. Добавляет нового пользователя в базу данных. 
- **POST /token**: Аутентифицирует пользователя и выдает токен доступа JWT. Проверяет указанные имя пользователя и пароль и, если они верны, генерирует JWT-токен доступа.
- **POST /notes**: Создает новую заметку для текущего аутентифицированного пользователя. Проверяет содержимое на наличие ошибок с помощью [Яндекс.Спеллер](https://yandex.ru/dev/speller/doc/ru/concepts/api-overview?ysclid=m0fdi2dd3r506654470) и, если ошибок нет, сохраняет заметку в базе данных.
- **GET /notes**: Получает из базы данных все заметки для текущего аутентифицированного пользователя.

Интересная ошибка с которой я столкнулся

Подробнее
Использовал последнюю версию pytest(8.3.2) и получал [ошибку](pytest-dev/pytest-asyncio#830) на самом первом тесте(при запуске тестов через Docker). В результате пришлось использовать версию 8.2.1

About

Тестовое задание от компании KODE на должность Python разработчика | Менти. Пожалуйста, дайте фидбэк!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published