Files
Dalan/spec/models/activity_spec.rb
2026-08-13 19:56:46 +03:30

66 lines
2.2 KiB
Ruby

# frozen_string_literal: true
RSpec.describe Activity, type: :model do
let!(:create_admin_permission) do
create :permission,
role: 'admin'
end
let!(:create_member_permission) do
create :permission,
role: 'member'
end
let!(:activity) do
create :activity, topic: 'session',
action: 'login',
result: 'succeed',
user_agent: 'Magic Pony Browser'
end
context 'General' do
it { should belong_to(:user) }
it {
expect {
activity.update_attribute(:topic, 'otp')
}.to raise_error(ActiveRecord::ActiveRecordError, 'Activity is marked as readonly')
}
end
describe 'Validations' do
context 'Correct fields values' do
it { should allow_value('session').for(:topic) }
it { should allow_value('otp').for(:topic) }
it { should allow_value('password').for(:topic) }
it { should allow_value('succeed').for(:result) }
it { should allow_value('failed').for(:result) }
it { expect(activity.browser.ua).to eq 'Magic Pony Browser'}
end
context 'Banned actions and values' do
it { should_not allow_value('passed').for(:result) }
it { should_not allow_value('').for(:user_ip) }
it { expect(activity.browser.known?).to eq false }
it { expect(JSON.parse(activity.data)['note']).to eq 'Detected suspicious browser' }
end
end
describe 'Browser functionality' do
let(:valid_user_agent){'Android SDK 1.5r3: Mozilla/5.0 (Linux; U; Android 1.5; de-; sdk Build/CUPCAKE)
AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1'}
let!(:activity) do
create :activity, topic: 'session',
action: 'login',
result: 'succeed',
user_agent: valid_user_agent
end
context 'Detects browser information' do
it { expect(activity.browser.name).to eq 'Safari' }
it { expect(activity.browser.platform.android?).to eq true }
it { expect(activity.browser.webkit?).to eq true }
it { expect(activity.browser.full_version).to eq '3.1.2' }
it { expect(activity.browser.version).to eq '3' }
end
end
end