@@ -2967,56 +2967,64 @@ func TestWorkspaceFavoriteUnfavorite(t *testing.T) {
2967
2967
client , db = coderdtest .NewWithDatabase (t , & coderdtest.Options {
2968
2968
Auditor : auditRecorder ,
2969
2969
})
2970
- owner = coderdtest .CreateFirstUser (t , client )
2971
- memberClient , _ = coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
2970
+ owner = coderdtest .CreateFirstUser (t , client )
2971
+ memberClient , member = coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
2972
2972
// This will be our 'favorite' workspace
2973
- wsb = dbfake .WorkspaceBuild (t , db , database.Workspace {OwnerID : owner .UserID , OrganizationID : owner .OrganizationID }).Do ()
2973
+ wsb1 = dbfake .WorkspaceBuild (t , db , database.Workspace {OwnerID : member .ID , OrganizationID : owner .OrganizationID }).Do ()
2974
+ wsb2 = dbfake .WorkspaceBuild (t , db , database.Workspace {OwnerID : owner .UserID , OrganizationID : owner .OrganizationID }).Do ()
2974
2975
)
2975
2976
2976
2977
ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
2977
2978
defer cancel ()
2978
2979
2979
2980
// Initially, workspace should not be favored for member.
2980
- workspaces , err := client .Workspaces (ctx , codersdk.WorkspaceFilter {})
2981
- require .NoError (t , err )
2982
- require .Len (t , workspaces .Workspaces , 1 )
2983
- require .False (t , workspaces .Workspaces [0 ].Favorite , "no favorites yet" )
2984
- ws , err := client .Workspace (ctx , wsb .Workspace .ID )
2981
+ ws , err := memberClient .Workspace (ctx , wsb1 .Workspace .ID )
2985
2982
require .NoError (t , err )
2986
2983
require .False (t , ws .Favorite )
2987
2984
2988
2985
// When user favorites workspace
2989
- err = client .FavoriteWorkspace (ctx , wsb .Workspace .ID )
2986
+ err = memberClient .FavoriteWorkspace (ctx , wsb1 .Workspace .ID )
2990
2987
require .NoError (t , err )
2991
2988
2992
2989
// Then it should be favored for them.
2993
- workspaces , err = client .Workspaces (ctx , codersdk.WorkspaceFilter {})
2994
- require .NoError (t , err )
2995
- require .Len (t , workspaces .Workspaces , 1 )
2996
- require .True (t , workspaces .Workspaces [0 ].Favorite , "favorites should come first" )
2997
- ws , err = client .Workspace (ctx , wsb .Workspace .ID )
2990
+ ws , err = memberClient .Workspace (ctx , wsb1 .Workspace .ID )
2998
2991
require .NoError (t , err )
2999
2992
require .True (t , ws .Favorite )
3000
2993
3001
2994
// When member unfavorites workspace
3002
- err = client .UnfavoriteWorkspace (ctx , wsb .Workspace .ID )
2995
+ err = memberClient .UnfavoriteWorkspace (ctx , wsb1 .Workspace .ID )
3003
2996
require .NoError (t , err )
3004
2997
3005
2998
// Then it should no longer be favored
3006
- workspaces , err = client . Workspaces (ctx , codersdk. WorkspaceFilter {} )
2999
+ ws , err = memberClient . Workspace (ctx , wsb1 . Workspace . ID )
3007
3000
require .NoError (t , err )
3008
- require .Len (t , workspaces .Workspaces , 1 )
3009
- require .False (t , workspaces .Workspaces [0 ].Favorite , "no longer favorite" )
3010
- ws , err = client .Workspace (ctx , wsb .Workspace .ID )
3011
- require .NoError (t , err )
3012
- require .False (t , ws .Favorite )
3001
+ require .False (t , ws .Favorite , "no longer favorite" )
3013
3002
3014
3003
// Users without write access to the workspace should not be able to perform the above.
3015
- err = memberClient .FavoriteWorkspace (ctx , wsb .Workspace .ID )
3004
+ err = memberClient .FavoriteWorkspace (ctx , wsb2 .Workspace .ID )
3016
3005
var sdkErr * codersdk.Error
3017
3006
require .ErrorAs (t , err , & sdkErr )
3018
3007
require .Equal (t , http .StatusNotFound , sdkErr .StatusCode ())
3019
- err = memberClient .UnfavoriteWorkspace (ctx , wsb .Workspace .ID )
3008
+ err = memberClient .UnfavoriteWorkspace (ctx , wsb2 .Workspace .ID )
3020
3009
require .ErrorAs (t , err , & sdkErr )
3021
3010
require .Equal (t , http .StatusNotFound , sdkErr .StatusCode ())
3011
+
3012
+ // Owners should be able to favorite/unfavorite any workspace.
3013
+ err = client .FavoriteWorkspace (ctx , wsb1 .Workspace .ID )
3014
+ require .NoError (t , err )
3015
+ ws , err = client .Workspace (ctx , wsb1 .Workspace .ID )
3016
+ require .NoError (t , err )
3017
+ require .False (t , ws .Favorite , "not owner's favorite" )
3018
+ ws , err = memberClient .Workspace (ctx , wsb1 .Workspace .ID )
3019
+ require .NoError (t , err )
3020
+ require .True (t , ws .Favorite )
3021
+
3022
+ err = client .UnfavoriteWorkspace (ctx , wsb1 .Workspace .ID )
3023
+ require .NoError (t , err )
3024
+ ws , err = client .Workspace (ctx , wsb1 .Workspace .ID )
3025
+ require .NoError (t , err )
3026
+ require .False (t , ws .Favorite )
3027
+ ws , err = memberClient .Workspace (ctx , wsb1 .Workspace .ID )
3028
+ require .NoError (t , err )
3029
+ require .False (t , ws .Favorite )
3022
3030
}
0 commit comments