@@ -2931,84 +2931,56 @@ func TestWorkspaceFavoriteUnfavorite(t *testing.T) {
2931
2931
client ,db = coderdtest .NewWithDatabase (t ,& coderdtest.Options {
2932
2932
Auditor :auditRecorder ,
2933
2933
})
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 )
2936
2936
// 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 ()
2942
2938
)
2943
2939
2944
2940
ctx ,cancel := context .WithTimeout (context .Background (),testutil .WaitLong )
2945
2941
defer cancel ()
2946
2942
2947
2943
// Initially, workspace should not be favored for member.
2948
- workspaces ,err := memberClient .Workspaces (ctx , codersdk.WorkspaceFilter {})
2944
+ workspaces ,err := client .Workspaces (ctx , codersdk.WorkspaceFilter {})
2949
2945
require .NoError (t ,err )
2950
- require .Len (t ,workspaces .Workspaces ,2 )
2946
+ require .Len (t ,workspaces .Workspaces ,1 )
2951
2947
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 )
2954
2949
require .NoError (t ,err )
2955
2950
require .False (t ,ws .Favorite )
2956
2951
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 )
2967
2954
require .NoError (t ,err )
2968
2955
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 {})
2971
2958
require .NoError (t ,err )
2972
- require .Len (t ,workspaces .Workspaces ,2 )
2959
+ require .Len (t ,workspaces .Workspaces ,1 )
2973
2960
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 )
2976
2962
require .NoError (t ,err )
2977
2963
require .True (t ,ws .Favorite )
2978
2964
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
-
2990
2965
// When member unfavorites workspace
2991
- err = memberClient .UnfavoriteWorkspace (ctx ,wsb1 .Workspace .ID )
2966
+ err = client .UnfavoriteWorkspace (ctx ,wsb .Workspace .ID )
2992
2967
require .NoError (t ,err )
2993
2968
2994
2969
// Then it should no longer be favored
2995
- workspaces ,err = memberClient .Workspaces (ctx , codersdk.WorkspaceFilter {})
2970
+ workspaces ,err = client .Workspaces (ctx , codersdk.WorkspaceFilter {})
2996
2971
require .NoError (t ,err )
2997
- require .Len (t ,workspaces .Workspaces ,2 )
2972
+ require .Len (t ,workspaces .Workspaces ,1 )
2998
2973
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 )
3001
2975
require .NoError (t ,err )
3002
2976
require .False (t ,ws .Favorite )
3003
2977
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 ())
3014
2986
}