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

Method TestAPIKey

coderd/database/dbauthz/dbauthz_test.go:323–403  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

321}
322
323func (s *MethodTestSuite) TestAPIKey() {
324 s.Run("DeleteAPIKeyByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
325 key := testutil.Fake(s.T(), faker, database.APIKey{})
326 dbm.EXPECT().GetAPIKeyByID(gomock.Any(), key.ID).Return(key, nil).AnyTimes()
327 dbm.EXPECT().DeleteAPIKeyByID(gomock.Any(), key.ID).Return(nil).AnyTimes()
328 check.Args(key.ID).Asserts(key, policy.ActionDelete).Returns()
329 }))
330 s.Run("DeleteExpiredAPIKeys", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
331 args := database.DeleteExpiredAPIKeysParams{
332 Before: time.Date(2025, 11, 21, 0, 0, 0, 0, time.UTC),
333 LimitCount: 1000,
334 }
335 dbm.EXPECT().DeleteExpiredAPIKeys(gomock.Any(), args).Return(int64(0), nil).AnyTimes()
336 check.Args(args).Asserts(rbac.ResourceApiKey, policy.ActionDelete).Returns(int64(0))
337 }))
338 s.Run("GetAPIKeyByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
339 key := testutil.Fake(s.T(), faker, database.APIKey{})
340 dbm.EXPECT().GetAPIKeyByID(gomock.Any(), key.ID).Return(key, nil).AnyTimes()
341 check.Args(key.ID).Asserts(key, policy.ActionRead).Returns(key)
342 }))
343 s.Run("GetAPIKeyByName", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
344 key := testutil.Fake(s.T(), faker, database.APIKey{LoginType: database.LoginTypeToken, TokenName: "marge-cat"})
345 dbm.EXPECT().GetAPIKeyByName(gomock.Any(), database.GetAPIKeyByNameParams{TokenName: key.TokenName, UserID: key.UserID}).Return(key, nil).AnyTimes()
346 check.Args(database.GetAPIKeyByNameParams{TokenName: key.TokenName, UserID: key.UserID}).Asserts(key, policy.ActionRead).Returns(key)
347 }))
348 s.Run("GetAPIKeysByLoginType", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
349 a := testutil.Fake(s.T(), faker, database.APIKey{LoginType: database.LoginTypePassword})
350 b := testutil.Fake(s.T(), faker, database.APIKey{LoginType: database.LoginTypePassword})
351 dbm.EXPECT().GetAPIKeysByLoginType(gomock.Any(), database.GetAPIKeysByLoginTypeParams{LoginType: database.LoginTypePassword}).Return([]database.APIKey{a, b}, nil).AnyTimes()
352 check.Args(database.GetAPIKeysByLoginTypeParams{LoginType: database.LoginTypePassword}).Asserts(a, policy.ActionRead, b, policy.ActionRead).Returns(slice.New(a, b))
353 }))
354 s.Run("GetAPIKeysByUserID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
355 u1 := testutil.Fake(s.T(), faker, database.User{})
356 keyA := testutil.Fake(s.T(), faker, database.APIKey{UserID: u1.ID, LoginType: database.LoginTypeToken, TokenName: "key-a"})
357 keyB := testutil.Fake(s.T(), faker, database.APIKey{UserID: u1.ID, LoginType: database.LoginTypeToken, TokenName: "key-b"})
358
359 dbm.EXPECT().GetAPIKeysByUserID(gomock.Any(), gomock.Any()).Return(slice.New(keyA, keyB), nil).AnyTimes()
360 check.Args(database.GetAPIKeysByUserIDParams{LoginType: database.LoginTypeToken, UserID: u1.ID}).
361 Asserts(keyA, policy.ActionRead, keyB, policy.ActionRead).
362 Returns(slice.New(keyA, keyB))
363 }))
364 s.Run("GetAPIKeysLastUsedAfter", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
365 now := time.Now()
366 a := database.APIKey{LastUsed: now.Add(time.Hour)}
367 b := database.APIKey{LastUsed: now.Add(time.Hour)}
368 dbm.EXPECT().GetAPIKeysLastUsedAfter(gomock.Any(), gomock.Any()).Return([]database.APIKey{a, b}, nil).AnyTimes()
369 check.Args(now).Asserts(a, policy.ActionRead, b, policy.ActionRead).Returns(slice.New(a, b))
370 }))
371 s.Run("InsertAPIKey", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
372 u := testutil.Fake(s.T(), faker, database.User{})
373 arg := database.InsertAPIKeyParams{UserID: u.ID, LoginType: database.LoginTypePassword, Scopes: database.APIKeyScopes{database.ApiKeyScopeCoderAll}, IPAddress: defaultIPAddress()}
374 ret := testutil.Fake(s.T(), faker, database.APIKey{UserID: u.ID, LoginType: database.LoginTypePassword})
375 dbm.EXPECT().InsertAPIKey(gomock.Any(), arg).Return(ret, nil).AnyTimes()
376 check.Args(arg).Asserts(rbac.ResourceApiKey.WithOwner(u.ID.String()), policy.ActionCreate)
377 }))
378 s.Run("UpdateAPIKeyByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
379 u := testutil.Fake(s.T(), faker, database.User{})
380 a := testutil.Fake(s.T(), faker, database.APIKey{UserID: u.ID, IPAddress: defaultIPAddress()})

Callers

nothing calls this directly

Calls 15

MockedMethod · 0.95
FakeFunction · 0.92
NewFunction · 0.92
defaultIPAddressFunction · 0.85
ReturnsMethod · 0.80
AssertsMethod · 0.80
ArgsMethod · 0.80
WithOwnerMethod · 0.80
RunMethod · 0.65
GetAPIKeyByIDMethod · 0.65
DeleteAPIKeyByIDMethod · 0.65
DeleteExpiredAPIKeysMethod · 0.65

Tested by

no test coverage detected