mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 16:21:18 +08:00
Support for per-user API keys
This commit is contained in:
@ -863,4 +863,55 @@ describe User do
|
||||
expect(user.update_avatar(upload)).to be_true
|
||||
end
|
||||
end
|
||||
|
||||
describe 'api keys' do
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
let(:other_admin) { Fabricate(:admin) }
|
||||
let(:user) { Fabricate(:user) }
|
||||
|
||||
describe '.generate_api_key' do
|
||||
|
||||
it "generates an api key when none exists, and regenerates when it does" do
|
||||
expect(user.api_key).to be_blank
|
||||
|
||||
# Generate a key
|
||||
api_key = user.generate_api_key(admin)
|
||||
expect(api_key.user).to eq(user)
|
||||
expect(api_key.key).to be_present
|
||||
expect(api_key.created_by).to eq(admin)
|
||||
|
||||
user.reload
|
||||
expect(user.api_key).to eq(api_key)
|
||||
|
||||
# Regenerate a key. Keeps the same record, updates the key
|
||||
new_key = user.generate_api_key(other_admin)
|
||||
expect(new_key.id).to eq(api_key.id)
|
||||
expect(new_key.key).to_not eq(api_key.key)
|
||||
expect(new_key.created_by).to eq(other_admin)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe '.revoke_api_key' do
|
||||
|
||||
it "revokes an api key when exists" do
|
||||
expect(user.api_key).to be_blank
|
||||
|
||||
# Revoke nothing does nothing
|
||||
user.revoke_api_key
|
||||
user.reload
|
||||
expect(user.api_key).to be_blank
|
||||
|
||||
# When a key is present it is removed
|
||||
user.generate_api_key(admin)
|
||||
user.reload
|
||||
user.revoke_api_key
|
||||
user.reload
|
||||
expect(user.api_key).to be_blank
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
Reference in New Issue
Block a user