Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit49f4161

Browse files
committed
chore: add filter tests that hit the db
1 parent61c3aee commit49f4161

File tree

3 files changed

+208
-0
lines changed

3 files changed

+208
-0
lines changed

‎coderd/workspaces_test.go‎

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1812,6 +1812,82 @@ func TestWorkspaceFilter(t *testing.T) {
18121812
require.ElementsMatch(t,exp,workspaces,"expected workspaces returned")
18131813
})
18141814
}
1815+
1816+
t.Run("SharedWithUser",func(t*testing.T) {
1817+
t.Parallel()
1818+
1819+
dv:=coderdtest.DeploymentValues(t)
1820+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
1821+
1822+
var (
1823+
client,db=coderdtest.NewWithDatabase(t,&coderdtest.Options{
1824+
DeploymentValues:dv,
1825+
})
1826+
orgOwner=coderdtest.CreateFirstUser(t,client)
1827+
_,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
1828+
sharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
1829+
OwnerID:workspaceOwner.ID,
1830+
OrganizationID:orgOwner.OrganizationID,
1831+
}).Do().Workspace
1832+
_=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
1833+
OwnerID:workspaceOwner.ID,
1834+
OrganizationID:orgOwner.OrganizationID,
1835+
}).Do().Workspace
1836+
_,toShareWithUser=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
1837+
ctx=testutil.Context(t,testutil.WaitMedium)
1838+
)
1839+
1840+
client.UpdateWorkspaceACL(ctx,sharedWorkspace.ID, codersdk.UpdateWorkspaceACL{
1841+
UserRoles:map[string]codersdk.WorkspaceRole{
1842+
toShareWithUser.ID.String():codersdk.WorkspaceRoleUse,
1843+
},
1844+
})
1845+
1846+
workspaces,err:=client.Workspaces(ctx, codersdk.WorkspaceFilter{
1847+
Shared:true,
1848+
})
1849+
require.NoError(t,err,"fetch workspaces")
1850+
require.Equal(t,workspaces.Count,1,"expected only one workspace")
1851+
require.Equal(t,workspaces.Workspaces[0].ID,sharedWorkspace.ID)
1852+
})
1853+
1854+
t.Run("NotSharedWithUser",func(t*testing.T) {
1855+
t.Parallel()
1856+
1857+
dv:=coderdtest.DeploymentValues(t)
1858+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
1859+
1860+
var (
1861+
client,db=coderdtest.NewWithDatabase(t,&coderdtest.Options{
1862+
DeploymentValues:dv,
1863+
})
1864+
orgOwner=coderdtest.CreateFirstUser(t,client)
1865+
_,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
1866+
sharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
1867+
OwnerID:workspaceOwner.ID,
1868+
OrganizationID:orgOwner.OrganizationID,
1869+
}).Do().Workspace
1870+
notSharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
1871+
OwnerID:workspaceOwner.ID,
1872+
OrganizationID:orgOwner.OrganizationID,
1873+
}).Do().Workspace
1874+
_,toShareWithUser=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
1875+
ctx=testutil.Context(t,testutil.WaitMedium)
1876+
)
1877+
1878+
client.UpdateWorkspaceACL(ctx,sharedWorkspace.ID, codersdk.UpdateWorkspaceACL{
1879+
UserRoles:map[string]codersdk.WorkspaceRole{
1880+
toShareWithUser.ID.String():codersdk.WorkspaceRoleUse,
1881+
},
1882+
})
1883+
1884+
workspaces,err:=client.Workspaces(ctx, codersdk.WorkspaceFilter{
1885+
Shared:false,
1886+
})
1887+
require.NoError(t,err,"fetch workspaces")
1888+
require.Equal(t,workspaces.Count,1,"expected only one workspace")
1889+
require.Equal(t,workspaces.Workspaces[0].ID,notSharedWorkspace.ID)
1890+
})
18151891
}
18161892

18171893
// TestWorkspaceFilterManual runs some specific setups with basic checks.

‎codersdk/workspaces.go‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,8 @@ type WorkspaceFilter struct {
518518
Limitint`json:"limit,omitempty" typescript:"-"`
519519
// FilterQuery supports a raw filter query string
520520
FilterQuerystring`json:"q,omitempty"`
521+
// Shared is a whether the workspace is shared with any users or groups
522+
Sharedbool`json:"shared" typescript:"-"`
521523
}
522524

523525
// asRequestOption returns a function that can be used in (*Client).Request.

‎enterprise/coderd/workspaces_test.go‎

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3575,6 +3575,136 @@ func TestWorkspacesFiltering(t *testing.T) {
35753575
}
35763576
}
35773577
})
3578+
3579+
t.Run("SharedWithGroup",func(t*testing.T) {
3580+
t.Parallel()
3581+
3582+
dv:=coderdtest.DeploymentValues(t)
3583+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
3584+
3585+
var (
3586+
client,db=coderdtest.NewWithDatabase(t,&coderdtest.Options{
3587+
DeploymentValues:dv,
3588+
})
3589+
orgOwner=coderdtest.CreateFirstUser(t,client)
3590+
_,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
3591+
sharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3592+
OwnerID:workspaceOwner.ID,
3593+
OrganizationID:orgOwner.OrganizationID,
3594+
}).Do().Workspace
3595+
_=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3596+
OwnerID:workspaceOwner.ID,
3597+
OrganizationID:orgOwner.OrganizationID,
3598+
}).Do().Workspace
3599+
ctx=testutil.Context(t,testutil.WaitMedium)
3600+
)
3601+
3602+
group,err:=client.CreateGroup(ctx,orgOwner.OrganizationID, codersdk.CreateGroupRequest{
3603+
Name:"wibble",
3604+
})
3605+
require.NoError(t,err,"create group")
3606+
3607+
client.UpdateWorkspaceACL(ctx,sharedWorkspace.ID, codersdk.UpdateWorkspaceACL{
3608+
GroupRoles:map[string]codersdk.WorkspaceRole{
3609+
group.ID.String():codersdk.WorkspaceRoleUse,
3610+
},
3611+
})
3612+
3613+
workspaces,err:=client.Workspaces(ctx, codersdk.WorkspaceFilter{
3614+
Shared:true,
3615+
})
3616+
require.NoError(t,err,"fetch workspaces")
3617+
require.Equal(t,workspaces.Count,1,"expected only one workspace")
3618+
require.Equal(t,workspaces.Workspaces[0].ID,sharedWorkspace.ID)
3619+
})
3620+
3621+
t.Run("SharedWithUserAndGroup",func(t*testing.T) {
3622+
t.Parallel()
3623+
3624+
dv:=coderdtest.DeploymentValues(t)
3625+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
3626+
3627+
var (
3628+
client,db=coderdtest.NewWithDatabase(t,&coderdtest.Options{
3629+
DeploymentValues:dv,
3630+
})
3631+
orgOwner=coderdtest.CreateFirstUser(t,client)
3632+
_,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
3633+
sharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3634+
OwnerID:workspaceOwner.ID,
3635+
OrganizationID:orgOwner.OrganizationID,
3636+
}).Do().Workspace
3637+
_=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3638+
OwnerID:workspaceOwner.ID,
3639+
OrganizationID:orgOwner.OrganizationID,
3640+
}).Do().Workspace
3641+
_,toShareWithUser=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
3642+
ctx=testutil.Context(t,testutil.WaitMedium)
3643+
)
3644+
3645+
group,err:=client.CreateGroup(ctx,orgOwner.OrganizationID, codersdk.CreateGroupRequest{
3646+
Name:"wibble",
3647+
})
3648+
require.NoError(t,err,"create group")
3649+
3650+
client.UpdateWorkspaceACL(ctx,sharedWorkspace.ID, codersdk.UpdateWorkspaceACL{
3651+
UserRoles:map[string]codersdk.WorkspaceRole{
3652+
toShareWithUser.ID.String():codersdk.WorkspaceRoleUse,
3653+
},
3654+
GroupRoles:map[string]codersdk.WorkspaceRole{
3655+
group.ID.String():codersdk.WorkspaceRoleUse,
3656+
},
3657+
})
3658+
3659+
workspaces,err:=client.Workspaces(ctx, codersdk.WorkspaceFilter{
3660+
Shared:true,
3661+
})
3662+
require.NoError(t,err,"fetch workspaces")
3663+
require.Equal(t,workspaces.Count,1,"expected only one workspace")
3664+
require.Equal(t,workspaces.Workspaces[0].ID,sharedWorkspace.ID)
3665+
})
3666+
3667+
t.Run("NotSharedWithGroup",func(t*testing.T) {
3668+
t.Parallel()
3669+
3670+
dv:=coderdtest.DeploymentValues(t)
3671+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
3672+
3673+
var (
3674+
client,db=coderdtest.NewWithDatabase(t,&coderdtest.Options{
3675+
DeploymentValues:dv,
3676+
})
3677+
orgOwner=coderdtest.CreateFirstUser(t,client)
3678+
_,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
3679+
sharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3680+
OwnerID:workspaceOwner.ID,
3681+
OrganizationID:orgOwner.OrganizationID,
3682+
}).Do().Workspace
3683+
notSharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3684+
OwnerID:workspaceOwner.ID,
3685+
OrganizationID:orgOwner.OrganizationID,
3686+
}).Do().Workspace
3687+
ctx=testutil.Context(t,testutil.WaitMedium)
3688+
)
3689+
3690+
group,err:=client.CreateGroup(ctx,orgOwner.OrganizationID, codersdk.CreateGroupRequest{
3691+
Name:"wibble",
3692+
})
3693+
require.NoError(t,err,"create group")
3694+
3695+
client.UpdateWorkspaceACL(ctx,sharedWorkspace.ID, codersdk.UpdateWorkspaceACL{
3696+
GroupRoles:map[string]codersdk.WorkspaceRole{
3697+
group.ID.String():codersdk.WorkspaceRoleUse,
3698+
},
3699+
})
3700+
3701+
workspaces,err:=client.Workspaces(ctx, codersdk.WorkspaceFilter{
3702+
Shared:false,
3703+
})
3704+
require.NoError(t,err,"fetch workspaces")
3705+
require.Equal(t,workspaces.Count,1,"expected only one workspace")
3706+
require.Equal(t,workspaces.Workspaces[0].ID,notSharedWorkspace.ID)
3707+
})
35783708
}
35793709

35803710
// TestWorkspacesWithoutTemplatePerms creates a workspace for a user, then drops

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp