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

Commit349cec2

Browse files
committed
update test with more cases
1 parenta9a9cfa commit349cec2

File tree

3 files changed

+57
-28
lines changed

3 files changed

+57
-28
lines changed

‎coderd/database/dbfake/builder.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type OrganizationBuilder struct {
1717
t*testing.T
1818
db database.Store
1919
seed database.Organization
20+
deletebool
2021
allUsersAllowanceint32
2122
members []uuid.UUID
2223
groupsmap[database.Group][]uuid.UUID
@@ -45,6 +46,12 @@ func (b OrganizationBuilder) EveryoneAllowance(allowance int) OrganizationBuilde
4546
returnb
4647
}
4748

49+
func (bOrganizationBuilder)Deleted(deletedbool)OrganizationBuilder {
50+
//nolint: revive // returns modified struct
51+
b.delete=deleted
52+
returnb
53+
}
54+
4855
func (bOrganizationBuilder)Seed(seed database.Organization)OrganizationBuilder {
4956
//nolint: revive // returns modified struct
5057
b.seed=seed
@@ -119,6 +126,17 @@ func (b OrganizationBuilder) Do() OrganizationResponse {
119126
}
120127
}
121128

129+
ifb.delete {
130+
now:=dbtime.Now()
131+
err=b.db.UpdateOrganizationDeletedByID(ctx, database.UpdateOrganizationDeletedByIDParams{
132+
UpdatedAt:now,
133+
ID:org.ID,
134+
})
135+
require.NoError(b.t,err)
136+
org.Deleted=true
137+
org.UpdatedAt=now
138+
}
139+
122140
returnOrganizationResponse{
123141
Org:org,
124142
AllUsersGroup:everyone,

‎coderd/database/dbmem/dbmem.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4156,6 +4156,9 @@ func (q *FakeQuerier) GetOrganizations(_ context.Context, args database.GetOrgan
41564156
ifargs.Name!=""&&!strings.EqualFold(org.Name,args.Name) {
41574157
continue
41584158
}
4159+
ifargs.Deleted!=org.Deleted {
4160+
continue
4161+
}
41594162
tmp=append(tmp,org)
41604163
}
41614164

‎coderd/idpsync/organizations_test.go

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package idpsync_test
22

33
import (
4+
"database/sql"
45
"testing"
56

67
"github.com/golang-jwt/jwt/v4"
@@ -9,9 +10,10 @@ import (
910

1011
"cdr.dev/slog/sloggers/slogtest"
1112
"github.com/coder/coder/v2/coderd/database"
13+
"github.com/coder/coder/v2/coderd/database/db2sdk"
14+
"github.com/coder/coder/v2/coderd/database/dbfake"
1215
"github.com/coder/coder/v2/coderd/database/dbgen"
1316
"github.com/coder/coder/v2/coderd/database/dbtestutil"
14-
"github.com/coder/coder/v2/coderd/database/dbtime"
1517
"github.com/coder/coder/v2/coderd/idpsync"
1618
"github.com/coder/coder/v2/coderd/runtimeconfig"
1719
"github.com/coder/coder/v2/testutil"
@@ -46,29 +48,28 @@ func TestParseOrganizationClaims(t *testing.T) {
4648
funcTestSyncOrganizations(t*testing.T) {
4749
t.Parallel()
4850

51+
// This test creates some deleted organizations and checks the behavior is
52+
// correct.
4953
t.Run("SyncUserToDeletedOrg",func(t*testing.T) {
5054
ctx:=testutil.Context(t,testutil.WaitMedium)
5155
db,_:=dbtestutil.NewDB(t)
5256
user:=dbgen.User(t,db, database.User{})
53-
extra:=dbgen.Organization(t,db, database.Organization{})
54-
dbgen.OrganizationMember(t,db, database.OrganizationMember{
55-
UserID:user.ID,
56-
OrganizationID:extra.ID,
57-
})
5857

59-
// Create a new organization, add in the user as a member, then delete
60-
// the org.
61-
org:=dbgen.Organization(t,db, database.Organization{})
62-
dbgen.OrganizationMember(t,db, database.OrganizationMember{
63-
UserID:user.ID,
64-
OrganizationID:org.ID,
65-
})
66-
67-
err:=db.UpdateOrganizationDeletedByID(ctx, database.UpdateOrganizationDeletedByIDParams{
68-
UpdatedAt:dbtime.Now(),
69-
ID:org.ID,
70-
})
71-
require.NoError(t,err)
58+
// Create orgs for:
59+
// - stays = User is a member, and stays
60+
// - leaves = User is a member, and leaves
61+
// - joins = User is not a member, and joins
62+
// For deleted orgs, the user **should not** be a member of afterwards.
63+
// - deletedStays = User is a member of deleted org, and wants to stay
64+
// - deletedLeaves = User is a member of deleted org, and wants to leave
65+
// - deletedJoins = User is not a member of deleted org, and wants to join
66+
stays:=dbfake.Organization(t,db).Members(user).Do()
67+
leaves:=dbfake.Organization(t,db).Members(user).Do()
68+
joins:=dbfake.Organization(t,db).Do()
69+
70+
deletedStays:=dbfake.Organization(t,db).Members(user).Deleted(true).Do()
71+
deletedLeaves:=dbfake.Organization(t,db).Members(user).Deleted(true).Do()
72+
deletedJoins:=dbfake.Organization(t,db).Deleted(true).Do()
7273

7374
// Now sync the user to the deleted organization
7475
s:=idpsync.NewAGPLSync(
@@ -77,27 +78,34 @@ func TestSyncOrganizations(t *testing.T) {
7778
idpsync.DeploymentSyncSettings{
7879
OrganizationField:"orgs",
7980
OrganizationMapping:map[string][]uuid.UUID{
80-
"random": {org.ID},
81-
"noise": {uuid.New()},
81+
"stay": {stays.Org.ID,deletedStays.Org.ID},
82+
"leave": {leaves.Org.ID,deletedLeaves.Org.ID},
83+
"join": {joins.Org.ID,deletedJoins.Org.ID},
8284
},
8385
OrganizationAssignDefault:false,
8486
},
8587
)
8688

87-
err=s.SyncOrganizations(ctx,db,user, idpsync.OrganizationParams{
89+
err:=s.SyncOrganizations(ctx,db,user, idpsync.OrganizationParams{
8890
SyncEntitled:true,
8991
MergedClaims:map[string]interface{}{
90-
"orgs": []string{"random","noise"},
92+
"orgs": []string{"stay","join"},
9193
},
9294
})
9395
require.NoError(t,err)
9496

95-
mems,err:=db.OrganizationMembers(ctx, database.OrganizationMembersParams{
96-
OrganizationID:org.ID,
97-
UserID:user.ID,
98-
IncludeSystem:false,
97+
orgs,err:=db.GetOrganizationsByUserID(ctx, database.GetOrganizationsByUserIDParams{
98+
UserID:user.ID,
99+
Deleted: sql.NullBool{},
99100
})
100101
require.NoError(t,err)
101-
require.Len(t,mems,1)
102+
require.Len(t,orgs,2)
103+
104+
// Verify the user only exists in 2 orgs. The one they stayed, and the one they
105+
// joined.
106+
inIDs:=db2sdk.List(orgs,func(org database.Organization) uuid.UUID {
107+
returnorg.ID
108+
})
109+
require.ElementsMatch(t, []uuid.UUID{stays.Org.ID,joins.Org.ID},inIDs)
102110
})
103111
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp