@@ -51,6 +51,8 @@ func TestSyncOrganizations(t *testing.T) {
51
51
// This test creates some deleted organizations and checks the behavior is
52
52
// correct.
53
53
t .Run ("SyncUserToDeletedOrg" , func (t * testing.T ) {
54
+ t .Parallel ()
55
+
54
56
ctx := testutil .Context (t , testutil .WaitMedium )
55
57
db , _ := dbtestutil .NewDB (t )
56
58
user := dbgen .User (t , db , database.User {})
@@ -108,4 +110,42 @@ func TestSyncOrganizations(t *testing.T) {
108
110
})
109
111
require .ElementsMatch (t , []uuid.UUID {stays .Org .ID , joins .Org .ID }, inIDs )
110
112
})
113
+
114
+ t .Run ("UserToZeroOrgs" , func (t * testing.T ) {
115
+ t .Parallel ()
116
+
117
+ ctx := testutil .Context (t , testutil .WaitMedium )
118
+ db , _ := dbtestutil .NewDB (t )
119
+ user := dbgen .User (t , db , database.User {})
120
+
121
+ deletedLeaves := dbfake .Organization (t , db ).Members (user ).Deleted (true ).Do ()
122
+
123
+ // Now sync the user to the deleted organization
124
+ s := idpsync .NewAGPLSync (
125
+ slogtest .Make (t , & slogtest.Options {}),
126
+ runtimeconfig .NewManager (),
127
+ idpsync.DeploymentSyncSettings {
128
+ OrganizationField : "orgs" ,
129
+ OrganizationMapping : map [string ][]uuid.UUID {
130
+ "leave" : {deletedLeaves .Org .ID },
131
+ },
132
+ OrganizationAssignDefault : false ,
133
+ },
134
+ )
135
+
136
+ err := s .SyncOrganizations (ctx , db , user , idpsync.OrganizationParams {
137
+ SyncEntitled : true ,
138
+ MergedClaims : map [string ]interface {}{
139
+ "orgs" : []string {},
140
+ },
141
+ })
142
+ require .NoError (t , err )
143
+
144
+ orgs , err := db .GetOrganizationsByUserID (ctx , database.GetOrganizationsByUserIDParams {
145
+ UserID : user .ID ,
146
+ Deleted : sql.NullBool {},
147
+ })
148
+ require .NoError (t , err )
149
+ require .Len (t , orgs , 0 )
150
+ })
111
151
}
0 commit comments