FEATURE: site settings to revoke api keys older than a number of days (#23595)

* FEATURE: site settings to revoke api keys older than a number of days
This commit is contained in:
Renato Atilio
2023-09-15 16:31:29 -03:00
committed by GitHub
parent c8fff19b99
commit d93c2cb3d2
33 changed files with 207 additions and 86 deletions

View File

@ -42,11 +42,11 @@ RSpec.describe ApiKey do
expect(ApiKey.last_used_epoch).to eq(nil)
end
it "can automatically revoke keys" do
it "can automatically revoke unused keys" do
now = Time.now
SiteSetting.api_key_last_used_epoch = now - 2.years
SiteSetting.revoke_api_keys_days = 180 # 6 months
SiteSetting.revoke_api_keys_unused_days = 180 # 6 months
freeze_time now - 1.year
never_used = Fabricate(:api_key)
@ -78,6 +78,22 @@ RSpec.describe ApiKey do
expect(used_recently.revoked_at).to eq(nil)
end
it "can automatically revoke keys by max life" do
freeze_time
SiteSetting.revoke_api_keys_maxlife_days = 2
older_key = Fabricate(:api_key, created_at: 3.days.ago)
newer_key = Fabricate(:api_key, created_at: 1.days.ago)
revoked_key = Fabricate(:api_key, created_at: 3.days.ago, revoked_at: 1.day.ago)
expect { ApiKey.revoke_max_life_keys! }.to change { older_key.reload.revoked_at }.from(nil).to(
be_within_one_second_of Time.current
).and not_change { newer_key.reload.revoked_at }.and not_change {
revoked_key.reload.revoked_at
}
end
describe "API Key scope mappings" do
it "maps api_key permissions" do
api_key_mappings = ApiKeyScope.scope_mappings[:topics]