@@ -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
}
0 commit comments