MCPcopy
hub / github.com/ory/keto / ManagerTest

Function ManagerTest

internal/relationtuple/manager_requirements.go:21–538  ·  view source on GitHub ↗
(t *testing.T, m Manager)

Source from the content-addressed store, hash-verified

19)
20
21func ManagerTest(t *testing.T, m Manager) {
22 t.Run("method=Write", func(t *testing.T) {
23 t.Run("case=success", func(t *testing.T) {
24 nspace := strconv.Itoa(rand.Int()) // nolint
25
26 tuples := []*RelationTuple{
27 {
28 Namespace: nspace,
29 Object: uuid.Must(uuid.NewV4()),
30 Relation: "rel",
31 Subject: &SubjectID{ID: uuid.Must(uuid.NewV4())},
32 },
33 {
34 Namespace: nspace,
35 Object: uuid.Must(uuid.NewV4()),
36 Relation: "rel",
37 Subject: &SubjectSet{
38 Namespace: nspace,
39 Object: uuid.Must(uuid.NewV4()),
40 Relation: "sub rel",
41 },
42 },
43 }
44
45 require.NoError(t, m.WriteRelationTuples(t.Context(), tuples...))
46
47 resp, nextPage, err := m.GetRelationTuples(t.Context(), &RelationQuery{
48 Namespace: new(nspace),
49 })
50 require.NoError(t, err)
51 assert.True(t, nextPage.IsLast())
52 assert.ElementsMatch(t, tuples, resp)
53 })
54 })
55
56 t.Run("method=Get", func(t *testing.T) {
57 t.Run("case=queries", func(t *testing.T) {
58 nspace := strconv.Itoa(rand.Int()) // nolint
59
60 tuples := make([]*RelationTuple, 10)
61 ids := x.UUIDs(len(tuples))
62
63 for i := range tuples {
64 tuples[i] = &RelationTuple{
65 Namespace: nspace,
66 Object: ids[i%2],
67 Relation: fmt.Sprintf("r %d", i%4),
68 Subject: &SubjectID{ID: ids[i]},
69 }
70 }
71
72 require.NoError(t, m.WriteRelationTuples(t.Context(), tuples...))
73
74 for i, tc := range []struct {
75 query *RelationQuery
76 expected []*RelationTuple
77 }{
78 {

Callers 1

TestPersisterFunction · 0.92

Calls 9

IsLastMethod · 0.95
ToOptionsMethod · 0.95
UUIDsFunction · 0.92
WriteRelationTuplesMethod · 0.65
GetRelationTuplesMethod · 0.65
LenMethod · 0.65
DeleteRelationTuplesMethod · 0.65
NameMethod · 0.45

Tested by 1

TestPersisterFunction · 0.74