()
| 321 | } |
| 322 | |
| 323 | func (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()}) |
nothing calls this directly
no test coverage detected