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

Function TestResetMismatchedOIDCLinks

coderd/authlink/authlink_test.go:167–248  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

165}
166
167func TestResetMismatchedOIDCLinks(t *testing.T) {
168 t.Parallel()
169
170 t.Run("ResetsOnlyMismatched", func(t *testing.T) {
171 t.Parallel()
172 ctx := testutil.Context(t, testutil.WaitShort)
173
174 db, _ := dbtestutil.NewDB(t)
175 const expectedIssuer = "https://accounts.google.com"
176
177 // Correctly linked user.
178 correctUser := dbgen.User(t, db, database.User{LoginType: database.LoginTypeOIDC})
179 correctLink := dbgen.UserLink(t, db, database.UserLink{
180 UserID: correctUser.ID,
181 LoginType: database.LoginTypeOIDC,
182 LinkedID: expectedIssuer + "||sub-correct",
183 })
184
185 // Mismatched user.
186 mismatchedUser := dbgen.User(t, db, database.User{LoginType: database.LoginTypeOIDC})
187 dbgen.UserLink(t, db, database.UserLink{
188 UserID: mismatchedUser.ID,
189 LoginType: database.LoginTypeOIDC,
190 LinkedID: "https://old-issuer.example.com||sub-mismatched",
191 })
192
193 // Unlinked user (empty linked_id).
194 unlinkedUser := dbgen.User(t, db, database.User{LoginType: database.LoginTypeOIDC})
195 dbgen.UserLink(t, db, database.UserLink{
196 UserID: unlinkedUser.ID,
197 LoginType: database.LoginTypeOIDC,
198 LinkedID: "",
199 })
200
201 count, err := authlink.ResetMismatchedOIDCLinks(ctx, db, expectedIssuer)
202 require.NoError(t, err)
203 require.EqualValues(t, 1, count)
204
205 // Verify the correct link is unchanged.
206 link, err := db.GetUserLinkByUserIDLoginType(ctx, database.GetUserLinkByUserIDLoginTypeParams{
207 UserID: correctUser.ID,
208 LoginType: database.LoginTypeOIDC,
209 })
210 require.NoError(t, err)
211 require.Equal(t, correctLink.LinkedID, link.LinkedID)
212
213 // Verify the mismatched link was reset.
214 link, err = db.GetUserLinkByUserIDLoginType(ctx, database.GetUserLinkByUserIDLoginTypeParams{
215 UserID: mismatchedUser.ID,
216 LoginType: database.LoginTypeOIDC,
217 })
218 require.NoError(t, err)
219 require.Equal(t, "", link.LinkedID)
220
221 // Verify the unlinked user is still unlinked.
222 link, err = db.GetUserLinkByUserIDLoginType(ctx, database.GetUserLinkByUserIDLoginTypeParams{
223 UserID: unlinkedUser.ID,
224 LoginType: database.LoginTypeOIDC,

Callers

nothing calls this directly

Calls 8

ContextFunction · 0.92
NewDBFunction · 0.92
UserFunction · 0.92
UserLinkFunction · 0.92
ResetMismatchedOIDCLinksFunction · 0.92
RunMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected