Skip to content

Commit d998bc6

Browse files
committed
reduce scope of TestWorkspaceFavoriteUnfavorite to not include sorting order
1 parent fe72ba9 commit d998bc6

File tree

2 files changed

+26
-54
lines changed

2 files changed

+26
-54
lines changed

coderd/workspaces_test.go

+24-52
Original file line numberDiff line numberDiff line change
@@ -2931,84 +2931,56 @@ func TestWorkspaceFavoriteUnfavorite(t *testing.T) {
29312931
client, db = coderdtest.NewWithDatabase(t, &coderdtest.Options{
29322932
Auditor: auditRecorder,
29332933
})
2934-
owner = coderdtest.CreateFirstUser(t, client)
2935-
memberClient, member = coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
2934+
owner = coderdtest.CreateFirstUser(t, client)
2935+
memberClient, _ = coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
29362936
// This will be our 'favorite' workspace
2937-
wsb1 = dbfake.WorkspaceBuild(t, db, database.Workspace{OwnerID: member.ID, OrganizationID: owner.OrganizationID}).Do()
2938-
// Another workspace for member, but not their favorite.
2939-
_ = dbfake.WorkspaceBuild(t, db, database.Workspace{OwnerID: member.ID, OrganizationID: owner.OrganizationID}).Do()
2940-
// A workspace for another user.
2941-
_ = dbfake.WorkspaceBuild(t, db, database.Workspace{OwnerID: owner.UserID, OrganizationID: owner.OrganizationID}).Do()
2937+
wsb = dbfake.WorkspaceBuild(t, db, database.Workspace{OwnerID: owner.UserID, OrganizationID: owner.OrganizationID}).Do()
29422938
)
29432939

29442940
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
29452941
defer cancel()
29462942

29472943
// Initially, workspace should not be favored for member.
2948-
workspaces, err := memberClient.Workspaces(ctx, codersdk.WorkspaceFilter{})
2944+
workspaces, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{})
29492945
require.NoError(t, err)
2950-
require.Len(t, workspaces.Workspaces, 2)
2946+
require.Len(t, workspaces.Workspaces, 1)
29512947
require.False(t, workspaces.Workspaces[0].Favorite, "no favorites yet")
2952-
require.False(t, workspaces.Workspaces[1].Favorite, "no favorites yet")
2953-
ws, err := memberClient.Workspace(ctx, wsb1.Workspace.ID)
2948+
ws, err := client.Workspace(ctx, wsb.Workspace.ID)
29542949
require.NoError(t, err)
29552950
require.False(t, ws.Favorite)
29562951

2957-
// Also not for owner.
2958-
workspaces, err = client.Workspaces(ctx, codersdk.WorkspaceFilter{})
2959-
require.NoError(t, err)
2960-
require.Len(t, workspaces.Workspaces, 3)
2961-
require.False(t, workspaces.Workspaces[0].Favorite, "this user is impartial and has no favorites")
2962-
require.False(t, workspaces.Workspaces[1].Favorite, "this user is impartial and has no favorites")
2963-
require.False(t, workspaces.Workspaces[2].Favorite, "this user is impartial and has no favorites")
2964-
2965-
// When member favorites workspace
2966-
err = memberClient.FavoriteWorkspace(ctx, wsb1.Workspace.ID)
2952+
// When user favorites workspace
2953+
err = client.FavoriteWorkspace(ctx, wsb.Workspace.ID)
29672954
require.NoError(t, err)
29682955

2969-
// Then it should be favored for them and show up first.
2970-
workspaces, err = memberClient.Workspaces(ctx, codersdk.WorkspaceFilter{})
2956+
// Then it should be favored for them.
2957+
workspaces, err = client.Workspaces(ctx, codersdk.WorkspaceFilter{})
29712958
require.NoError(t, err)
2972-
require.Len(t, workspaces.Workspaces, 2)
2959+
require.Len(t, workspaces.Workspaces, 1)
29732960
require.True(t, workspaces.Workspaces[0].Favorite, "favorites should come first")
2974-
require.False(t, workspaces.Workspaces[1].Favorite, "favorites should come first")
2975-
ws, err = memberClient.Workspace(ctx, wsb1.Workspace.ID)
2961+
ws, err = client.Workspace(ctx, wsb.Workspace.ID)
29762962
require.NoError(t, err)
29772963
require.True(t, ws.Favorite)
29782964

2979-
// But not for someone else
2980-
workspaces, err = client.Workspaces(ctx, codersdk.WorkspaceFilter{})
2981-
require.NoError(t, err)
2982-
require.Len(t, workspaces.Workspaces, 3)
2983-
require.False(t, workspaces.Workspaces[0].Favorite, "this user is impartial and has no favorites")
2984-
require.False(t, workspaces.Workspaces[1].Favorite, "this user is impartial and has no favorites")
2985-
require.False(t, workspaces.Workspaces[2].Favorite, "this user is impartial and has no favorites")
2986-
ws, err = client.Workspace(ctx, wsb1.Workspace.ID)
2987-
require.NoError(t, err)
2988-
require.False(t, ws.Favorite)
2989-
29902965
// When member unfavorites workspace
2991-
err = memberClient.UnfavoriteWorkspace(ctx, wsb1.Workspace.ID)
2966+
err = client.UnfavoriteWorkspace(ctx, wsb.Workspace.ID)
29922967
require.NoError(t, err)
29932968

29942969
// Then it should no longer be favored
2995-
workspaces, err = memberClient.Workspaces(ctx, codersdk.WorkspaceFilter{})
2970+
workspaces, err = client.Workspaces(ctx, codersdk.WorkspaceFilter{})
29962971
require.NoError(t, err)
2997-
require.Len(t, workspaces.Workspaces, 2)
2972+
require.Len(t, workspaces.Workspaces, 1)
29982973
require.False(t, workspaces.Workspaces[0].Favorite, "no longer favorite")
2999-
require.False(t, workspaces.Workspaces[1].Favorite, "no longer favorite")
3000-
ws, err = memberClient.Workspace(ctx, wsb1.Workspace.ID)
2974+
ws, err = client.Workspace(ctx, wsb.Workspace.ID)
30012975
require.NoError(t, err)
30022976
require.False(t, ws.Favorite)
30032977

3004-
// Assert invariant: workspace should remain unfavorited for a different user
3005-
workspaces, err = client.Workspaces(ctx, codersdk.WorkspaceFilter{})
3006-
require.NoError(t, err)
3007-
require.Len(t, workspaces.Workspaces, 3)
3008-
require.False(t, workspaces.Workspaces[0].Favorite, "this user is impartial and has no favorites")
3009-
require.False(t, workspaces.Workspaces[1].Favorite, "this user is impartial and has no favorites")
3010-
require.False(t, workspaces.Workspaces[2].Favorite, "this user is impartial and has no favorites")
3011-
ws, err = client.Workspace(ctx, wsb1.Workspace.ID)
3012-
require.NoError(t, err)
3013-
require.False(t, ws.Favorite)
2978+
// Users without write access to the workspace should not be able to perform the above.
2979+
err = memberClient.FavoriteWorkspace(ctx, wsb.Workspace.ID)
2980+
var sdkErr *codersdk.Error
2981+
require.ErrorAs(t, err, &sdkErr)
2982+
require.Equal(t, http.StatusNotFound, sdkErr.StatusCode())
2983+
err = memberClient.UnfavoriteWorkspace(ctx, wsb.Workspace.ID)
2984+
require.ErrorAs(t, err, &sdkErr)
2985+
require.Equal(t, http.StatusNotFound, sdkErr.StatusCode())
30142986
}

codersdk/workspaces.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ func (c *Client) FavoriteWorkspace(ctx context.Context, workspaceID uuid.UUID) e
479479
}
480480
defer res.Body.Close()
481481
if res.StatusCode != http.StatusNoContent {
482-
return err
482+
return ReadBodyAsError(res)
483483
}
484484
return nil
485485
}
@@ -491,7 +491,7 @@ func (c *Client) UnfavoriteWorkspace(ctx context.Context, workspaceID uuid.UUID)
491491
}
492492
defer res.Body.Close()
493493
if res.StatusCode != http.StatusNoContent {
494-
return err
494+
return ReadBodyAsError(res)
495495
}
496496
return nil
497497
}

0 commit comments

Comments
 (0)