Postman коллекция (52 теста): - Аутентификация (3): login, refresh, verify - Сотрудники (11): CRUD, search, bulk operations, skills - Отделы (3): list, create, retrieve - Документы (3): list, create, retrieve - Лента (5): posts CRUD с пагинацией - Коммуникации (5): чаты и сообщения - Календарь (3): события и подписки - Заявки (3): requests CRUD - Уведомления (3): list, mark_read, mark_all_read - Действия сотрудников (3): actions CRUD - Роли отделов (3): department_roles CRUD - Продвинутые функции: группы (5), навыки (2) Newman CLI интеграция: - newman_test_results.txt - последний запуск (32 requests, 0 failures) - newman-report.json - детальный JSON отчет REST Client: - api_tests.http - альтернатива Postman для VSCode REST Client Документация: - API_QUICKSTART.md - быстрый старт с примерами - docs/guides/API_TESTING_GUIDE.md - полное руководство (см. след. коммит)
199 lines
5.6 KiB
Markdown
199 lines
5.6 KiB
Markdown
# 🚀 Быстрый старт: Тестирование API
|
||
|
||
## Выбор инструмента
|
||
|
||
| Инструмент | Использование | Сложность |
|
||
|------------|---------------|-----------|
|
||
| **Postman** | GUI, удобный интерфейс | ⭐⭐ |
|
||
| **REST Client** | VS Code, быстрое тестирование | ⭐ |
|
||
| **pytest** | Автоматизация, CI/CD | ⭐⭐⭐ |
|
||
| **cURL** | Консоль, скрипты | ⭐⭐ |
|
||
|
||
## 1️⃣ Postman (рекомендуется для начинающих)
|
||
|
||
### Установка
|
||
1. Скачайте [Postman](https://www.postman.com/downloads/)
|
||
2. Установите и запустите
|
||
|
||
### Импорт коллекции
|
||
```bash
|
||
1. File → Import
|
||
2. Выберите файл: EUSRR_API.postman_collection.json
|
||
3. Также импортируйте: EUSRR_Local.postman_environment.json
|
||
4. Выберите environment "EUSRR Local" в правом верхнем углу
|
||
```
|
||
|
||
### Первый запрос
|
||
```bash
|
||
1. Откройте "Authentication → Login"
|
||
2. Нажмите "Send"
|
||
3. Токен автоматически сохранится! ✅
|
||
4. Теперь можно выполнять любые запросы
|
||
```
|
||
|
||
## 2️⃣ REST Client (для VS Code)
|
||
|
||
### Установка
|
||
```bash
|
||
1. Откройте Extensions (Ctrl+Shift+X)
|
||
2. Найдите "REST Client"
|
||
3. Установите от Huachao Mao
|
||
```
|
||
|
||
### Использование
|
||
```bash
|
||
1. Откройте файл: api_tests.http
|
||
2. Найдите "### Login"
|
||
3. Нажмите "Send Request" над запросом
|
||
4. Скопируйте access token
|
||
5. Замените @accessToken на ваш токен
|
||
6. Готово! 🎉
|
||
```
|
||
|
||
## 3️⃣ pytest (автоматизированное тестирование)
|
||
|
||
### Запуск всех тестов
|
||
```bash
|
||
# В Docker
|
||
docker-compose exec web pytest tests/api/
|
||
|
||
# Локально
|
||
.venv/Scripts/python -m pytest tests/api/
|
||
```
|
||
|
||
### Запуск конкретного теста
|
||
```bash
|
||
docker-compose exec web pytest tests/api/examples/test_api_examples.py::TestAuthentication::test_login_with_email -v
|
||
```
|
||
|
||
### С покрытием кода
|
||
```bash
|
||
docker-compose exec web pytest tests/api/ --cov=api --cov-report=html
|
||
```
|
||
|
||
## 4️⃣ cURL (консоль)
|
||
|
||
### Получить токен
|
||
```bash
|
||
curl -X POST http://localhost:8000/api/auth/token/ \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"username": "admin@example.com", "password": "password"}'
|
||
```
|
||
|
||
### Использовать токен
|
||
```bash
|
||
TOKEN="your_token_here"
|
||
|
||
curl -X GET http://localhost:8000/api/v1/employees/ \
|
||
-H "Authorization: Bearer $TOKEN"
|
||
```
|
||
|
||
## 📋 Основные endpoints
|
||
|
||
### Аутентификация
|
||
- `POST /api/auth/token/` - Получить токен
|
||
- `POST /api/auth/token/refresh/` - Обновить токен
|
||
- `POST /api/v1/auth/register/` - Регистрация
|
||
|
||
### Сотрудники
|
||
- `GET /api/v1/employees/` - Список
|
||
- `GET /api/v1/employees/me/` - Текущий пользователь
|
||
- `GET /api/v1/employees/{id}/` - Конкретный сотрудник
|
||
- `PATCH /api/v1/employees/{id}/` - Обновить
|
||
|
||
### Посты
|
||
- `GET /api/v1/posts/` - Список
|
||
- `POST /api/v1/posts/` - Создать
|
||
- `POST /api/v1/posts/{id}/like/` - Лайк
|
||
|
||
### Мессенджер
|
||
- `GET /api/v1/communications/chats/` - Чаты
|
||
- `GET /api/v1/communications/messages/?chat={id}` - Сообщения
|
||
- `POST /api/v1/communications/messages/` - Отправить
|
||
|
||
### Документы
|
||
- `GET /api/v1/documents/` - Список
|
||
- `POST /api/v1/documents/` - Создать
|
||
- `GET /api/v1/documents/{id}/` - Получить
|
||
|
||
### Заявки
|
||
- `GET /api/v1/requests/` - Список
|
||
- `POST /api/v1/requests/` - Создать
|
||
- `PATCH /api/v1/requests/{id}/` - Обновить
|
||
|
||
### Уведомления
|
||
- `GET /api/v1/notifications/` - Список
|
||
- `POST /api/v1/notifications/{id}/mark_as_read/` - Пометить прочитанным
|
||
|
||
## 🔐 Пример авторизованного запроса
|
||
|
||
### Postman
|
||
```
|
||
Authorization: Bearer {{access_token}}
|
||
(автоматически подставляется)
|
||
```
|
||
|
||
### REST Client
|
||
```http
|
||
GET {{baseUrl}}/api/v1/employees/
|
||
Authorization: Bearer {{accessToken}}
|
||
```
|
||
|
||
### cURL
|
||
```bash
|
||
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
||
http://localhost:8000/api/v1/employees/
|
||
```
|
||
|
||
### Python requests
|
||
```python
|
||
import requests
|
||
|
||
token = "your_token"
|
||
headers = {"Authorization": f"Bearer {token}"}
|
||
response = requests.get(
|
||
"http://localhost:8000/api/v1/employees/",
|
||
headers=headers
|
||
)
|
||
```
|
||
|
||
## ⚠️ Частые ошибки
|
||
|
||
### 401 Unauthorized
|
||
```
|
||
❌ Токен отсутствует или истек
|
||
✅ Выполните Login снова
|
||
```
|
||
|
||
### 403 Forbidden
|
||
```
|
||
❌ Нет прав доступа
|
||
✅ Проверьте роль пользователя
|
||
```
|
||
|
||
### 404 Not Found
|
||
```
|
||
❌ Неверный URL или ID
|
||
✅ Проверьте endpoint
|
||
```
|
||
|
||
### 400 Bad Request
|
||
```
|
||
❌ Ошибка в данных запроса
|
||
✅ Проверьте JSON и обязательные поля
|
||
```
|
||
|
||
## 📚 Полная документация
|
||
|
||
Детальная документация: [docs/guides/API_TESTING_GUIDE.md](docs/guides/API_TESTING_GUIDE.md)
|
||
|
||
## 🎯 Следующие шаги
|
||
|
||
1. ✅ Выберите инструмент тестирования
|
||
2. ✅ Импортируйте коллекцию/откройте файл
|
||
3. ✅ Выполните Login
|
||
4. ✅ Протестируйте endpoints
|
||
5. ✅ Изучите примеры тестов
|
||
|
||
**Вопросы?** Смотрите [API_TESTING_GUIDE.md](docs/guides/API_TESTING_GUIDE.md)
|