diff --git a/lib/services/local/presence.go b/lib/services/local/presence.go index d3b6203e404e7..94e8a9cece3cb 100644 --- a/lib/services/local/presence.go +++ b/lib/services/local/presence.go @@ -1575,6 +1575,9 @@ func (s *PresenceService) listResources(ctx context.Context, req proto.ListResou case types.KindWindowsDesktopService: keyPrefix = []string{windowsDesktopServicesPrefix} unmarshalItemFunc = backendItemToWindowsDesktopService + case types.KindWindowsDesktop: + keyPrefix = []string{windowsDesktopsPrefix} + unmarshalItemFunc = backendItemToWindowsDesktop case types.KindKubeServer: keyPrefix = []string{kubeServersPrefix} unmarshalItemFunc = backendItemToKubernetesServer @@ -1925,6 +1928,17 @@ func backendItemToServer(kind string) backendItemToResourceFunc { } } +// backendItemToWindowsDesktop unmarshals `backend.Item` into a +// `types.WindowsDesktop`, returning it as a `types.ResourceWithLabels`. +func backendItemToWindowsDesktop(item backend.Item) (types.ResourceWithLabels, error) { + return services.UnmarshalWindowsDesktop( + item.Value, + services.WithResourceID(item.ID), + services.WithExpires(item.Expires), + services.WithRevision(item.Revision), + ) +} + // backendItemToWindowsDesktopService unmarshals `backend.Item` into a // `types.WindowsDesktopService`, returning it as a `types.ResourceWithLabels`. func backendItemToWindowsDesktopService(item backend.Item) (types.ResourceWithLabels, error) { diff --git a/lib/services/local/presence_test.go b/lib/services/local/presence_test.go index dbe5ed1e084d4..f262a5154d8f6 100644 --- a/lib/services/local/presence_test.go +++ b/lib/services/local/presence_test.go @@ -688,6 +688,25 @@ func TestListResources(t *testing.T) { return presence.DeleteAllWindowsDesktopServices(ctx) }, }, + "WindowsDesktop": { + resourceType: types.KindWindowsDesktop, + createResourceFunc: func(ctx context.Context, presence *PresenceService, name string, labels map[string]string) error { + desktopService := NewWindowsDesktopService(presence.Backend) + desktop, err := types.NewWindowsDesktopV3(name, labels, types.WindowsDesktopSpecV3{ + Addr: "localhost:1234", + }) + if err != nil { + return err + } + + err = desktopService.UpsertWindowsDesktop(ctx, desktop) + return err + }, + deleteAllResourcesFunc: func(ctx context.Context, presence *PresenceService) error { + desktopService := NewWindowsDesktopService(presence.Backend) + return desktopService.DeleteAllWindowsDesktops(ctx) + }, + }, } for testName, test := range tests {