Initial commit
This commit is contained in:
124
spec/models/api_key_spec.rb
Normal file
124
spec/models/api_key_spec.rb
Normal file
@@ -0,0 +1,124 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
RSpec.describe APIKey, type: :model do
|
||||
let!(:create_member_permission) do
|
||||
create :permission,
|
||||
role: 'member'
|
||||
end
|
||||
|
||||
let!(:create_service_account_permission) do
|
||||
create :permission,
|
||||
role: 'service_account'
|
||||
end
|
||||
|
||||
describe 'Validations' do
|
||||
subject(:api_key) { build(:api_key, :with_user) }
|
||||
|
||||
it { should validate_presence_of(:secret).with_message(/can't be blank/) }
|
||||
it { should validate_uniqueness_of(:kid).with_message(/has already been taken/) }
|
||||
|
||||
context 'key holder state' do
|
||||
context 'valid response' do
|
||||
context 'user with active state' do
|
||||
let!(:user) { create(:user, state: 'active') }
|
||||
|
||||
it 'creates api key' do
|
||||
subject.key_holder_account = user
|
||||
expect(subject.save).to eq true
|
||||
expect(subject.errors.full_messages).to eq []
|
||||
end
|
||||
end
|
||||
|
||||
context 'service account with active state' do
|
||||
let!(:user) { create(:user, state: 'active') }
|
||||
let!(:service_account) { create(:service_account, owner_id: user.id) }
|
||||
|
||||
it 'creates api key' do
|
||||
subject.key_holder_account = user
|
||||
expect(subject.save).to eq true
|
||||
expect(subject.errors.full_messages).to eq []
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'invalid response' do
|
||||
subject { build(:api_key) }
|
||||
|
||||
context 'user with non active state' do
|
||||
let!(:user) { create(:user, state: 'pending') }
|
||||
|
||||
it 'render error message' do
|
||||
subject.key_holder_account = user
|
||||
expect(subject.save).to eq false
|
||||
expect(subject.errors.full_messages).to include(/non active state for key holder account/)
|
||||
end
|
||||
end
|
||||
|
||||
context 'service account with non active state' do
|
||||
let!(:user) { create(:user, state: 'pending') }
|
||||
let!(:service_account) { create(:service_account, owner_id: user.id) }
|
||||
|
||||
it 'render error message' do
|
||||
subject.key_holder_account = service_account
|
||||
expect(subject.save).to eq false
|
||||
expect(subject.errors.full_messages).to include(/non active state for key holder account/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'api key state on update' do
|
||||
context 'valid response' do
|
||||
context 'user with active state' do
|
||||
let!(:user) { create(:user, state: 'active') }
|
||||
let!(:api_key) { create(:api_key, key_holder_account: user, state: 'disabled') }
|
||||
|
||||
it 'updates api key state' do
|
||||
api_key.state = 'active'
|
||||
expect(api_key.save).to eq true
|
||||
expect(api_key.errors.full_messages).to eq []
|
||||
end
|
||||
end
|
||||
|
||||
context 'service account with non active state' do
|
||||
let!(:user) { create(:user, state: 'active') }
|
||||
let!(:service_account) { create(:service_account, owner_id: user.id) }
|
||||
let!(:api_key) { create(:api_key, key_holder_account: service_account, state: 'disabled') }
|
||||
|
||||
it 'render error message' do
|
||||
api_key.state = 'active'
|
||||
expect(api_key.save).to eq true
|
||||
expect(api_key.errors.full_messages).to eq []
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'invalid response' do
|
||||
context 'user with non active state' do
|
||||
let!(:user) { create(:user, state: 'active') }
|
||||
let!(:api_key) { create(:api_key, key_holder_account: user) }
|
||||
|
||||
it 'render error message' do
|
||||
user.update(state: 'banned')
|
||||
api_key.state = 'active'
|
||||
expect(api_key.save).to eq false
|
||||
expect(api_key.errors.full_messages).to include(/cant activate api key with disabled key holder account/)
|
||||
end
|
||||
end
|
||||
|
||||
context 'service account with non active state' do
|
||||
let!(:user) { create(:user, state: 'active') }
|
||||
let!(:service_account) { create(:service_account, owner_id: user.id) }
|
||||
let!(:api_key) { create(:api_key, key_holder_account: service_account) }
|
||||
|
||||
it 'render error message' do
|
||||
service_account.update(state: 'disabled')
|
||||
api_key.state = 'active'
|
||||
expect(api_key.save).to eq false
|
||||
expect(api_key.errors.full_messages).to include(/cant activate api key with disabled key holder account/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user