66 lines
2.2 KiB
Ruby
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
|