narrowtest

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 10, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package narrowtest — дублёры сужателя списков для проб сервисов.

Дублёр здесь — НАСТОЯЩИЙ `listnarrow.Narrower` поверх подставной приёмной стороны, а не собственная реализация порта. Разница не в удобстве: подставной сужатель со своим телом молча принимает то, на чём настоящий отказывает, и делает невидимым именно тот дефект, ради которого его подставляют. Здесь подменяется только сосед, а все ветки — личность, посадка, аварийный режим, партии, окно вердиктов — исполняются те же, что в боевом коде.

Index

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

func Caller() context.Context

Caller — контекст с НАЗВАННЫМ тенантным вызывающим. Нужен всюду, где проба утверждает не личность, а что-то другое: без него любой список отвечает отказом по личности, и утверждение зеленело бы по неверной причине.

func CallerAs

func CallerAs(principalType, id string) context.Context

CallerAs — контекст с названным вызывающим заданного типа и идентификатора.

func DenyingAll

func DenyingAll() *listnarrow.Narrower

DenyingAll — сужатель, у которого сосед не разрешает ничего. Это ОТВЕТ МОДЕЛИ «нет», а не отсутствие модели: страница возвращается пустой, без ошибки.

func Failing

func Failing(err error) *listnarrow.Narrower

Failing — сужатель, у которого сосед отказывает. Fail-closed: ошибка доходит до вызывающего, страница не отдаётся.

func New

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

func (p *Peer) BatchCheck(_ context.Context, checks []listnarrow.Check) ([]bool, error)

BatchCheck — см. listnarrow.AuthorizeClient.

Дублёр говорит теми же типами ФУНДАМЕНТА, что и порт: подставлять сгенерированный контракт владельца ему больше не нужно, а фундаменту нельзя (приёмка K3-1 §7.2). Ответ отдаётся В ПОРЯДКЕ ВОПРОСОВ и той же длины — то есть ровно по контракту порта, а не снисходительнее его.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL