Skip to content

Commit c256dad

Browse files
committed
finish tests
1 parent 278c95a commit c256dad

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

pkg/schema/type_check.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (ts *TypeSystem) getTypesForInfo(ctx context.Context, defName string, rel *
4343
if dr.GetRelation() == ellipsesRelation {
4444
out.Add(dr.GetNamespace())
4545
} else if dr.GetRelation() != "" {
46-
rest, err := ts.getTypesForRelationInternal(ctx, defName, dr.GetRelation(), seen)
46+
rest, err := ts.getTypesForRelationInternal(ctx, dr.GetNamespace(), dr.GetRelation(), seen)
4747
if err != nil {
4848
return nil, err
4949
}

pkg/schema/type_check_test.go

+58
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,64 @@ func TestTypechecking(t *testing.T) {
100100
"resource#viewer": {"user", "organization"},
101101
},
102102
},
103+
{
104+
name: "subrel",
105+
schemaText: `
106+
definition user {}
107+
108+
definition organization {
109+
relation member: user
110+
}
111+
112+
definition resource {
113+
relation viewer: organization#member
114+
}
115+
`,
116+
expected: map[string][]string{
117+
"organization#member": {"user"},
118+
"resource#viewer": {"user"},
119+
},
120+
},
121+
{
122+
name: "wildcard",
123+
schemaText: `
124+
definition user {}
125+
126+
definition organization {
127+
relation member: user:*
128+
}
129+
130+
definition resource {
131+
relation viewer: organization#member
132+
}
133+
`,
134+
expected: map[string][]string{
135+
"organization#member": {"user"},
136+
"resource#viewer": {"user"},
137+
},
138+
},
139+
{
140+
name: "banned",
141+
schemaText: `
142+
definition user {}
143+
144+
definition organization {
145+
relation member: user
146+
}
147+
148+
definition resource {
149+
relation viewer: organization#member
150+
relation banned: user
151+
permission view = viewer - banned
152+
}
153+
`,
154+
expected: map[string][]string{
155+
"organization#member": {"user"},
156+
"resource#viewer": {"user"},
157+
"resource#banned": {"user"},
158+
"resource#view": {"user"},
159+
},
160+
},
103161
}
104162
for _, tc := range tcs {
105163
t.Run(tc.name, func(t *testing.T) {

0 commit comments

Comments
 (0)