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

Commit8c12d81

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

File tree

3 files changed

+226
-0
lines changed

3 files changed

+226
-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: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3575,6 +3575,154 @@ 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,orgOwner=coderdenttest.NewWithDatabase(t,&coderdenttest.Options{
3587+
Options:&coderdtest.Options{
3588+
DeploymentValues:dv,
3589+
},
3590+
LicenseOptions:&coderdenttest.LicenseOptions{
3591+
Features: license.Features{
3592+
codersdk.FeatureTemplateRBAC:1,
3593+
},
3594+
},
3595+
})
3596+
_,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
3597+
sharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3598+
OwnerID:workspaceOwner.ID,
3599+
OrganizationID:orgOwner.OrganizationID,
3600+
}).Do().Workspace
3601+
_=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3602+
OwnerID:workspaceOwner.ID,
3603+
OrganizationID:orgOwner.OrganizationID,
3604+
}).Do().Workspace
3605+
ctx=testutil.Context(t,testutil.WaitMedium)
3606+
)
3607+
3608+
group,err:=client.CreateGroup(ctx,orgOwner.OrganizationID, codersdk.CreateGroupRequest{
3609+
Name:"wibble",
3610+
})
3611+
require.NoError(t,err,"create group")
3612+
3613+
client.UpdateWorkspaceACL(ctx,sharedWorkspace.ID, codersdk.UpdateWorkspaceACL{
3614+
GroupRoles:map[string]codersdk.WorkspaceRole{
3615+
group.ID.String():codersdk.WorkspaceRoleUse,
3616+
},
3617+
})
3618+
3619+
workspaces,err:=client.Workspaces(ctx, codersdk.WorkspaceFilter{
3620+
Shared:true,
3621+
})
3622+
require.NoError(t,err,"fetch workspaces")
3623+
require.Equal(t,workspaces.Count,1,"expected only one workspace")
3624+
require.Equal(t,workspaces.Workspaces[0].ID,sharedWorkspace.ID)
3625+
})
3626+
3627+
t.Run("SharedWithUserAndGroup",func(t*testing.T) {
3628+
t.Parallel()
3629+
3630+
dv:=coderdtest.DeploymentValues(t)
3631+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
3632+
3633+
var (
3634+
client,db,orgOwner=coderdenttest.NewWithDatabase(t,&coderdenttest.Options{
3635+
Options:&coderdtest.Options{
3636+
DeploymentValues:dv,
3637+
},
3638+
LicenseOptions:&coderdenttest.LicenseOptions{
3639+
Features: license.Features{
3640+
codersdk.FeatureTemplateRBAC:1,
3641+
},
3642+
},
3643+
})
3644+
_,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
3645+
sharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3646+
OwnerID:workspaceOwner.ID,
3647+
OrganizationID:orgOwner.OrganizationID,
3648+
}).Do().Workspace
3649+
_=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3650+
OwnerID:workspaceOwner.ID,
3651+
OrganizationID:orgOwner.OrganizationID,
3652+
}).Do().Workspace
3653+
_,toShareWithUser=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
3654+
ctx=testutil.Context(t,testutil.WaitMedium)
3655+
)
3656+
3657+
group,err:=client.CreateGroup(ctx,orgOwner.OrganizationID, codersdk.CreateGroupRequest{
3658+
Name:"wibble",
3659+
})
3660+
require.NoError(t,err,"create group")
3661+
3662+
client.UpdateWorkspaceACL(ctx,sharedWorkspace.ID, codersdk.UpdateWorkspaceACL{
3663+
UserRoles:map[string]codersdk.WorkspaceRole{
3664+
toShareWithUser.ID.String():codersdk.WorkspaceRoleUse,
3665+
},
3666+
GroupRoles:map[string]codersdk.WorkspaceRole{
3667+
group.ID.String():codersdk.WorkspaceRoleUse,
3668+
},
3669+
})
3670+
3671+
workspaces,err:=client.Workspaces(ctx, codersdk.WorkspaceFilter{
3672+
Shared:true,
3673+
})
3674+
require.NoError(t,err,"fetch workspaces")
3675+
require.Equal(t,workspaces.Count,1,"expected only one workspace")
3676+
require.Equal(t,workspaces.Workspaces[0].ID,sharedWorkspace.ID)
3677+
})
3678+
3679+
t.Run("NotSharedWithGroup",func(t*testing.T) {
3680+
t.Parallel()
3681+
3682+
dv:=coderdtest.DeploymentValues(t)
3683+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
3684+
3685+
var (
3686+
client,db,orgOwner=coderdenttest.NewWithDatabase(t,&coderdenttest.Options{
3687+
Options:&coderdtest.Options{
3688+
DeploymentValues:dv,
3689+
},
3690+
LicenseOptions:&coderdenttest.LicenseOptions{
3691+
Features: license.Features{
3692+
codersdk.FeatureTemplateRBAC:1,
3693+
},
3694+
},
3695+
})
3696+
_,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
3697+
sharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3698+
OwnerID:workspaceOwner.ID,
3699+
OrganizationID:orgOwner.OrganizationID,
3700+
}).Do().Workspace
3701+
notSharedWorkspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
3702+
OwnerID:workspaceOwner.ID,
3703+
OrganizationID:orgOwner.OrganizationID,
3704+
}).Do().Workspace
3705+
ctx=testutil.Context(t,testutil.WaitMedium)
3706+
)
3707+
3708+
group,err:=client.CreateGroup(ctx,orgOwner.OrganizationID, codersdk.CreateGroupRequest{
3709+
Name:"wibble",
3710+
})
3711+
require.NoError(t,err,"create group")
3712+
3713+
client.UpdateWorkspaceACL(ctx,sharedWorkspace.ID, codersdk.UpdateWorkspaceACL{
3714+
GroupRoles:map[string]codersdk.WorkspaceRole{
3715+
group.ID.String():codersdk.WorkspaceRoleUse,
3716+
},
3717+
})
3718+
3719+
workspaces,err:=client.Workspaces(ctx, codersdk.WorkspaceFilter{
3720+
Shared:false,
3721+
})
3722+
require.NoError(t,err,"fetch workspaces")
3723+
require.Equal(t,workspaces.Count,1,"expected only one workspace")
3724+
require.Equal(t,workspaces.Workspaces[0].ID,notSharedWorkspace.ID)
3725+
})
35783726
}
35793727

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

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp