-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathru-RU.txt
More file actions
92 lines (47 loc) · 4.96 KB
/
ru-RU.txt
File metadata and controls
92 lines (47 loc) · 4.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Обзор системы управления доступом.
В проекте есть несколько предсозданных ролей:
Admin – полный доступ ко всему.
Moderator – может читать и обновлять большинство объектов, но не удалять всё.
User – может видеть и работать со своими объектами, ограниченный доступ к чужим.
Guest – в основном только чтение, не может ничего изменять.
Проект включает в себя собственную систему аутентификации. Пользователи с ролью Admin имеют полный доступ к системе разграничения прав доступа, которая управляет разрешениями для всех объектов бизнес-приложения.
С помощью объектов бизнес-приложения мы контролируем доступ к:
Users
Products
Stores
Orders
Access Rules
Access rules связывают роли и объекты. Для каждой роли мы определяем, что она может делать с каждым объектом:
Read / Read all
Create
Update / Update all
Delete / Delete all
Когда пользователь обращается на API с запросом:
Проверяем их роль(и)
Проверяем правила для этой роли и элемента
Если разрешено – действие проходит, иначе блокируется
Для действий на уровне объектов, полномочия с "*_all_*" (например, read_all_permission) дают доступ к любому элементу, когда обычные правила (например, read_permission) дают доступ только к элементам, где пользователь является владельцем.
Пример Mock системы
Мы предоставляем Mock-View для имитации работоспособности системы и целей тестирования:
/api/mock/users/ – возвращает таблицу пользователей
/api/mock/products/ – возвращает табицу продуктов
/api/mock/stores/ – возвращает таблицу магазинов
Эти точки доступа учитывают актуальные разрешения доступа для пользователей с помощью MockRoleBasedPermission.
Подготовка базы данных и среды для тестирования
Чтобы система управления доступом и точки доступа в рамках Mock системы работали корректно, проект предоставляет несколько способов подготовки базы данных.
Автоматическое перемещение исходных данных
Есть файл миграции: api/migrations/0004_load_initial_data.py
Эта миграция заполняет базу изначальными ролями, объектами бизнес-приложения и правилами доступа.
Применить миграции можно обычной командой: python manage.py migrate
Это гарантирует, что система готова к использованию без ручного ввода правил.
Ручная установка базы данных
Если нужен полный контроль, можно использовать testing_db_tables.py
Этот скрипт заполняет базу правил доступа вручную
Если нужно сбросить базу данных – используйте database_drop.py
Это очищает все таблицы для чистого старта
Docker-контейнер с PostgreSQL
Для тестирования предоставляется готовый файл PostgreSQL: postgresql-test-task/docker-compose.yaml
Из директории postgresql-test-task можно запустить командой: docker compose up -d
Функциональноые тестирование
Функциональные тесты создают пользователей с ролями в кастомной тестовой среде, генерируют объекты в базе данных, относящиеся к объектам бизнес-приложения, и автоматически проверяют доступность согласно правилам, определенным нашей системой разграничения прав доступа.
Для запуска тестов используйте: python manage.py test api