@@ -13,6 +13,7 @@ import (
13
13
"github.com/coder/coder/v2/coderd/coderdtest"
14
14
"github.com/coder/coder/v2/coderd/database"
15
15
"github.com/coder/coder/v2/coderd/database/dbfake"
16
+ "github.com/coder/coder/v2/coderd/rbac"
16
17
"github.com/coder/coder/v2/codersdk"
17
18
"github.com/coder/coder/v2/pty/ptytest"
18
19
"github.com/coder/coder/v2/testutil"
@@ -100,4 +101,47 @@ func TestList(t *testing.T) {
100
101
101
102
require .Len (t ,stderr .Bytes (),0 )
102
103
})
104
+
105
+ t .Run ("SharedWorkspaces" ,func (t * testing.T ) {
106
+ t .Parallel ()
107
+
108
+ var (
109
+ client ,db = coderdtest .NewWithDatabase (t ,& coderdtest.Options {
110
+ DeploymentValues :coderdtest .DeploymentValues (t ,func (dv * codersdk.DeploymentValues ) {
111
+ dv .Experiments = []string {string (codersdk .ExperimentWorkspaceSharing )}
112
+ }),
113
+ })
114
+ orgOwner = coderdtest .CreateFirstUser (t ,client )
115
+ memberClient ,member = coderdtest .CreateAnotherUser (t ,client ,orgOwner .OrganizationID ,rbac .ScopedRoleOrgAuditor (orgOwner .OrganizationID ))
116
+ sharedWorkspace = dbfake .WorkspaceBuild (t ,db , database.WorkspaceTable {
117
+ Name :"wibble" ,
118
+ OwnerID :orgOwner .UserID ,
119
+ OrganizationID :orgOwner .OrganizationID ,
120
+ }).Do ().Workspace
121
+ _ = dbfake .WorkspaceBuild (t ,db , database.WorkspaceTable {
122
+ Name :"wobble" ,
123
+ OwnerID :orgOwner .UserID ,
124
+ OrganizationID :orgOwner .OrganizationID ,
125
+ }).Do ().Workspace
126
+ )
127
+
128
+ ctx := testutil .Context (t ,testutil .WaitMedium )
129
+
130
+ client .UpdateWorkspaceACL (ctx ,sharedWorkspace .ID , codersdk.UpdateWorkspaceACL {
131
+ UserRoles :map [string ]codersdk.WorkspaceRole {
132
+ member .ID .String ():codersdk .WorkspaceRoleUse ,
133
+ },
134
+ })
135
+
136
+ inv ,root := clitest .New (t ,"list" ,"--shared-with-me" )
137
+ clitest .SetupConfig (t ,memberClient ,root )
138
+
139
+ out := new (bytes.Buffer )
140
+ inv .Stdout = out
141
+ err := inv .WithContext (ctx ).Run ()
142
+ require .NoError (t ,err )
143
+
144
+ require .Contains (t ,out .String (),"wibble" )
145
+ require .NotContains (t ,out .String (),"wobble" )
146
+ })
103
147
}