Documentation
¶
Overview ¶
Package narrowtest — дублёры сужателя списков для проб сервисов.
Дублёр здесь — НАСТОЯЩИЙ `listnarrow.Narrower` поверх подставной приёмной стороны, а не собственная реализация порта. Разница не в удобстве: подставной сужатель со своим телом молча принимает то, на чём настоящий отказывает, и делает невидимым именно тот дефект, ради которого его подставляют. Здесь подменяется только сосед, а все ветки — личность, посадка, аварийный режим, партии, окно вердиктов — исполняются те же, что в боевом коде.
Index ¶
- func Allowing(ids ...string) *listnarrow.Narrower
- func AllowingAll() *listnarrow.Narrower
- func Breakglass() *listnarrow.Narrower
- func Caller() context.Context
- func CallerAs(principalType, id string) context.Context
- func DenyingAll() *listnarrow.Narrower
- func Failing(err error) *listnarrow.Narrower
- func New(peer listnarrow.AuthorizeClient) *listnarrow.Narrower
- func Unwired() *listnarrow.Narrower
- type Peer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Allowing ¶
func Allowing(ids ...string) *listnarrow.Narrower
Allowing — сужатель, у которого сосед разрешает названные идентификаторы.
func AllowingAll ¶
func AllowingAll() *listnarrow.Narrower
AllowingAll — сужатель, у которого сосед разрешает всё. Нужен там, где проба утверждает НЕ видимость, а что-то другое (порядок, формат, пагинацию), и «пусто» зеленело бы по неверной причине.
func Breakglass ¶
func Breakglass() *listnarrow.Narrower
Breakglass — сужатель в аварийном режиме: пропускает страницу целиком и СЧИТАЕТ каждое срабатывание (listnarrow.Narrower.Counts).
func Caller ¶
Caller — контекст с НАЗВАННЫМ тенантным вызывающим. Нужен всюду, где проба утверждает не личность, а что-то другое: без него любой список отвечает отказом по личности, и утверждение зеленело бы по неверной причине.
func DenyingAll ¶
func DenyingAll() *listnarrow.Narrower
DenyingAll — сужатель, у которого сосед не разрешает ничего. Это ОТВЕТ МОДЕЛИ «нет», а не отсутствие модели: страница возвращается пустой, без ошибки.
func Failing ¶
func Failing(err error) *listnarrow.Narrower
Failing — сужатель, у которого сосед отказывает. Fail-closed: ошибка доходит до вызывающего, страница не отдаётся.
func New ¶
func New(peer listnarrow.AuthorizeClient) *listnarrow.Narrower
New — сужатель поверх заданного соседа.
func Unwired ¶
func Unwired() *listnarrow.Narrower
Unwired — сужатель, которому НЕ С КЕМ говорить: модель на этой посадке не провязана. Отказывает, а не пропускает.
Types ¶
type Peer ¶
type Peer struct {
// Allow — идентификаторы, которые видимы. nil при AllowAll=false → не видно ничего.
Allow map[string]bool
// AllowRel — разрешение ПО ПАРЕ (идентификатор, отношение). Нужно там, где
// предмет вопроса — распоряжение объектом, а не членство строки в странице: там
// отношения передаются явно и различать их обязательно.
AllowRel map[string]map[string]bool
// AllowAll — видно всё, что спросили.
AllowAll bool
// Err — если задана, возвращается вместо ответа (отказ соседа).
Err error
// Calls / Checks — сколько запросов и сколько вопросов задано (перепись).
Calls, Checks int
// Subject / ResourceType / Action / IDs / Relations — С ЧЕМ сосед был спрошен.
// Записываются, чтобы проба могла утверждать не только исход, но и что вопрос
// задан о СТРАНИЦЕ и тем отношением, которым гейтится чтение, — а не о
// вселенной и не ярусом.
Subject, ResourceType, Action string
IDs []string
Relations []string
// contains filtered or unexported fields
}
Peer — подставная приёмная сторона: отвечает вердиктом на каждый вопрос, в порядке вопросов (контракт `AuthorizeService.BatchCheck`).
func AllowingRelations ¶
func AllowingRelations(objectID string, relations ...string) (*listnarrow.Narrower, *Peer)
AllowingRelations — сужатель, у которого сосед разрешает названные ОТНОШЕНИЯ на названном объекте, вместе с самим соседом для утверждений о форме вопроса.
func Recording ¶
func Recording(allow ...string) (*listnarrow.Narrower, *Peer)
Recording — сужатель ВМЕСТЕ с его соседом, чтобы проба могла утверждать не только исход, но и С ЧЕМ был задан вопрос: о субъекте, о типе, о строках СТРАНИЦЫ и тем отношением, которым гейтится чтение. Без этого «страница сузилась» неотличимо от «сузилась по другому вопросу».
func (*Peer) BatchCheck ¶
BatchCheck — см. listnarrow.AuthorizeClient.
Дублёр говорит теми же типами ФУНДАМЕНТА, что и порт: подставлять сгенерированный контракт владельца ему больше не нужно, а фундаменту нельзя (приёмка K3-1 §7.2). Ответ отдаётся В ПОРЯДКЕ ВОПРОСОВ и той же длины — то есть ровно по контракту порта, а не снисходительнее его.