mirror of
https://github.com/discourse/discourse.git
synced 2025-05-24 03:36:18 +08:00
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:
@ -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]
|
||||
|
Reference in New Issue
Block a user