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

Function TestReadHandlers

internal/relationtuple/read_server_test.go:33–355  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

31)
32
33func TestReadHandlers(t *testing.T) {
34 ctx := context.Background()
35 r := httprouterx.NewTestRouterPublic(t)
36 reg := driver.NewSqliteTestRegistry(t, false)
37 h := relationtuple.NewHandler(reg)
38 h.RegisterReadRoutes(r)
39 ts := httptest.NewServer(r)
40 t.Cleanup(ts.Close)
41
42 var newNamespace func(*testing.T) *namespace.Namespace
43 {
44 nspaces := 0
45 newNamespace = func(t *testing.T) *namespace.Namespace {
46 n := &namespace.Namespace{Name: fmt.Sprintf("relation tuple read test %d", nspaces)}
47 nspaces++
48 require.NoError(t, reg.Config(ctx).Set(config.KeyNamespaces, []*namespace.Namespace{n}))
49 return n
50 }
51 }
52
53 t.Run("method=get", func(t *testing.T) {
54 t.Run("case=empty response is not nil", func(t *testing.T) {
55 nspace := newNamespace(t)
56 resp, err := ts.Client().Get(ts.URL + relationtuple.ReadRouteBase + "?" + url.Values{
57 "namespace": {nspace.Name},
58 }.Encode())
59 require.NoError(t, err)
60 require.Equal(t, http.StatusOK, resp.StatusCode)
61
62 body, err := io.ReadAll(resp.Body)
63 require.NoError(t, err)
64
65 assert.Equal(t, "[]", gjson.GetBytes(body, "relation_tuples").Raw)
66
67 var respMsg ketoapi.GetResponse
68 require.NoError(t, json.Unmarshal(body, &respMsg))
69
70 assert.Equal(t, ketoapi.GetResponse{
71 RelationTuples: []*ketoapi.RelationTuple{},
72 NextPageToken: "",
73 }, respMsg)
74 })
75
76 t.Run("case=returns tuples", func(t *testing.T) {
77 nspace := newNamespace(t)
78 tuples := []*ketoapi.RelationTuple{
79 {
80 Namespace: nspace.Name,
81 Object: "o1",
82 Relation: "r1",
83 SubjectID: new("s1"),
84 },
85 {
86 Namespace: nspace.Name,
87 Object: "o2",
88 Relation: "r2",
89 SubjectSet: &ketoapi.SubjectSet{
90 Namespace: nspace.Name,

Callers

nothing calls this directly

Calls 15

RegisterReadRoutesMethod · 0.95
ToProtoMethod · 0.95
RegisterReadGRPCMethod · 0.95
ListRelationTuplesMethod · 0.95
NewSqliteTestRegistryFunction · 0.92
NewHandlerFunction · 0.92
MapAndWriteTuplesFunction · 0.92
NewServerMethod · 0.80
DecodeMethod · 0.80
ServeMethod · 0.80
ConfigMethod · 0.65
ClientMethod · 0.65

Tested by

no test coverage detected