From d70bd7f34ec31b7a0896c63f9976f4175eefd3b2 Mon Sep 17 00:00:00 2001 From: Zac Bergquist Date: Fri, 21 Feb 2025 14:07:59 -0700 Subject: [PATCH] Add more tests --- lib/services/local/desktops.go | 2 +- lib/services/local/desktops_test.go | 52 +++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/lib/services/local/desktops.go b/lib/services/local/desktops.go index 8ca840424bcd4..21b8efa219691 100644 --- a/lib/services/local/desktops.go +++ b/lib/services/local/desktops.go @@ -39,7 +39,7 @@ func NewWindowsDesktopService(backend backend.Backend) *WindowsDesktopService { } func (s *WindowsDesktopService) getWindowsDesktop(ctx context.Context, name, hostID string) (types.WindowsDesktop, error) { - key := backend.ExactKey(windowsDesktopsPrefix, hostID, name) + key := backend.NewKey(windowsDesktopsPrefix, hostID, name) item, err := s.Get(ctx, key) if err != nil { return nil, trace.Wrap(err) diff --git a/lib/services/local/desktops_test.go b/lib/services/local/desktops_test.go index 395a5a3956f64..c2456769a4946 100644 --- a/lib/services/local/desktops_test.go +++ b/lib/services/local/desktops_test.go @@ -30,8 +30,60 @@ import ( "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/lib/backend" "github.com/gravitational/teleport/lib/backend/memory" + "github.com/gravitational/trace" ) +func TestGetWindowsDesktops(t *testing.T) { + t.Parallel() + + ctx := context.Background() + clock := clockwork.NewFakeClock() + + bk, err := memory.New(memory.Config{ + Context: ctx, + Clock: clock, + }) + require.NoError(t, err) + + service := NewWindowsDesktopService(bk) + + d1, err := types.NewWindowsDesktopV3("apple", nil, types.WindowsDesktopSpecV3{Addr: "_", HostID: "test-host-id-1"}) + require.NoError(t, err) + require.NoError(t, service.CreateWindowsDesktop(ctx, d1)) + + d2, err := types.NewWindowsDesktopV3("apple", nil, types.WindowsDesktopSpecV3{Addr: "_", HostID: "test-host-id-2"}) + require.NoError(t, err) + require.NoError(t, service.CreateWindowsDesktop(ctx, d2)) + + d3, err := types.NewWindowsDesktopV3("carrot", nil, types.WindowsDesktopSpecV3{Addr: "_", HostID: "test-host-id-2"}) + require.NoError(t, err) + require.NoError(t, service.CreateWindowsDesktop(ctx, d3)) + + // search by name and host ID + result, err := service.GetWindowsDesktops(ctx, types.WindowsDesktopFilter{Name: "apple", HostID: "test-host-id-2"}) + require.NoError(t, err) + require.Len(t, result, 1) + require.Equal(t, d1.GetName(), result[0].GetName()) + + // search by host ID + result, err = service.GetWindowsDesktops(ctx, types.WindowsDesktopFilter{HostID: "test-host-id-2"}) + require.NoError(t, err) + require.Len(t, result, 2) + require.Equal(t, d2.GetName(), result[0].GetName()) + require.Equal(t, d3.GetName(), result[1].GetName()) + + // no filter + result, err = service.GetWindowsDesktops(ctx, types.WindowsDesktopFilter{}) + require.NoError(t, err) + require.Len(t, result, 3) + + // non-matching filter + result, err = service.GetWindowsDesktops(ctx, types.WindowsDesktopFilter{Name: "foo", HostID: "bar"}) + require.Error(t, err) + require.True(t, trace.IsNotFound(err)) + require.Empty(t, result) +} + func TestListWindowsDesktops(t *testing.T) { t.Parallel()