Giter Site home page Giter Site logo

rizhiy825 / webapivk Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 56 KB

Веб-приложение, разработанное для централизованного управления пользователями в организации или для обслуживания клиентов.

C# 100.00%

webapivk's Introduction

User Management API

Описание функционала

User Management API - это веб-приложение, разработанное для централизованного управления пользователями в организации или для обслуживания клиентов. Оно предоставляет набор эндпоинтов REST API, которые позволяют различным клиентским приложениям выполнять операции по созданию, чтению, обновлению и удалению (CRUD) пользователей в базе данных.

Ключевые функции:

  • Регистрация пользователей: Приложение предлагает функциональность регистрации новых пользователей. При регистрации пользователя происходит валидация данных, хеширование пароля с помощью SHA-256 и сохранение пользователя в базу данных.
  • Блокировка пользователей: Администраторы могут блокировать. Заблокированные пользователи не могут аутентифицироваться в системе и любое обращение к ней будет возвращать ошибку.
  • Просмотр пользователей: Только администатор может просматривать список всех зарегистрированных пользователей. Помимо запроса конкретного пользователя по логину, реализована пагинация и администратор может запрашивать списки пользователей. Пароли пользователей в ответе не передаются в целях безопасности.
  • Аутентификация: Приложение реализует Basic-авторизацию. Пользователи могут аутентифицироваться, предоставляя свои учетные данные (логин и пароль). При успешной аутентификации пользователи получают доступ к защищенным ресурсам.
  • Роли пользователей: Пользователи могут быть назначены в одну из двух ролей: "User" и "Admin". Пользователи с ролью "Admin" имеют расширенные привилегии и могут выполнять дополнительные операции, такие как блокировка и получение пользователей.

Используемые технологии:

  • Entity Framework Core. ORM
  • PostgreSQL. База данных
  • AutoMapper. Библиотека для проецирования объектов
  • FluentValidation. Библиотека для создания правил валидации входных данных
  • Newtonsoft.Json. Библиотека для работы с данными в формате Json

Описание тестирования

Процесс тестирования для приложения был выполнен с использованием двух основных типов тестирования: интеграционного тестирования и модульного тестирования.

  • Интеграционные тесты: Интеграционные тесты были написаны с целью проверки основного функционала API приложения, включая взаимодействие с базой данных и корректную обработку HTTP-запросов. Тестирование охватывает все основные функции API, включая регистрацию новых пользователей, блокировку пользователей и получение списка пользователей.
  • Модульные тесты: С помощью фреймворков для модульного тестирования и мокирования (например, xUnit и FakeItEasy), были написаны тесты для различных классов, таких как репозитории, сервисы и валидаторы. Эти тесты помогают гарантировать, что каждый компонент системы работает должным образом в изолированных условиях.

Используемые технологии:

  • FakeItEasy. Библиотека для создания фейковых объектов
  • FluentAssertions. Набор методов расширения для понятной и простой реализации ожиданий тестирования
  • xUnit. Библиотека для создания модульных и интеграционных тестов

Рекомендации по запуску приложения и проведения тестирования

  • Запуск WEB API прлиожения: Для успешного запуска приложения необходимо запустить сервер PostgreSQL и поменять строку подключения на актуальную в файле appsettings.json. Приложение самостоятельно создаст базу данных и заполнит её начальными данными.

Важно заметить, что приложение не реализует функционал добавления учетной записи администратора, так как при инициализации самостоятельно её добавляет. Такое поведение не позволит добавить еще одного администратора и обеспечит безопасность доступа к системе.

  • Запуск интеграционных тестов: Интеграционные тесты находятся в папке Integration. На момент запуска тестов база данных должна хранить учетную запись администратора и дефолтного пользователя (добавляются автоматически при первом запуске приложения).

Тестирование проиходит следующим образом: сначала запускается WEB API приложение, а затем последовательно запускаются тесты. То есть на момент тестирование WEB API приложение должно быть запущено.

  • Запуск модульных тестов: Интеграционные тесты находятся в папке Unit. Эти тесты не требуют подготовки и могут быть запущены в любой момент.

webapivk's People

Contributors

rizhiy825 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.