Help us shape the future of Go! Take the 2026 Go Developer Survey

narrowtest

package
v1.16.0 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 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