|
1 | 1 | package coderd_test
|
2 | 2 |
|
3 | 3 | import (
|
| 4 | +"database/sql" |
4 | 5 | "testing"
|
5 | 6 |
|
6 | 7 | "github.com/google/uuid"
|
7 | 8 | "github.com/stretchr/testify/require"
|
8 | 9 |
|
9 | 10 | "github.com/coder/coder/v2/coderd/coderdtest"
|
| 11 | +"github.com/coder/coder/v2/coderd/database" |
10 | 12 | "github.com/coder/coder/v2/coderd/database/db2sdk"
|
11 |
| -"github.com/coder/coder/v2/coderd/rbac" |
| 13 | +"github.com/coder/coder/v2/coderd/database/dbgen" |
12 | 14 | "github.com/coder/coder/v2/codersdk"
|
13 | 15 | "github.com/coder/coder/v2/testutil"
|
14 | 16 | )
|
@@ -52,19 +54,64 @@ func TestDeleteMember(t *testing.T) {
|
52 | 54 | funcTestListMembers(t*testing.T) {
|
53 | 55 | t.Parallel()
|
54 | 56 |
|
| 57 | +client,db:=coderdtest.NewWithDatabase(t,nil) |
| 58 | +owner:=coderdtest.CreateFirstUser(t,client) |
| 59 | +_,orgMember:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID) |
| 60 | +_,orgAdmin:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID) |
| 61 | +anotherOrg:=dbgen.Organization(t,db, database.Organization{}) |
| 62 | +anotherUser:=dbgen.User(t,db, database.User{ |
| 63 | +GithubComUserID: sql.NullInt64{Valid:true,Int64:12345}, |
| 64 | +}) |
| 65 | +_=dbgen.OrganizationMember(t,db, database.OrganizationMember{ |
| 66 | +OrganizationID:anotherOrg.ID, |
| 67 | +UserID:anotherUser.ID, |
| 68 | +}) |
| 69 | + |
55 | 70 | t.Run("OK",func(t*testing.T) {
|
56 | 71 | t.Parallel()
|
57 |
| -owner:=coderdtest.New(t,nil) |
58 |
| -first:=coderdtest.CreateFirstUser(t,owner) |
59 | 72 |
|
60 |
| -client,user:=coderdtest.CreateAnotherUser(t,owner,first.OrganizationID,rbac.ScopedRoleOrgAdmin(first.OrganizationID)) |
| 73 | +ctx:=testutil.Context(t,testutil.WaitShort) |
| 74 | +members,err:=client.OrganizationMembers(ctx,owner.OrganizationID) |
| 75 | +require.NoError(t,err) |
| 76 | +require.Len(t,members,3) |
| 77 | +require.ElementsMatch(t, |
| 78 | +[]uuid.UUID{owner.UserID,orgMember.ID,orgAdmin.ID}, |
| 79 | +db2sdk.List(members,onlyIDs)) |
| 80 | +}) |
| 81 | + |
| 82 | +t.Run("UserID",func(t*testing.T) { |
| 83 | +t.Parallel() |
| 84 | + |
| 85 | +ctx:=testutil.Context(t,testutil.WaitShort) |
| 86 | +members,err:=client.OrganizationMembers(ctx,owner.OrganizationID,codersdk.OrganizationMembersQueryOptionUserID(orgMember.ID)) |
| 87 | +require.NoError(t,err) |
| 88 | +require.Len(t,members,1) |
| 89 | +require.ElementsMatch(t, |
| 90 | +[]uuid.UUID{orgMember.ID}, |
| 91 | +db2sdk.List(members,onlyIDs)) |
| 92 | +}) |
| 93 | + |
| 94 | +t.Run("IncludeSystem",func(t*testing.T) { |
| 95 | +t.Parallel() |
| 96 | + |
| 97 | +ctx:=testutil.Context(t,testutil.WaitShort) |
| 98 | +members,err:=client.OrganizationMembers(ctx,owner.OrganizationID,codersdk.OrganizationMembersQueryOptionIncludeSystem()) |
| 99 | +require.NoError(t,err) |
| 100 | +require.Len(t,members,4) |
| 101 | +require.ElementsMatch(t, |
| 102 | +[]uuid.UUID{owner.UserID,orgMember.ID,orgAdmin.ID,database.PrebuildsSystemUserID}, |
| 103 | +db2sdk.List(members,onlyIDs)) |
| 104 | +}) |
| 105 | + |
| 106 | +t.Run("GithubUserID",func(t*testing.T) { |
| 107 | +t.Parallel() |
61 | 108 |
|
62 | 109 | ctx:=testutil.Context(t,testutil.WaitShort)
|
63 |
| -members,err:=client.OrganizationMembers(ctx,first.OrganizationID) |
| 110 | +members,err:=client.OrganizationMembers(ctx,anotherOrg.ID,codersdk.OrganizationMembersQueryOptionGithubUserID(anotherUser.GithubComUserID.Int64)) |
64 | 111 | require.NoError(t,err)
|
65 |
| -require.Len(t,members,2) |
| 112 | +require.Len(t,members,1) |
66 | 113 | require.ElementsMatch(t,
|
67 |
| -[]uuid.UUID{first.UserID,user.ID}, |
| 114 | +[]uuid.UUID{anotherUser.ID}, |
68 | 115 | db2sdk.List(members,onlyIDs))
|
69 | 116 | })
|
70 | 117 | }
|
|