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

Function TestWriteHandlers

internal/relationtuple/transact_server_test.go:28–486  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

26)
27
28func TestWriteHandlers(t *testing.T) {
29 r := httprouterx.NewTestRouterAdmin(t)
30 reg := driver.NewSqliteTestRegistry(t, false)
31
32 var nspaces []*namespace.Namespace
33 addNamespace := func(t *testing.T) *namespace.Namespace {
34 n := &namespace.Namespace{
35 Name: t.Name(),
36 }
37 nspaces = append(nspaces, n)
38
39 require.NoError(t, reg.Config(t.Context()).Set(config.KeyNamespaces, nspaces))
40
41 return n
42 }
43
44 h := relationtuple.NewHandler(reg)
45 h.RegisterWriteRoutes(r)
46 h.RegisterReadRoutes(r.ToPublic())
47 ts := httptest.NewServer(r)
48 defer ts.Close()
49
50 t.Run("method=create", func(t *testing.T) {
51 doCreate := func(raw []byte) *http.Response {
52 req, err := http.NewRequest(http.MethodPut, ts.URL+relationtuple.WriteRouteBase, bytes.NewBuffer(raw))
53 require.NoError(t, err)
54 resp, err := ts.Client().Do(req)
55 require.NoError(t, err)
56
57 return resp
58 }
59
60 t.Run("case=creates tuple", func(t *testing.T) {
61 nspace := addNamespace(t)
62
63 rt := &ketoapi.RelationTuple{
64 Namespace: nspace.Name,
65 Object: "obj",
66 Relation: "rel",
67 SubjectID: new("subj"),
68 }
69 payload, err := json.Marshal(rt)
70 require.NoError(t, err)
71
72 resp := doCreate(payload)
73
74 assert.Equal(t, http.StatusCreated, resp.StatusCode)
75
76 body, err := io.ReadAll(resp.Body)
77 require.NoError(t, err)
78
79 assert.JSONEq(t, string(payload), string(body))
80
81 t.Run("check=is contained in the manager", func(t *testing.T) {
82 mapped, err := reg.Mapper().FromTuple(t.Context(), rt)
83 require.NoError(t, err)
84 // set a size > 1 just to make sure it gets all
85 actualRTs, _, err := reg.RelationTupleManager().GetRelationTuples(t.Context(), mapped[0].ToQuery(), keysetpagination.WithSize(10))

Callers

nothing calls this directly

Calls 15

RegisterWriteRoutesMethod · 0.95
RegisterReadRoutesMethod · 0.95
StringMethod · 0.95
ToURLQueryMethod · 0.95
NewSqliteTestRegistryFunction · 0.92
NewHandlerFunction · 0.92
MapAndWriteTuplesFunction · 0.92
ToPublicMethod · 0.80
NewServerMethod · 0.80
FromTupleMethod · 0.80
ToTupleMethod · 0.80
DecodeMethod · 0.80

Tested by

no test coverage detected