90 KiB
Тестовая спецификация API
Содержание
- GET /account/get
- POST /account/create
- DELETE /account/delete
- GET /accounts
- GET /privilege/{userId}
- DELETE /account/{userId}
- POST /account/manualdone
- POST /account/leadtarget
- PUT /account/leadtarget
- DELETE /account/leadtarget/{id}
- GET /account/leadtarget/{quizID}
- POST /question/create
1. GET /account/get
1.1 Описание
Получение информации о текущем аккаунте пользователя.
1.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- Возвращает детальную информацию об аккаунте в формате JSON
- Поддерживает стандартные HTTP коды ответа: 200, 401, 404, 500
1.3 Тестовые сценарии
1.3.1 Успешное получение информации об аккаунте
Предусловия:
- Пользователь авторизован
- Аккаунт существует и активен
- JWT токен валиден
Входные данные:
- Метод: GET
- URL: /account/get
- Headers:
- Authorization: Bearer {valid_jwt_token}
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
- Тело ответа содержит объект Account со следующими полями:
- id (string)
- user_id (string)
- created_at (date-time)
- privileges (object)
Проверки:
- Все обязательные поля присутствуют в ответе
- Формат даты created_at соответствует ISO 8601
- Структура privileges соответствует схеме ShortPrivilege
- Значения полей соответствуют данным в базе
1.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
1.3.3 Проверка существования аккаунта
Сценарий 3.1: Аккаунт не найден
- Предусловие: Аккаунт удален или не существует
- Ожидаемый результат: 404 Not Found
- Проверка сообщения об ошибке
Сценарий 3.2: Аккаунт деактивирован
- Предусловие: Аккаунт помечен как deleted=true
- Ожидаемый результат: 404 Not Found
- Проверка сообщения об ошибке
1.3.4 Проверка привилегий
Сценарий 4.1: Аккаунт без привилегий
- Предусловие: Аккаунт существует, но не имеет привилегий
- Ожидаемый результат: 200 OK
- Проверка: privileges = {}
Сценарий 4.2: Аккаунт с множеством привилегий
- Предусловие: Аккаунт имеет несколько активных привилегий
- Ожидаемый результат: 200 OK
- Проверка структуры и содержимого privileges
1.3.5 Проверка производительности
Сценарий 5.1: Время ответа
- Проверка: время ответа < 500ms
- Проверка: стабильность времени ответа при повторных запросах
Сценарий 5.2: Нагрузочное тестирование
- Проверка: система выдерживает 100 последовательных запросов
- Проверка: отсутствие утечек памяти
1.3.6 Проверка безопасности
Сценарий 6.1: XSS уязвимости
- Проверка: экранирование специальных символов в ответе
- Проверка: корректные заголовки безопасности
Сценарий 6.2: CSRF защита
- Проверка: наличие и валидность CSRF токена
- Проверка: корректная обработка невалидного CSRF токена
1.3.7 Граничные случаи
Сценарий 7.1: Очень длинные значения полей
- Проверка: обработка полей с максимально допустимой длиной
- Проверка: корректное обрезание/валидация длинных значений
Сценарий 7.2: Специальные символы в данных
- Проверка: корректная обработка Unicode символов
- Проверка: обработка специальных символов в именах полей
1.3.8 Обработка ошибок
Сценарий 8.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 8.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
1.4 Особые моменты для тестирования
-
Валидация JWT токена:
- Проверка подписи токена
- Проверка срока действия
- Проверка структуры claims
-
Кэширование:
- Проверка правильности кэширования ответов
- Проверка инвалидации кэша при изменении данных
-
Логирование:
- Проверка записи всех важных событий
- Проверка корректности логов
-
Мониторинг:
- Проверка метрик производительности
- Проверка алертов при ошибках
1.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время ответа соответствует требованиям
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
2. POST /account/create
2.1 Описание
Создание нового аккаунта пользователя.
2.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- Создает новый аккаунт в системе
- Поддерживает HTTP коды ответа: 200, 401, 409, 500
2.3 Тестовые сценарии
2.3.1 Успешное создание аккаунта
Предусловия:
- Пользователь авторизован
- JWT токен валиден
- Аккаунт с таким user_id еще не существует
Входные данные:
- Метод: POST
- URL: /account/create
- Headers:
- Authorization: Bearer {valid_jwt_token}
- Content-Type: application/json
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
- Тело ответа содержит объект Account со следующими полями:
- id (string)
- user_id (string)
- created_at (date-time)
- privileges (object)
Проверки:
- Аккаунт успешно создан в базе данных
- Все обязательные поля присутствуют в ответе
- Формат даты created_at соответствует ISO 8601
- Значения полей соответствуют переданным данным
2.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
2.3.3 Проверка конфликтов
Сценарий 3.1: Создание дублирующегося аккаунта
- Предусловие: Аккаунт с таким user_id уже существует
- Ожидаемый результат: 409 Conflict
- Проверка сообщения об ошибке
Сценарий 3.2: Попытка создания аккаунта с существующим ID
- Предусловие: Передан ID существующего аккаунта
- Ожидаемый результат: 409 Conflict
- Проверка сообщения об ошибке
2.3.4 Проверка валидации данных
Сценарий 4.1: Отсутствие обязательных полей
- Входные данные: пустой JSON объект
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 4.2: Некорректный формат данных
- Входные данные: неверный формат полей
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
2.3.5 Проверка безопасности
Сценарий 5.1: SQL-инъекции
- Входные данные: SQL-инъекция в полях
- Ожидаемый результат: 400 Bad Request
- Проверка: инъекция не выполнена
Сценарий 5.2: XSS-атаки
- Входные данные: XSS-код в полях
- Ожидаемый результат: 400 Bad Request
- Проверка: XSS-код не выполнен
2.3.6 Проверка производительности
Сценарий 6.1: Время создания
- Проверка: время создания аккаунта < 1s
- Проверка: стабильность времени при повторных запросах
Сценарий 6.2: Нагрузочное тестирование
- Проверка: система выдерживает создание 100 аккаунтов подряд
- Проверка: отсутствие утечек памяти
2.3.7 Граничные случаи
Сценарий 7.1: Очень длинные значения полей
- Входные данные: поля с максимально допустимой длиной
- Ожидаемый результат: 200 OK
- Проверка: данные сохранены корректно
Сценарий 7.2: Специальные символы
- Входные данные: Unicode символы в полях
- Ожидаемый результат: 200 OK
- Проверка: данные сохранены корректно
2.3.8 Обработка ошибок
Сценарий 8.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 8.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
2.4 Особые моменты для тестирования
-
Валидация данных:
- Проверка всех обязательных полей
- Проверка форматов данных
- Проверка уникальности user_id
-
Транзакционность:
- Проверка атомарности операции создания
- Проверка отката при ошибках
-
Логирование:
- Проверка записи создания аккаунта
- Проверка аудит-логов
-
Мониторинг:
- Проверка метрик создания аккаунтов
- Проверка алертов при ошибках
2.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время создания аккаунта соответствует требованиям
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
3. DELETE /account/delete
3.1 Описание
Удаление текущего аккаунта пользователя.
3.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- Удаляет текущий аккаунт пользователя
- Поддерживает HTTP коды ответа: 200, 401, 500
3.3 Тестовые сценарии
3.3.1 Успешное удаление аккаунта
Предусловия:
- Пользователь авторизован
- JWT токен валиден
- Аккаунт существует и активен
Входные данные:
- Метод: DELETE
- URL: /account/delete
- Headers:
- Authorization: Bearer {valid_jwt_token}
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
- Тело ответа содержит объект с полем accountId (string)
Проверки:
- Аккаунт успешно удален из базы данных
- Все связанные данные аккаунта удалены или помечены как удаленные
- Поле accountId в ответе соответствует ID удаленного аккаунта
- Последующие запросы к аккаунту возвращают 404
3.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
3.3.3 Проверка состояния аккаунта
Сценарий 3.1: Удаление уже удаленного аккаунта
- Предусловие: Аккаунт уже помечен как удаленный
- Ожидаемый результат: 200 OK
- Проверка: повторное удаление не вызывает ошибок
Сценарий 3.2: Удаление несуществующего аккаунта
- Предусловие: Аккаунт не существует
- Ожидаемый результат: 200 OK
- Проверка: операция завершается успешно
3.3.4 Проверка каскадного удаления
Сценарий 4.1: Удаление связанных данных
- Проверка: все связанные квизы удалены или помечены как удаленные
- Проверка: все связанные вопросы удалены или помечены как удаленные
- Проверка: все связанные результаты удалены или помечены как удаленные
Сценарий 4.2: Сохранение статистики
- Проверка: статистические данные сохранены для аналитики
- Проверка: исторические данные доступны для отчетов
3.3.5 Проверка безопасности
Сценарий 5.1: Попытка удаления чужого аккаунта
- Предусловие: Попытка удаления аккаунта другого пользователя
- Ожидаемый результат: 401 Unauthorized
- Проверка: операция отклонена
Сценарий 5.2: Проверка CSRF защиты
- Проверка: наличие и валидность CSRF токена
- Проверка: отклонение запросов без валидного CSRF токена
3.3.6 Проверка производительности
Сценарий 6.1: Время удаления
- Проверка: время удаления аккаунта < 2s
- Проверка: стабильность времени при повторных запросах
Сценарий 6.2: Нагрузочное тестирование
- Проверка: система корректно обрабатывает множественные запросы на удаление
- Проверка: отсутствие утечек памяти при массовом удалении
3.3.7 Граничные случаи
Сценарий 7.1: Удаление аккаунта с большим количеством данных
- Предусловие: Аккаунт имеет множество связанных данных
- Ожидаемый результат: 200 OK
- Проверка: все данные успешно удалены
Сценарий 7.2: Удаление во время активных операций
- Предусловие: Активные операции с аккаунтом
- Ожидаемый результат: 200 OK
- Проверка: корректная обработка конкурентных запросов
3.3.8 Обработка ошибок
Сценарий 8.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 8.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
3.4 Особые моменты для тестирования
-
Транзакционность:
- Проверка атомарности операции удаления
- Проверка отката при частичном удалении
- Проверка целостности данных после удаления
-
Логирование:
- Проверка записи операции удаления
- Проверка аудит-логов
- Проверка логов связанных операций
-
Мониторинг:
- Проверка метрик удаления аккаунтов
- Проверка алертов при ошибках
- Проверка мониторинга связанных операций
-
Восстановление:
- Проверка возможности восстановления данных
- Проверка периода хранения удаленных данных
3.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время удаления аккаунта соответствует требованиям
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
- Каскадное удаление работает корректно
- Данные успешно удаляются или помечаются как удаленные
4. GET /accounts
4.1 Описание
Получение списка аккаунтов с поддержкой пагинации.
4.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- Поддерживает пагинацию через параметры limit и page
- Поддерживает HTTP коды ответа: 200, 400, 401, 500
4.3 Тестовые сценарии
4.3.1 Успешное получение списка аккаунтов
Предусловия:
- Пользователь авторизован
- JWT токен валиден
- В системе есть несколько аккаунтов
Входные данные:
- Метод: GET
- URL: /accounts
- Headers:
- Authorization: Bearer {valid_jwt_token}
- Content-Type: application/json
- Body:
{ "limit": 10, "page": 1 }
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
- Тело ответа содержит объект со следующими полями:
- count (integer) - общее количество аккаунтов
- items (array) - массив объектов Account
Проверки:
- Количество возвращаемых элементов не превышает limit
- Все обязательные поля присутствуют в каждом объекте Account
- Значение count соответствует общему количеству аккаунтов
- Элементы отсортированы по дате создания (новые первые)
4.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
4.3.3 Проверка пагинации
Сценарий 3.1: Корректные параметры пагинации
- Входные данные: limit=10, page=1
- Ожидаемый результат: 200 OK
- Проверка: возвращается корректное количество элементов
Сценарий 3.2: Некорректные параметры пагинации
- Входные данные: limit=0, page=0
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.3: Превышение максимального лимита
- Входные данные: limit=1000
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
4.3.4 Проверка фильтрации
Сценарий 4.1: Пустой результат
- Предусловие: Нет аккаунтов в системе
- Ожидаемый результат: 200 OK
- Проверка: count=0, items=[]
Сценарий 4.2: Последняя страница
- Входные данные: page с большим номером
- Ожидаемый результат: 200 OK
- Проверка: items=[]
4.3.5 Проверка безопасности
Сценарий 5.1: Проверка прав доступа
- Проверка: пользователь видит только разрешенные аккаунты
- Проверка: конфиденциальные данные скрыты
Сценарий 5.2: CSRF защита
- Проверка: наличие и валидность CSRF токена
- Проверка: отклонение запросов без валидного CSRF токена
4.3.6 Проверка производительности
Сценарий 6.1: Время ответа
- Проверка: время ответа < 500ms
- Проверка: стабильность времени при повторных запросах
Сценарий 6.2: Нагрузочное тестирование
- Проверка: система выдерживает 100 последовательных запросов
- Проверка: отсутствие утечек памяти
4.3.7 Граничные случаи
Сценарий 7.1: Большое количество аккаунтов
- Предусловие: В системе 1000+ аккаунтов
- Ожидаемый результат: 200 OK
- Проверка: корректная работа пагинации
Сценарий 7.2: Специальные символы в данных
- Проверка: корректная обработка Unicode символов
- Проверка: корректное отображение специальных символов
4.3.8 Обработка ошибок
Сценарий 8.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 8.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
4.4 Особые моменты для тестирования
-
Кэширование:
- Проверка правильности кэширования результатов
- Проверка инвалидации кэша при изменении данных
-
Логирование:
- Проверка записи запросов к списку аккаунтов
- Проверка аудит-логов
-
Мониторинг:
- Проверка метрик производительности
- Проверка алертов при ошибках
-
Оптимизация:
- Проверка эффективности запросов к БД
- Проверка использования индексов
4.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время ответа соответствует требованиям
- Пагинация работает корректно
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
- Кэширование работает эффективно
5. GET /privilege/{userId}
5.1 Описание
Получение списка привилегий для указанного пользователя по его ID.
5.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- Требуется передача userId в теле запроса
- Поддерживает HTTP коды ответа: 200, 400, 401, 500
5.3 Тестовые сценарии
5.3.1 Успешное получение привилегий
Предусловия:
- Пользователь авторизован
- JWT токен валиден
- Указанный пользователь существует
- У пользователя есть привилегии
Входные данные:
- Метод: GET
- URL: /privilege/{userId}
- Headers:
- Authorization: Bearer {valid_jwt_token}
- Content-Type: application/json
- Body:
{ "userId": "valid_user_id" }
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
- Тело ответа содержит массив объектов ShortPrivilege со следующими полями:
- id (string)
- privilege_id (string)
- privilege_name (string)
- amount (integer)
- created_at (date-time)
Проверки:
- Все привилегии пользователя возвращены
- Все обязательные поля присутствуют в каждом объекте
- Формат даты created_at соответствует ISO 8601
- Значения полей соответствуют данным в базе
5.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
5.3.3 Проверка входных данных
Сценарий 3.1: Отсутствие userId
- Body: пустой JSON объект
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.2: Невалидный userId
- Body: { "userId": "invalid_id" }
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.3: Несуществующий userId
- Body: { "userId": "non_existent_id" }
- Ожидаемый результат: 200 OK
- Проверка: возвращается пустой массив
5.3.4 Проверка прав доступа
Сценарий 4.1: Запрос привилегий другого пользователя
- Предусловие: Запрос привилегий пользователя с другим ID
- Ожидаемый результат: 401 Unauthorized
- Проверка: доступ запрещен
Сценарий 4.2: Запрос привилегий с недостаточными правами
- Предусловие: У запрашивающего пользователя нет прав на просмотр привилегий
- Ожидаемый результат: 401 Unauthorized
- Проверка: доступ запрещен
5.3.5 Проверка безопасности
Сценарий 5.1: SQL-инъекции
- Body: { "userId": "1' OR '1'='1" }
- Ожидаемый результат: 400 Bad Request
- Проверка: инъекция не выполнена
Сценарий 5.2: XSS-атаки
- Body: { "userId": "" }
- Ожидаемый результат: 400 Bad Request
- Проверка: XSS-код не выполнен
5.3.6 Проверка производительности
Сценарий 6.1: Время ответа
- Проверка: время ответа < 300ms
- Проверка: стабильность времени при повторных запросах
Сценарий 6.2: Нагрузочное тестирование
- Проверка: система выдерживает 100 последовательных запросов
- Проверка: отсутствие утечек памяти
5.3.7 Граничные случаи
Сценарий 7.1: Пользователь с большим количеством привилегий
- Предусловие: У пользователя 100+ привилегий
- Ожидаемый результат: 200 OK
- Проверка: все привилегии возвращены корректно
Сценарий 7.2: Пользователь без привилегий
- Предусловие: У пользователя нет привилегий
- Ожидаемый результат: 200 OK
- Проверка: возвращается пустой массив
5.3.8 Обработка ошибок
Сценарий 8.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 8.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
5.4 Особые моменты для тестирования
-
Кэширование:
- Проверка кэширования результатов запроса
- Проверка инвалидации кэша при изменении привилегий
-
Логирование:
- Проверка записи запросов к привилегиям
- Проверка аудит-логов доступа
-
Мониторинг:
- Проверка метрик производительности
- Проверка алертов при ошибках
-
Безопасность:
- Проверка контроля доступа
- Проверка валидации входных данных
5.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время ответа соответствует требованиям
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
- Кэширование работает эффективно
- Контроль доступа работает корректно
6. DELETE /account/{userId}
6.1 Описание
Удаление аккаунта пользователя по его ID.
6.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- Требуется передача userId в теле запроса
- Поддерживает HTTP коды ответа: 200, 400, 401, 500
6.3 Тестовые сценарии
6.3.1 Успешное удаление аккаунта
Предусловия:
- Пользователь авторизован
- JWT токен валиден
- У запрашивающего пользователя есть права на удаление аккаунтов
- Удаляемый аккаунт существует и активен
Входные данные:
- Метод: DELETE
- URL: /account/{userId}
- Headers:
- Authorization: Bearer {valid_jwt_token}
- Content-Type: application/json
- Body:
{ "userId": "valid_user_id" }
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
- Тело ответа содержит объект с полем userId (string)
Проверки:
- Аккаунт успешно удален из базы данных
- Все связанные данные аккаунта удалены или помечены как удаленные
- Поле userId в ответе соответствует ID удаленного аккаунта
- Последующие запросы к аккаунту возвращают 404
6.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
6.3.3 Проверка входных данных
Сценарий 3.1: Отсутствие userId
- Body: пустой JSON объект
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.2: Невалидный userId
- Body: { "userId": "invalid_id" }
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.3: Несуществующий userId
- Body: { "userId": "non_existent_id" }
- Ожидаемый результат: 200 OK
- Проверка: операция завершается успешно
6.3.4 Проверка прав доступа
Сценарий 4.1: Удаление без необходимых прав
- Предусловие: У пользователя нет прав на удаление аккаунтов
- Ожидаемый результат: 401 Unauthorized
- Проверка: доступ запрещен
Сценарий 4.2: Попытка удаления системного аккаунта
- Предусловие: Попытка удаления системного аккаунта
- Ожидаемый результат: 401 Unauthorized
- Проверка: доступ запрещен
6.3.5 Проверка каскадного удаления
Сценарий 5.1: Удаление связанных данных
- Проверка: все связанные квизы удалены или помечены как удаленные
- Проверка: все связанные вопросы удалены или помечены как удаленные
- Проверка: все связанные результаты удалены или помечены как удаленные
Сценарий 5.2: Сохранение статистики
- Проверка: статистические данные сохранены для аналитики
- Проверка: исторические данные доступны для отчетов
6.3.6 Проверка безопасности
Сценарий 6.1: SQL-инъекции
- Body: { "userId": "1' OR '1'='1" }
- Ожидаемый результат: 400 Bad Request
- Проверка: инъекция не выполнена
Сценарий 6.2: XSS-атаки
- Body: { "userId": "" }
- Ожидаемый результат: 400 Bad Request
- Проверка: XSS-код не выполнен
6.3.7 Проверка производительности
Сценарий 7.1: Время удаления
- Проверка: время удаления аккаунта < 2s
- Проверка: стабильность времени при повторных запросах
Сценарий 7.2: Нагрузочное тестирование
- Проверка: система корректно обрабатывает множественные запросы на удаление
- Проверка: отсутствие утечек памяти при массовом удалении
6.3.8 Граничные случаи
Сценарий 8.1: Удаление аккаунта с большим количеством данных
- Предусловие: Аккаунт имеет множество связанных данных
- Ожидаемый результат: 200 OK
- Проверка: все данные успешно удалены
Сценарий 8.2: Удаление во время активных операций
- Предусловие: Активные операции с аккаунтом
- Ожидаемый результат: 200 OK
- Проверка: корректная обработка конкурентных запросов
6.3.9 Обработка ошибок
Сценарий 9.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 9.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
6.4 Особые моменты для тестирования
-
Транзакционность:
- Проверка атомарности операции удаления
- Проверка отката при частичном удалении
- Проверка целостности данных после удаления
-
Логирование:
- Проверка записи операции удаления
- Проверка аудит-логов
- Проверка логов связанных операций
-
Мониторинг:
- Проверка метрик удаления аккаунтов
- Проверка алертов при ошибках
- Проверка мониторинга связанных операций
-
Восстановление:
- Проверка возможности восстановления данных
- Проверка периода хранения удаленных данных
6.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время удаления аккаунта соответствует требованиям
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
- Каскадное удаление работает корректно
- Данные успешно удаляются или помечаются как удаленные
- Контроль доступа работает корректно
7. POST /account/manualdone
7.1 Описание
Ручная пометка аккаунта как завершенного.
7.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- Требуется передача id пользователя в теле запроса
- Поддерживает HTTP коды ответа: 200, 400, 401, 404, 500
7.3 Тестовые сценарии
7.3.1 Успешная пометка аккаунта как завершенного
Предусловия:
- Пользователь авторизован
- JWT токен валиден
- У запрашивающего пользователя есть права на пометку аккаунтов
- Аккаунт существует и активен
Входные данные:
- Метод: POST
- URL: /account/manualdone
- Headers:
- Authorization: Bearer {valid_jwt_token}
- Content-Type: application/json
- Body:
{ "id": "valid_user_id" }
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
Проверки:
- Аккаунт успешно помечен как завершенный
- Статус аккаунта обновлен в базе данных
- Все связанные операции завершены
- Последующие запросы к аккаунту показывают обновленный статус
7.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
7.3.3 Проверка входных данных
Сценарий 3.1: Отсутствие id
- Body: пустой JSON объект
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.2: Невалидный id
- Body: { "id": "invalid_id" }
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.3: Несуществующий id
- Body: { "id": "non_existent_id" }
- Ожидаемый результат: 404 Not Found
- Проверка сообщения об ошибке
7.3.4 Проверка прав доступа
Сценарий 4.1: Отметка без необходимых прав
- Предусловие: У пользователя нет прав на пометку аккаунтов
- Ожидаемый результат: 401 Unauthorized
- Проверка: доступ запрещен
Сценарий 4.2: Попытка пометки системного аккаунта
- Предусловие: Попытка пометки системного аккаунта
- Ожидаемый результат: 401 Unauthorized
- Проверка: доступ запрещен
7.3.5 Проверка состояния аккаунта
Сценарий 5.1: Пометка уже завершенного аккаунта
- Предусловие: Аккаунт уже помечен как завершенный
- Ожидаемый результат: 200 OK
- Проверка: повторная пометка не вызывает ошибок
Сценарий 5.2: Пометка удаленного аккаунта
- Предусловие: Аккаунт помечен как удаленный
- Ожидаемый результат: 404 Not Found
- Проверка: операция отклонена
7.3.6 Проверка безопасности
Сценарий 6.1: SQL-инъекции
- Body: { "id": "1' OR '1'='1" }
- Ожидаемый результат: 400 Bad Request
- Проверка: инъекция не выполнена
Сценарий 6.2: XSS-атаки
- Body: { "id": "" }
- Ожидаемый результат: 400 Bad Request
- Проверка: XSS-код не выполнен
7.3.7 Проверка производительности
Сценарий 7.1: Время выполнения
- Проверка: время выполнения операции < 1s
- Проверка: стабильность времени при повторных запросах
Сценарий 7.2: Нагрузочное тестирование
- Проверка: система корректно обрабатывает множественные запросы
- Проверка: отсутствие утечек памяти
7.3.8 Граничные случаи
Сценарий 8.1: Пометка аккаунта с большим количеством данных
- Предусловие: Аккаунт имеет множество связанных данных
- Ожидаемый результат: 200 OK
- Проверка: все данные успешно обработаны
Сценарий 8.2: Пометка во время активных операций
- Предусловие: Активные операции с аккаунтом
- Ожидаемый результат: 200 OK
- Проверка: корректная обработка конкурентных запросов
7.3.9 Обработка ошибок
Сценарий 9.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 9.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
7.4 Особые моменты для тестирования
-
Транзакционность:
- Проверка атомарности операции пометки
- Проверка отката при частичном выполнении
- Проверка целостности данных после пометки
-
Логирование:
- Проверка записи операции пометки
- Проверка аудит-логов
- Проверка логов связанных операций
-
Мониторинг:
- Проверка метрик выполнения операций
- Проверка алертов при ошибках
- Проверка мониторинга связанных операций
-
Восстановление:
- Проверка возможности отмены пометки
- Проверка истории изменений статуса
7.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время выполнения операции соответствует требованиям
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
- Транзакционность работает корректно
- Статус аккаунта успешно обновляется
- Контроль доступа работает корректно
8. POST /account/leadtarget
8.1 Описание
Добавление целевого адреса для отправки клиентских запросов.
8.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- Обязательные поля в теле запроса: type, quizID, target
- Поддерживает HTTP коды ответа: 200, 208, 400, 401, 404, 500
8.3 Тестовые сценарии
8.3.1 Успешное добавление целевого адреса
Предусловия:
- Пользователь авторизован
- JWT токен валиден
- У пользователя есть права на добавление целевых адресов
Входные данные:
- Метод: POST
- URL: /account/leadtarget
- Headers:
- Authorization: Bearer {valid_jwt_token}
- Content-Type: application/json
- Body:
{ "type": "mail", "quizID": 123, "target": "example@mail.com", "name": "Example Channel" }
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
Проверки:
- Целевой адрес успешно добавлен
- Данные корректно сохранены в базе
- Все обязательные поля присутствуют
- Значения полей соответствуют переданным данным
8.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
8.3.3 Проверка входных данных
Сценарий 3.1: Отсутствие обязательных полей
- Body: { "type": "mail" }
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.2: Невалидный тип
- Body: { "type": "invalid", "quizID": 123, "target": "example@mail.com" }
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.3: Невалидный формат target
- Body: { "type": "mail", "quizID": 123, "target": "invalid_email" }
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
8.3.4 Проверка дублирования
Сценарий 4.1: Добавление существующего target
- Предусловие: Target уже существует
- Ожидаемый результат: 208 Already Reported
- Проверка сообщения об ошибке
Сценарий 4.2: Добавление с разным регистром
- Предусловие: Target существует с другим регистром
- Ожидаемый результат: 208 Already Reported
- Проверка сообщения об ошибке
8.3.5 Проверка безопасности
Сценарий 5.1: SQL-инъекции
- Body: { "type": "mail", "quizID": "1' OR '1'='1", "target": "example@mail.com" }
- Ожидаемый результат: 400 Bad Request
- Проверка: инъекция не выполнена
Сценарий 5.2: XSS-атаки
- Body: { "type": "mail", "quizID": 123, "target": "" }
- Ожидаемый результат: 400 Bad Request
- Проверка: XSS-код не выполнен
8.3.6 Проверка производительности
Сценарий 6.1: Время выполнения
- Проверка: время выполнения операции < 1s
- Проверка: стабильность времени при повторных запросах
Сценарий 6.2: Нагрузочное тестирование
- Проверка: система корректно обрабатывает множественные запросы
- Проверка: отсутствие утечек памяти
8.3.7 Граничные случаи
Сценарий 7.1: Максимальная длина полей
- Body: { "type": "mail", "quizID": 123, "target": "very_long_email@domain.com", "name": "very_long_name" }
- Ожидаемый результат: 200 OK
- Проверка: данные сохранены корректно
Сценарий 7.2: Специальные символы
- Body: { "type": "mail", "quizID": 123, "target": "special!@#$%^&*()@domain.com", "name": "Special Name!" }
- Ожидаемый результат: 200 OK
- Проверка: данные сохранены корректно
8.3.8 Обработка ошибок
Сценарий 8.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 8.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
8.4 Особые моменты для тестирования
-
Валидация данных:
- Проверка форматов email, телефона, ID канала
- Проверка уникальности target
- Проверка допустимых значений type
-
Транзакционность:
- Проверка атомарности операции добавления
- Проверка отката при ошибках
-
Логирование:
- Проверка записи операции добавления
- Проверка аудит-логов
-
Мониторинг:
- Проверка метрик добавления target
- Проверка алертов при ошибках
8.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время выполнения операции соответствует требованиям
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
- Валидация данных работает корректно
- Дублирование target обрабатывается корректно
9. PUT /account/leadtarget
9.1 Описание
Обновление существующего целевого адреса.
9.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- Обязательные поля в теле запроса: id, target
- Поддерживает HTTP коды ответа: 200, 400, 401, 404, 500
9.3 Тестовые сценарии
9.3.1 Успешное обновление целевого адреса
Предусловия:
- Пользователь авторизован
- JWT токен валиден
- У пользователя есть права на обновление целевых адресов
- Целевой адрес существует
Входные данные:
- Метод: PUT
- URL: /account/leadtarget
- Headers:
- Authorization: Bearer {valid_jwt_token}
- Content-Type: application/json
- Body:
{ "id": 123, "target": "new_target@mail.com" }
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
Проверки:
- Целевой адрес успешно обновлен
- Данные корректно сохранены в базе
- Старое значение target заменено на новое
- Остальные поля остались без изменений
9.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
9.3.3 Проверка входных данных
Сценарий 3.1: Отсутствие обязательных полей
- Body: { "id": 123 }
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.2: Невалидный id
- Body: { "id": "invalid", "target": "example@mail.com" }
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.3: Невалидный формат target
- Body: { "id": 123, "target": "invalid_email" }
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
9.3.4 Проверка существования
Сценарий 4.1: Обновление несуществующего target
- Body: { "id": 999999, "target": "example@mail.com" }
- Ожидаемый результат: 404 Not Found
- Проверка сообщения об ошибке
Сценарий 4.2: Обновление удаленного target
- Предусловие: Target помечен как удаленный
- Ожидаемый результат: 404 Not Found
- Проверка сообщения об ошибке
9.3.5 Проверка безопасности
Сценарий 5.1: SQL-инъекции
- Body: { "id": "1' OR '1'='1", "target": "example@mail.com" }
- Ожидаемый результат: 400 Bad Request
- Проверка: инъекция не выполнена
Сценарий 5.2: XSS-атаки
- Body: { "id": 123, "target": "" }
- Ожидаемый результат: 400 Bad Request
- Проверка: XSS-код не выполнен
9.3.6 Проверка производительности
Сценарий 6.1: Время выполнения
- Проверка: время выполнения операции < 1s
- Проверка: стабильность времени при повторных запросах
Сценарий 6.2: Нагрузочное тестирование
- Проверка: система корректно обрабатывает множественные запросы
- Проверка: отсутствие утечек памяти
9.3.7 Граничные случаи
Сценарий 7.1: Максимальная длина target
- Body: { "id": 123, "target": "very_long_email@very_long_domain.com" }
- Ожидаемый результат: 200 OK
- Проверка: данные сохранены корректно
Сценарий 7.2: Специальные символы
- Body: { "id": 123, "target": "special!@#$%^&*()@domain.com" }
- Ожидаемый результат: 200 OK
- Проверка: данные сохранены корректно
9.3.8 Обработка ошибок
Сценарий 8.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 8.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
9.4 Особые моменты для тестирования
-
Валидация данных:
- Проверка форматов email, телефона, ID канала
- Проверка уникальности нового target
- Проверка существования id
-
Транзакционность:
- Проверка атомарности операции обновления
- Проверка отката при ошибках
-
Логирование:
- Проверка записи операции обновления
- Проверка аудит-логов
- Проверка истории изменений
-
Мониторинг:
- Проверка метрик обновления target
- Проверка алертов при ошибках
9.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время выполнения операции соответствует требованиям
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
- Валидация данных работает корректно
- Обновление target выполняется корректно
- История изменений сохраняется
10. DELETE /account/leadtarget/{id}
10.1 Описание
Удаление целевого адреса по его ID.
10.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- ID целевого адреса передается в пути URL
- Поддерживает HTTP коды ответа: 200, 400, 401, 500
10.3 Тестовые сценарии
10.3.1 Успешное удаление целевого адреса
Предусловия:
- Пользователь авторизован
- JWT токен валиден
- У пользователя есть права на удаление целевых адресов
- Целевой адрес существует и активен
Входные данные:
- Метод: DELETE
- URL: /account/leadtarget/{valid_id}
- Headers:
- Authorization: Bearer {valid_jwt_token}
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
Проверки:
- Целевой адрес успешно удален
- Данные корректно удалены из базы
- Последующие запросы к этому ID возвращают 404
- Все связанные данные обработаны корректно
10.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
10.3.3 Проверка входных данных
Сценарий 3.1: Невалидный ID
- URL: /account/leadtarget/invalid_id
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.2: Отсутствующий ID
- URL: /account/leadtarget/
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.3: Несуществующий ID
- URL: /account/leadtarget/999999
- Ожидаемый результат: 200 OK
- Проверка: операция завершается успешно
10.3.4 Проверка прав доступа
Сценарий 4.1: Удаление без необходимых прав
- Предусловие: У пользователя нет прав на удаление целевых адресов
- Ожидаемый результат: 401 Unauthorized
- Проверка: доступ запрещен
Сценарий 4.2: Попытка удаления чужого целевого адреса
- Предусловие: Целевой адрес принадлежит другому пользователю
- Ожидаемый результат: 401 Unauthorized
- Проверка: доступ запрещен
10.3.5 Проверка состояния целевого адреса
Сценарий 5.1: Удаление уже удаленного целевого адреса
- Предусловие: Целевой адрес уже помечен как удаленный
- Ожидаемый результат: 200 OK
- Проверка: повторное удаление не вызывает ошибок
Сценарий 5.2: Удаление активного целевого адреса
- Предусловие: Целевой адрес активен и используется
- Ожидаемый результат: 200 OK
- Проверка: все связанные операции обработаны корректно
10.3.6 Проверка безопасности
Сценарий 6.1: SQL-инъекции
- URL: /account/leadtarget/1' OR '1'='1
- Ожидаемый результат: 400 Bad Request
- Проверка: инъекция не выполнена
Сценарий 6.2: XSS-атаки
- URL: /account/leadtarget/
- Ожидаемый результат: 400 Bad Request
- Проверка: XSS-код не выполнен
10.3.7 Проверка производительности
Сценарий 7.1: Время выполнения
- Проверка: время выполнения операции < 1s
- Проверка: стабильность времени при повторных запросах
Сценарий 7.2: Нагрузочное тестирование
- Проверка: система корректно обрабатывает множественные запросы на удаление
- Проверка: отсутствие утечек памяти
10.3.8 Граничные случаи
Сценарий 8.1: Удаление целевого адреса с большим количеством связанных данных
- Предусловие: Целевой адрес имеет множество связанных данных
- Ожидаемый результат: 200 OK
- Проверка: все данные успешно удалены
Сценарий 8.2: Удаление во время активных операций
- Предусловие: Активные операции с целевым адресом
- Ожидаемый результат: 200 OK
- Проверка: корректная обработка конкурентных запросов
10.3.9 Обработка ошибок
Сценарий 9.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 9.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
10.4 Особые моменты для тестирования
-
Транзакционность:
- Проверка атомарности операции удаления
- Проверка отката при частичном удалении
- Проверка целостности данных после удаления
-
Логирование:
- Проверка записи операции удаления
- Проверка аудит-логов
- Проверка логов связанных операций
-
Мониторинг:
- Проверка метрик удаления целевых адресов
- Проверка алертов при ошибках
- Проверка мониторинга связанных операций
-
Восстановление:
- Проверка возможности восстановления данных
- Проверка периода хранения удаленных данных
10.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время выполнения операции соответствует требованиям
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
- Транзакционность работает корректно
- Целевой адрес успешно удаляется
- Контроль доступа работает корректно
11. GET /account/leadtarget/{quizID}
11.1 Описание
Получение целевого адреса по ID квиза.
11.2 Базовые требования
- Требуется JWT токен авторизации (bearerAuth)
- ID квиза передается в пути URL
- Поддерживает HTTP коды ответа: 200, 400, 401, 404, 500
11.3 Тестовые сценарии
11.3.1 Успешное получение целевого адреса
Предусловия:
- Пользователь авторизован
- JWT токен валиден
- У пользователя есть права на просмотр целевых адресов
- Квиз существует и имеет связанный целевой адрес
Входные данные:
- Метод: GET
- URL: /account/leadtarget/{valid_quiz_id}
- Headers:
- Authorization: Bearer {valid_jwt_token}
Ожидаемый результат:
- HTTP Status: 200 OK
- Content-Type: application/json
- Тело ответа содержит объект LeadTarget со следующими полями:
- id (integer)
- accountID (string)
- type (string)
- target (string)
- quizID (integer)
- inviteLink (string, опционально)
- deleted (boolean)
- createdAt (date-time)
Проверки:
- Все обязательные поля присутствуют в ответе
- Формат даты createdAt соответствует ISO 8601
- Значения полей соответствуют данным в базе
- Тип целевого адреса соответствует ожидаемому
11.3.2 Проверка авторизации
Сценарий 2.1: Отсутствие токена
- Headers: без Authorization
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.2: Невалидный токен
- Headers: Authorization: Bearer invalid_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
Сценарий 2.3: Истекший токен
- Headers: Authorization: Bearer expired_token
- Ожидаемый результат: 401 Unauthorized
- Проверка сообщения об ошибке
11.3.3 Проверка входных данных
Сценарий 3.1: Невалидный quizID
- URL: /account/leadtarget/invalid_id
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.2: Отсутствующий quizID
- URL: /account/leadtarget/
- Ожидаемый результат: 400 Bad Request
- Проверка сообщения об ошибке
Сценарий 3.3: Несуществующий quizID
- URL: /account/leadtarget/999999
- Ожидаемый результат: 404 Not Found
- Проверка сообщения об ошибке
11.3.4 Проверка прав доступа
Сценарий 4.1: Просмотр без необходимых прав
- Предусловие: У пользователя нет прав на просмотр целевых адресов
- Ожидаемый результат: 401 Unauthorized
- Проверка: доступ запрещен
Сценарий 4.2: Попытка просмотра чужого целевого адреса
- Предусловие: Целевой адрес принадлежит другому пользователю
- Ожидаемый результат: 401 Unauthorized
- Проверка: доступ запрещен
11.3.5 Проверка состояния целевого адреса
Сценарий 5.1: Получение удаленного целевого адреса
- Предусловие: Целевой адрес помечен как удаленный
- Ожидаемый результат: 404 Not Found
- Проверка сообщения об ошибке
Сценарий 5.2: Получение активного целевого адреса
- Предусловие: Целевой адрес активен
- Ожидаемый результат: 200 OK
- Проверка: все данные возвращены корректно
11.3.6 Проверка безопасности
Сценарий 6.1: SQL-инъекции
- URL: /account/leadtarget/1' OR '1'='1
- Ожидаемый результат: 400 Bad Request
- Проверка: инъекция не выполнена
Сценарий 6.2: XSS-атаки
- URL: /account/leadtarget/
- Ожидаемый результат: 400 Bad Request
- Проверка: XSS-код не выполнен
11.3.7 Проверка производительности
Сценарий 7.1: Время выполнения
- Проверка: время выполнения операции < 300ms
- Проверка: стабильность времени при повторных запросах
Сценарий 7.2: Нагрузочное тестирование
- Проверка: система выдерживает 100 последовательных запросов
- Проверка: отсутствие утечек памяти
11.3.8 Граничные случаи
Сценарий 8.1: Получение целевого адреса с большим количеством данных
- Предусловие: Целевой адрес имеет множество связанных данных
- Ожидаемый результат: 200 OK
- Проверка: все данные возвращены корректно
Сценарий 8.2: Получение во время активных операций
- Предусловие: Активные операции с целевым адресом
- Ожидаемый результат: 200 OK
- Проверка: корректная обработка конкурентных запросов
11.3.9 Обработка ошибок
Сценарий 9.1: Внутренняя ошибка сервера
- Предусловие: Имитация сбоя базы данных
- Ожидаемый результат: 500 Internal Server Error
- Проверка: информативное сообщение об ошибке
Сценарий 9.2: Таймаут соединения
- Предусловие: Имитация таймаута
- Ожидаемый результат: 500 Internal Server Error
- Проверка: корректная обработка таймаута
11.4 Особые моменты для тестирования
-
Кэширование:
- Проверка правильности кэширования результатов
- Проверка инвалидации кэша при изменении данных
- Проверка TTL кэша
-
Логирование:
- Проверка записи запросов к целевым адресам
- Проверка аудит-логов
- Проверка логов доступа
-
Мониторинг:
- Проверка метрик производительности
- Проверка алертов при ошибках
- Проверка мониторинга доступа
-
Безопасность:
- Проверка контроля доступа
- Проверка валидации входных данных
- Проверка защиты от атак
11.5 Критерии приемки
- Все тестовые сценарии пройдены успешно
- Время ответа соответствует требованиям
- Обработка ошибок соответствует спецификации
- Безопасность соответствует стандартам
- Логирование и мониторинг работают корректно
- Кэширование работает эффективно
- Контроль доступа работает корректно
- Данные возвращаются в корректном формате
13. POST /question/create
Description
Creates a new question in the system. The endpoint requires authentication and accepts a JSON payload with question details.
Request
- Method: POST
- Path: /question/create
- Authentication: Required (Bearer Token)
- Content-Type: application/json
Request Body Schema
{
"quiz_id": "integer (required)",
"title": "string (required, max 512 chars)",
"description": "string (optional)",
"type": "string (required, enum)",
"required": "boolean (optional)",
"page": "integer (optional)",
"content": "string (optional, JSON)"
}
Response
- Content-Type: application/json
Success Response (200)
{
"id": "integer",
"quiz_id": "integer",
"title": "string",
"description": "string",
"type": "string",
"required": "boolean",
"deleted": "boolean",
"page": "integer",
"content": "string",
"version": "integer",
"parent_ids": ["integer"],
"created_at": "string (date-time)",
"updated_at": "string (date-time)"
}
Error Responses
- 400 Bad Request
- 401 Unauthorized
- 406 Not Acceptable
- 422 Validation Error
- 424 Failed Dependency
- 500 Internal Server Error
Test Cases
TC1: Create Basic Question
Objective: Verify that a question can be created with minimal required fields Preconditions:
- Valid authentication token
- Quiz exists in the system Test Steps:
- Send POST request with minimal required fields:
{
"quiz_id": 1,
"title": "Test Question",
"type": "text"
}
Expected Results:
- Status Code: 200
- Response contains created question with all fields
- Question ID is generated
- Created_at and updated_at timestamps are set
TC2: Create Question with All Fields
Objective: Verify that a question can be created with all possible fields Preconditions:
- Valid authentication token
- Quiz exists in the system Test Steps:
- Send POST request with all fields:
{
"quiz_id": 1,
"title": "Comprehensive Test Question",
"description": "This is a detailed question description",
"type": "variant",
"required": true,
"page": 1,
"content": "{\"options\": [\"Option 1\", \"Option 2\"]}"
}
Expected Results:
- Status Code: 200
- Response contains all provided fields
- Question is properly created with all attributes
TC3: Create Question with Different Types
Objective: Verify that questions can be created with all supported types Preconditions:
- Valid authentication token
- Quiz exists in the system Test Steps:
- Create questions with each type:
- text
- variant
- images
- select
- varimg
- emoji
- date
- number
- page
- rating
- result
- file Expected Results:
- Status Code: 200 for each type
- Questions are created successfully
- Type-specific content is properly stored
TC4: Invalid Quiz ID
Objective: Verify error handling for non-existent quiz ID Preconditions:
- Valid authentication token Test Steps:
- Send POST request with invalid quiz_id:
{
"quiz_id": 999999,
"title": "Test Question",
"type": "text"
}
Expected Results:
- Status Code: 400 or 424
- Error message indicates invalid quiz ID
TC5: Missing Required Fields
Objective: Verify validation of required fields Preconditions:
- Valid authentication token Test Steps:
- Send POST request without quiz_id
- Send POST request without title
- Send POST request without type Expected Results:
- Status Code: 400
- Error message indicates missing required fields
TC6: Invalid Question Type
Objective: Verify validation of question type Preconditions:
- Valid authentication token
- Quiz exists in the system Test Steps:
- Send POST request with invalid type:
{
"quiz_id": 1,
"title": "Test Question",
"type": "invalid_type"
}
Expected Results:
- Status Code: 400 or 422
- Error message indicates invalid question type
TC7: Title Length Validation
Objective: Verify title length constraints Preconditions:
- Valid authentication token
- Quiz exists in the system Test Steps:
- Send POST request with title exceeding 512 characters
- Send POST request with empty title Expected Results:
- Status Code: 400 or 422
- Error message indicates title length violation
TC8: Invalid Content Format
Objective: Verify content JSON format validation Preconditions:
- Valid authentication token
- Quiz exists in the system Test Steps:
- Send POST request with invalid JSON in content field
- Send POST request with content not matching type requirements Expected Results:
- Status Code: 400 or 422
- Error message indicates invalid content format
TC9: Unauthorized Access
Objective: Verify authentication requirement Preconditions: None Test Steps:
- Send POST request without authentication token Expected Results:
- Status Code: 401
- Error message indicates authentication required
TC10: Rate Limiting
Objective: Verify rate limiting behavior Preconditions:
- Valid authentication token
- Quiz exists in the system Test Steps:
- Send multiple POST requests in quick succession Expected Results:
- Status Code: 429 (if rate limited)
- Error message indicates rate limit exceeded
Special Testing Considerations
Content Validation
- Verify that content JSON matches the expected format for each question type
- Test with various content structures for each type
- Validate that content is properly stored and can be retrieved
Type-Specific Requirements
- Each question type may have specific content requirements
- Test creation with valid and invalid content for each type
- Verify that type-specific validation rules are enforced
Quiz Relationship
- Verify that questions are properly associated with the quiz
- Test creation of questions for different quizzes
- Verify that quiz_id references are properly validated
Version Control
- Check if version tracking is implemented
- Verify that new questions start with appropriate version numbers
- Test version incrementing if applicable
Performance
- Test creation of multiple questions in sequence
- Monitor response times for different question types
- Verify system behavior under load
Security
- Verify that questions can only be created by authorized users
- Test access control for different user roles
- Verify that sensitive data is properly handled
Data Integrity
- Verify that all fields are properly stored
- Test creation with special characters in text fields
- Verify that timestamps are properly set
- Check that required fields are properly enforced