Files
upstream-mirror 9456a4e922
Some checks failed
CI / Run lints and checks (push) Failing after 47s
CI / Run tests (push) Failing after 1s
CI / Run race tests (push) Failing after 5s
CI / Build CLI docs (push) Has been skipped
CI / Run buf actions (push) Failing after 5s
CodeQL / Analyze (go) (push) Failing after 3s
CodeQL / Analyze (javascript) (push) Failing after 2s
Docker Image Scanners / scanners (push) Failing after 3s
Format / format (push) Failing after 3s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Draft newsletter (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
snapshot of https://github.com/ory/keto.git (master, 2026-09-16; blobs > 131072B omitted)
2026-09-16 01:08:34 +05:00

55 lines
1.1 KiB
Go

package testhelpers
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/ory/keto/internal/driver"
"github.com/ory/keto/internal/driver/config"
"github.com/ory/keto/schema"
)
type Scenario struct {
Name string
Strict bool
OrderedShardID bool
Opl string
InputTuples []string
}
func (s Scenario) WithStrict(v bool) Scenario {
s.Strict = v
return s
}
func (s Scenario) WithOrderedShardID() Scenario {
s.OrderedShardID = true
return s
}
func (s Scenario) Run(t *testing.T, f func(t *testing.T, reg driver.Registry)) {
name := s.Name
if s.Strict {
name += " (strict)"
}
t.Run(name, func(t *testing.T) {
if s.Opl != "" {
_, errs := schema.Parse(s.Opl)
require.Len(t, errs, 0)
}
opts := []driver.TestRegistryOption{
driver.WithOPL(s.Opl),
driver.WithMapperNamespace(CustomMapperNamespace),
driver.WithConfig(config.KeyFeatureFlagStrictMode, s.Strict),
}
if s.OrderedShardID {
opts = append(opts, driver.WithOrderedShardID())
}
reg := driver.NewSqliteTestRegistry(t, opts...)
MapAndInsertTuplesFromString(t, reg, s.InputTuples)
f(t, reg)
})
}