- Клиент
- Регистрация, вход, выход.
- Управление задачами (CRUD).
- Управление аккаунтом (смена пароля, удаление).
- Администратор
- Клиентские функции.
- Смена роли пользователя.
- Просмотр показателей (количество пользователей, получение пользователей по страницам, количество задач, количество задач у пользователя).
- Луковая архитектура
- PostgreSQL 18
- Entity Framework Core 6
- BCrypt 4 (хэширование паролей)
- IMemoryCache (кэширование)
- JWT (аутентификация/авторизация)
- DotNetEnv (локальное получение секретов)
- xUnit и FluentAssertions (интеграционные тесты)
- Coverlet и ReportGenerator (формирование отчётов о покрытии кода)
Проект покрыт интеграционными тестами с использованием xUnit и FluentAssertions. Покрытие кода превышает 90%. Отчёты о покрытии генерируются с помощью Coverlet и ReportGenerator.
Запуск тестов:
cd .\TaskList.Tests\
dotnet test
Формирование отчёта:
cd .\TaskList.Tests\
coverlet "bin\debug\net10.0\tasklist.tests.dll" --target "dotnet" --targetargs "test --no-build" --format "opencover" --output "coverage.opencover.xml" --exclude-by-file "**/migrations/*" --exclude-by-file "**/*designer.cs" --exclude-by-file "**/obj/**" --exclude "[infrastructure]infrastructure.migrations.*" --exclude "[presentation]microsoft.aspnetcore.openapi.generated.*" --exclude "[domain]domain.exceptions.*exception"
reportgenerator -reports:coverage.opencover.xml -targetdir:coveragereport -reporttypes:Html
Отчёт доступен по пути: .\TaskList.Tests\coveragereport\index.html
Приложение использует протокол HTTP и занимает порт 5000.
Приложение использует интерфейс Swagger UI для тестирования API, который находится по адресу:
http://localhost:5000/swagger/index.html
Для запуска с помощью Docker Compose необходим исходный код приложения, так как используется многоступенчатая сборка.
Перед запуском необходимо указать переменные окружения в .env файле (необходимый файл находится в корне приложения).
В корне приложения, где хранится docker-compose.yml, выполнить команду (в зависимости от версии):
docker-compose up
или
docker compose up
Для локального запуска потребуется СУБД PostgreSQL.
Перед запуском необходимо указать переменные окружения в .env файле (в исходном коде необходимый файл хранится в папке Presentation).
Запустить Presentation.exe (в исходном коде необходимый файл хранится в папке Presentation).
- POSTGRESQL_USER – пользователь СУБД (по умолчанию dev_user). Необходимо указать существующего в СУБД пользователя, например postgres (пользователь PostgreSQL по умолчанию).
- POSTGRESQL_PASSWORD – пароль пользователя СУБД (по умолчанию dev_password).
- JWT_KEY – секретный ключ JWT, используемый для шифрования подписи токена. Минимальная длина ключа 32 символа (по умолчанию testkeytestkeytestkeytestkeytestkey).
- DEFAULT_ADMIN_PASSWORD – пароль администратора по умолчанию (по умолчанию admin).
При первом запуске приложения будет создан администратор по умолчанию с логином admin.
Все регистрирующиеся пользователи являются клиентами.
Стандартный WeatherForecast оставлен как контроллер, не требующий аутентификации.