MCPcopy Index your code
hub / github.com/coder/coder / TestSyncOrganizations

Function TestSyncOrganizations

coderd/idpsync/organizations_test.go:116–219  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

114}
115
116func TestSyncOrganizations(t *testing.T) {
117 t.Parallel()
118
119 // This test creates some deleted organizations and checks the behavior is
120 // correct.
121 t.Run("SyncUserToDeletedOrg", func(t *testing.T) {
122 t.Parallel()
123
124 ctx := testutil.Context(t, testutil.WaitMedium)
125 db, _ := dbtestutil.NewDB(t)
126 user := dbgen.User(t, db, database.User{})
127
128 // Create orgs for:
129 // - stays = User is a member, and stays
130 // - leaves = User is a member, and leaves
131 // - joins = User is not a member, and joins
132 // For deleted orgs, the user **should not** be a member of afterwards.
133 // - deletedStays = User is a member of deleted org, and wants to stay
134 // - deletedLeaves = User is a member of deleted org, and wants to leave
135 // - deletedJoins = User is not a member of deleted org, and wants to join
136 stays := dbfake.Organization(t, db).Members(user).Do()
137 leaves := dbfake.Organization(t, db).Members(user).Do()
138 joins := dbfake.Organization(t, db).Do()
139
140 deletedStays := dbfake.Organization(t, db).Members(user).Deleted(true).Do()
141 deletedLeaves := dbfake.Organization(t, db).Members(user).Deleted(true).Do()
142 deletedJoins := dbfake.Organization(t, db).Deleted(true).Do()
143
144 // Now sync the user to the deleted organization
145 s := idpsync.NewAGPLSync(
146 slogtest.Make(t, &slogtest.Options{}),
147 runtimeconfig.NewManager(),
148 idpsync.DeploymentSyncSettings{
149 OrganizationField: "orgs",
150 OrganizationMapping: map[string][]uuid.UUID{
151 "stay": {stays.Org.ID, deletedStays.Org.ID},
152 "leave": {leaves.Org.ID, deletedLeaves.Org.ID},
153 "join": {joins.Org.ID, deletedJoins.Org.ID},
154 },
155 OrganizationAssignDefault: false,
156 },
157 )
158
159 err := s.SyncOrganizations(ctx, db, user, idpsync.OrganizationParams{
160 SyncEntitled: true,
161 MergedClaims: map[string]interface{}{
162 "orgs": []string{"stay", "join"},
163 },
164 })
165 require.NoError(t, err)
166
167 orgs, err := db.GetOrganizationsByUserID(ctx, database.GetOrganizationsByUserIDParams{
168 UserID: user.ID,
169 Deleted: sql.NullBool{},
170 })
171 require.NoError(t, err)
172 require.Len(t, orgs, 2)
173

Callers

nothing calls this directly

Calls 14

ContextFunction · 0.92
NewDBFunction · 0.92
UserFunction · 0.92
OrganizationFunction · 0.92
NewAGPLSyncFunction · 0.92
NewManagerFunction · 0.92
ListFunction · 0.92
MembersMethod · 0.80
DeletedMethod · 0.80
RunMethod · 0.65
DoMethod · 0.65
SyncOrganizationsMethod · 0.65

Tested by

no test coverage detected