diff --git a/changelog/unreleased/fix-acitivity-folder.md b/changelog/unreleased/fix-acitivity-folder.md new file mode 100644 index 0000000000..4e2c27d01b --- /dev/null +++ b/changelog/unreleased/fix-acitivity-folder.md @@ -0,0 +1,6 @@ +Bugfix: Fixed the missing folder variable + +We fixed the missing folder variable when folder renamed. + +https://github.com/owncloud/ocis/pull/10150 +https://github.com/owncloud/ocis/issues/10148 diff --git a/services/activitylog/pkg/service/http.go b/services/activitylog/pkg/service/http.go index d3b5455b86..d01dfe8659 100644 --- a/services/activitylog/pkg/service/http.go +++ b/services/activitylog/pkg/service/http.go @@ -130,19 +130,19 @@ func (s *ActivitylogService) HandleGetItemActivities(w http.ResponseWriter, r *h message = MessageResourceUpdated } ts = utils.TSToTime(ev.Timestamp) - vars, err = s.GetVars(ctx, WithResource(ev.FileRef, true), WithUser(nil, ev.ExecutingUser, ev.ImpersonatingUser), WithSpace(toSpace(ev.FileRef))) + vars, err = s.GetVars(ctx, WithResource(ev.FileRef, false), WithUser(nil, ev.ExecutingUser, ev.ImpersonatingUser)) case events.FileTouched: message = MessageResourceCreated ts = utils.TSToTime(ev.Timestamp) - vars, err = s.GetVars(ctx, WithResource(ev.Ref, true), WithUser(ev.Executant, nil, ev.ImpersonatingUser), WithSpace(toSpace(ev.Ref))) + vars, err = s.GetVars(ctx, WithResource(ev.Ref, false), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) case events.ContainerCreated: message = MessageResourceCreated ts = utils.TSToTime(ev.Timestamp) - vars, err = s.GetVars(ctx, WithResource(ev.Ref, true), WithUser(ev.Executant, nil, ev.ImpersonatingUser), WithSpace(toSpace(ev.Ref))) + vars, err = s.GetVars(ctx, WithResource(ev.Ref, false), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) case events.ItemTrashed: message = MessageResourceTrashed ts = utils.TSToTime(ev.Timestamp) - vars, err = s.GetVars(ctx, WithTrashedResource(ev.Ref, ev.ID), WithUser(ev.Executant, nil, ev.ImpersonatingUser), WithSpace(toSpace(ev.Ref))) + vars, err = s.GetVars(ctx, WithTrashedResource(ev.Ref, ev.ID), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) case events.ItemMoved: switch isRename(ev.OldReference, ev.Ref) { case true: @@ -150,7 +150,7 @@ func (s *ActivitylogService) HandleGetItemActivities(w http.ResponseWriter, r *h vars, err = s.GetVars(ctx, WithResource(ev.Ref, false), WithOldResource(ev.OldReference), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) case false: message = MessageResourceMoved - vars, err = s.GetVars(ctx, WithResource(ev.Ref, true), WithUser(ev.Executant, nil, ev.ImpersonatingUser), WithSpace(toSpace(ev.Ref))) + vars, err = s.GetVars(ctx, WithResource(ev.Ref, false), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) } ts = utils.TSToTime(ev.Timestamp) case events.ShareCreated: diff --git a/services/activitylog/pkg/service/response.go b/services/activitylog/pkg/service/response.go index 72838bd29a..2dfdd67d32 100644 --- a/services/activitylog/pkg/service/response.go +++ b/services/activitylog/pkg/service/response.go @@ -80,6 +80,10 @@ func WithResource(ref *provider.Reference, addSpace bool) ActivityOption { vars["resource"] = Resource{ Name: filepath.Base(ref.GetPath()), } + n := getFolderName(ctx, gwc, ref) + vars["folder"] = Resource{ + Name: n, + } return err } @@ -88,16 +92,6 @@ func WithResource(ref *provider.Reference, addSpace bool) ActivityOption { Name: info.GetName(), } - parent, err := utils.GetResourceByID(ctx, info.GetParentId(), gwc) - if err != nil { - return err - } - - vars["folder"] = Resource{ - ID: info.GetParentId().GetOpaqueId(), - Name: parent.GetName(), - } - if addSpace { vars["space"] = Resource{ ID: info.GetSpace().GetId().GetOpaqueId(), @@ -105,6 +99,15 @@ func WithResource(ref *provider.Reference, addSpace bool) ActivityOption { } } + parent, err := utils.GetResourceByID(ctx, info.GetParentId(), gwc) + if err != nil { + return err + } + vars["folder"] = Resource{ + ID: info.GetParentId().GetOpaqueId(), + Name: parent.GetName(), + } + return nil } } @@ -126,6 +129,10 @@ func WithTrashedResource(ref *provider.Reference, rid *provider.ResourceId) Acti vars["resource"] = Resource{ Name: filepath.Base(ref.GetPath()), } + n := getFolderName(ctx, gwc, ref) + vars["folder"] = Resource{ + Name: n, + } resp, err := gwc.ListRecycle(ctx, &provider.ListRecycleRequest{ Ref: ref, @@ -145,6 +152,12 @@ func WithTrashedResource(ref *provider.Reference, rid *provider.ResourceId) Acti ID: storagespace.FormatResourceID(rid), Name: filepath.Base(item.GetRef().GetPath()), } + in := filepath.Base(filepath.Dir(item.GetRef().GetPath())) + if in != "." && in != "/" { + vars["folder"] = Resource{ + Name: in, + } + } return nil } @@ -231,11 +244,6 @@ func WithSharee(uid *user.UserId, gid *group.GroupId) ActivityOption { // WithSpace sets the space variable for an activity func WithSpace(spaceid *provider.StorageSpaceId) ActivityOption { return func(ctx context.Context, gwc gateway.GatewayAPIClient, vars map[string]interface{}) error { - if _, ok := vars["space"]; ok { - // do not override space if already set - return nil - } - s, err := utils.GetSpace(ctx, spaceid.GetOpaqueId(), gwc) if err != nil { vars["space"] = Resource{ @@ -310,6 +318,19 @@ func (s *ActivitylogService) GetVars(ctx context.Context, opts ...ActivityOption return vars, nil } +func getFolderName(ctx context.Context, gwc gateway.GatewayAPIClient, ref *provider.Reference) string { + n := filepath.Base(filepath.Dir(ref.GetPath())) + if n == "." || n == "/" { + s, err := utils.GetSpace(ctx, toSpace(ref).GetOpaqueId(), gwc) + if err == nil { + n = s.GetName() + } else { + n = "root" + } + } + return n +} + func mapField(val string) string { switch val { case "TYPE_PERMISSIONS", "permission": diff --git a/tests/acceptance/features/apiActivities/activities.feature b/tests/acceptance/features/apiActivities/activities.feature index 759032451c..0bce0c6767 100644 --- a/tests/acceptance/features/apiActivities/activities.feature +++ b/tests/acceptance/features/apiActivities/activities.feature @@ -39,8 +39,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource","space","user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Alice Hansen" + } + } + }, "resource": { "type": "object", "required": ["id","name"], @@ -54,19 +63,6 @@ Feature: check activities } } }, - "space": { - "type": "object", - "required": ["id","name"], - "properties": { - "id": { - "type": "string", - "pattern": "^%user_id_pattern%!%user_id_pattern%$" - }, - "name": { - "const": "Alice Hansen" - } - } - }, "user": { "type": "object", "required": ["id","displayName"], @@ -129,8 +125,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource","space","user"], + "required": ["folder","resource","user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Alice Hansen" + } + } + }, "resource": { "type": "object", "required": ["id","name"], @@ -144,19 +149,6 @@ Feature: check activities } } }, - "space": { - "type": "object", - "required": ["id","name"], - "properties": { - "id": { - "type": "string", - "pattern": "^%user_id_pattern%!%user_id_pattern%$" - }, - "name": { - "const": "Alice Hansen" - } - } - }, "user": { "type": "object", "required": ["id","displayName"], @@ -225,7 +217,7 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["resource", "folder", "user"], "properties": { "resource": { "type": "object", @@ -255,7 +247,7 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["resource", "folder", "user"], "properties": { "resource": { "type": "object", @@ -289,7 +281,7 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource","space","user"], + "required": ["resource","folder","user"], "properties": { "resource": { "type": "object", @@ -304,14 +296,10 @@ Feature: check activities } } }, - "space": { + "folder": { "type": "object", - "required": ["id","name"], + "required": ["name"], "properties": { - "id": { - "type": "string", - "pattern": "^%file_id_pattern%$" - }, "name": { "const": "Alice Hansen" } @@ -363,7 +351,7 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource","space","user"], + "required": ["resource","folder","user"], "properties": { "resource": { "type": "object", @@ -378,14 +366,10 @@ Feature: check activities } } }, - "space": { + "folder": { "type": "object", - "required": ["id","name"], + "required": ["name"], "properties": { - "id": { - "type": "string", - "pattern": "^%file_id_pattern%$" - }, "name": { "const": "Alice Hansen" } @@ -459,6 +443,43 @@ Feature: check activities "properties": { "message": { "const": "{user} added {resource} to {folder}" + }, + "variables": { + "type": "object", + "required": ["folder", "resource", "user"], + "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Alice Hansen" + } + } + }, + "resource": { + "type": "object", + "required": ["id","name"], + "properties": { + "name": { + "const": "textfile.txt" + } + } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } + } + } } } } @@ -481,8 +502,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource","space","user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "New Folder" + } + } + }, "resource": { "type": "object", "required": ["id","name"], @@ -496,19 +526,6 @@ Feature: check activities } } }, - "space": { - "type": "object", - "required": ["id","name"], - "properties": { - "id": { - "type": "string", - "pattern": "^%user_id_pattern%!%user_id_pattern%$" - }, - "name": { - "const": "Alice Hansen" - } - } - }, "user": { "type": "object", "required": ["id","displayName"], @@ -569,6 +586,43 @@ Feature: check activities "properties": { "message": { "const": "{user} added {resource} to {folder}" + }, + "variables": { + "type": "object", + "required": ["folder", "resource", "user"], + "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Alice Hansen" + } + } + }, + "resource": { + "type": "object", + "required": ["id","name"], + "properties": { + "name": { + "const": "FOLDER" + } + } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } + } + } } } } @@ -591,8 +645,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource","space","user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "New Folder" + } + } + }, "resource": { "type": "object", "required": ["id","name"], @@ -606,19 +669,6 @@ Feature: check activities } } }, - "space": { - "type": "object", - "required": ["id","name"], - "properties": { - "id": { - "type": "string", - "pattern": "^%user_id_pattern%!%user_id_pattern%$" - }, - "name": { - "const": "Alice Hansen" - } - } - }, "user": { "type": "object", "required": ["id","displayName"], @@ -920,46 +970,93 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Alice Hansen" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], + "properties": { + "id": { + "type": "string" + }, + "name": { + "const": "New Folder" + } + } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } + } + } + } + } + } + } + }, + { + "type": "object", + "required": ["id", "template", "times"], + "properties": { + "template": { + "type": "object", + "required": ["message", "variables"], + "properties": { + "message": { + "const": "{user} added {resource} to {folder}" + }, + "variables": { + "type": "object", + "required": ["resource", "folder", "user"], + "properties": { + "folder": { + "type": "object", + "required": ["name"], "properties": { "name": { "const": "New Folder" } } - } - } - } - } - } - } - }, - { - "type": "object", - "required": ["id", "template", "times"], - "properties": { - "template": { - "type": "object", - "required": ["message", "variables"], - "properties": { - "message": { - "const": "{user} added {resource} to {folder}" - }, - "variables": { - "type": "object", - "required": ["resource", "space", "user"], - "properties": { + }, "resource": { "type": "object", - "required": ["id", "name"], + "required": ["name"], "properties": { "name": { "const": "Folder" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -980,8 +1077,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "New Folder" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -990,6 +1096,19 @@ Feature: check activities "const": "Sub Folder" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -1010,8 +1129,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "New Folder" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1020,6 +1148,19 @@ Feature: check activities "const": "textfile.txt" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -1040,8 +1181,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Sub Folder" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1050,6 +1200,19 @@ Feature: check activities "const": "textfile.txt" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -1070,8 +1233,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Sub Folder" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1080,6 +1252,19 @@ Feature: check activities "const": "Folder" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -1178,8 +1363,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Sub Folder" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1188,6 +1382,19 @@ Feature: check activities "const": "renamed.txt" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -1208,8 +1415,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Sub Folder" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1218,6 +1434,19 @@ Feature: check activities "const": "Renamed Folder" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -1360,8 +1589,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Alice Hansen" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1370,38 +1608,17 @@ Feature: check activities "const": "New Folder" } } - } - } - } - } - }, - "times": { - "type": "object", - "required": ["recordedTime"] - } - } - }, - { - "type": "object", - "required": ["id", "template", "times"], - "properties": { - "template": { - "type": "object", - "required": ["message", "variables"], - "properties": { - "message": { - "const": "{user} added {resource} to {folder}" - }, - "variables": { - "type": "object", - "required": ["resource", "space", "user"], - "properties": { - "resource": { + }, + "user": { "type": "object", - "required": ["id", "name"], + "required": ["id","displayName"], "properties": { - "name": { - "const": "Sub Folder" + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" } } } @@ -1428,8 +1645,73 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "New Folder" + } + } + }, + "resource": { + "type": "object", + "required": ["id", "name"], + "properties": { + "name": { + "const": "Sub Folder" + } + } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } + } + } + } + } + }, + "times": { + "type": "object", + "required": ["recordedTime"] + } + } + }, + { + "type": "object", + "required": ["id", "template", "times"], + "properties": { + "template": { + "type": "object", + "required": ["message", "variables"], + "properties": { + "message": { + "const": "{user} added {resource} to {folder}" + }, + "variables": { + "type": "object", + "required": ["folder", "resource", "user"], + "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Sub Folder" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1438,6 +1720,19 @@ Feature: check activities "const": "textfile.txt" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -1489,8 +1784,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Alice Hansen" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1499,6 +1803,19 @@ Feature: check activities "const": "New Folder" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -1523,8 +1840,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "New Folder" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1533,6 +1859,19 @@ Feature: check activities "const": "Sub Folder" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -1584,8 +1923,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "Alice Hansen" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1594,6 +1942,19 @@ Feature: check activities "const": "New Folder" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } @@ -1618,8 +1979,17 @@ Feature: check activities }, "variables": { "type": "object", - "required": ["resource", "space", "user"], + "required": ["folder", "resource", "user"], "properties": { + "folder": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "const": "New Folder" + } + } + }, "resource": { "type": "object", "required": ["id", "name"], @@ -1628,6 +1998,19 @@ Feature: check activities "const": "Sub Folder" } } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice Hansen" + } + } } } } diff --git a/tests/acceptance/features/apiActivities/shareActivities.feature b/tests/acceptance/features/apiActivities/shareActivities.feature index 6234ea7e84..08e6df6c9c 100644 --- a/tests/acceptance/features/apiActivities/shareActivities.feature +++ b/tests/acceptance/features/apiActivities/shareActivities.feature @@ -543,8 +543,17 @@ Feature: check share activity }, "variables": { "type": "object", - "required": ["resource","space","user"], + "required": ["folder","resource","user"], "properties": { + "folder": { + "type": "object", + "required": ["id","name"], + "properties": { + "name": { + "const": "Alice Hansen" + } + } + }, "resource": { "type": "object", "required": ["id","name"], @@ -554,19 +563,6 @@ Feature: check share activity } } }, - "space": { - "type": "object", - "required": ["id","name"], - "properties": { - "id": { - "type": "string", - "pattern": "^%user_id_pattern%!%user_id_pattern%$" - }, - "name": { - "const": "Alice Hansen" - } - } - }, "user": { "type": "object", "required": ["id","displayName"], @@ -622,8 +618,17 @@ Feature: check share activity }, "variables": { "type": "object", - "required": ["resource","space","user"], + "required": ["folder","resource","user"], "properties": { + "folder": { + "type": "object", + "required": ["id","name"], + "properties": { + "name": { + "const": "FOLDER" + } + } + }, "resource": { "type": "object", "required": ["id","name"], @@ -633,19 +638,6 @@ Feature: check share activity } } }, - "space": { - "type": "object", - "required": ["id","name"], - "properties": { - "id": { - "type": "string", - "pattern": "^%file_id_pattern%$" - }, - "name": { - "const": "Alice Hansen" - } - } - }, "user": { "type": "object", "required": ["id","displayName"], @@ -682,8 +674,17 @@ Feature: check share activity }, "variables": { "type": "object", - "required": ["resource","space","user"], + "required": ["folder","resource","user"], "properties": { + "folder": { + "type": "object", + "required": ["id","name"], + "properties": { + "name": { + "const": "FOLDER" + } + } + }, "resource": { "type": "object", "required": ["id","name"], @@ -693,19 +694,6 @@ Feature: check share activity } } }, - "space": { - "type": "object", - "required": ["id","name"], - "properties": { - "id": { - "type": "string", - "pattern": "^%file_id_pattern%$" - }, - "name": { - "const": "Alice Hansen" - } - } - }, "user": { "type": "object", "required": ["id","displayName"], @@ -742,8 +730,17 @@ Feature: check share activity }, "variables": { "type": "object", - "required": ["resource","space","user"], + "required": ["folder","resource","user"], "properties": { + "folder": { + "type": "object", + "required": ["id","name"], + "properties": { + "name": { + "const": "Alice Hansen" + } + } + }, "resource": { "type": "object", "required": ["id","name"], @@ -753,19 +750,6 @@ Feature: check share activity } } }, - "space": { - "type": "object", - "required": ["id","name"], - "properties": { - "id": { - "type": "string", - "pattern": "^%file_id_pattern%$" - }, - "name": { - "const": "Alice Hansen" - } - } - }, "user": { "type": "object", "required": ["id","displayName"],