Initial commit
This commit is contained in:
145
spec/api/v2/admin/activities_spec.rb
Normal file
145
spec/api/v2/admin/activities_spec.rb
Normal file
@@ -0,0 +1,145 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe API::V2::Admin::Activities do
|
||||
include_context 'bearer authentication'
|
||||
|
||||
describe 'GET /api/v2/admin/activities' do
|
||||
let!(:create_admin_permission) do
|
||||
create :permission,
|
||||
role: 'admin'
|
||||
end
|
||||
let!(:create_member_permission) do
|
||||
create :permission,
|
||||
role: 'member'
|
||||
end
|
||||
let(:do_request) { get '/api/v2/admin/activities', headers: auth_header }
|
||||
|
||||
context 'admin user' do
|
||||
let!(:test_user) { create(:user, email: 'testa@gmail.com', role: 'admin') }
|
||||
let!(:first_user) { create(:user, email: 'test1@gmail.com') }
|
||||
let!(:second_user) { create(:user, email: 'test2@gmail.com') }
|
||||
|
||||
context 'user activities' do
|
||||
let!(:create_actitivites) do
|
||||
create(:activity, category: 'user', topic: 'session', action: 'login', user: first_user)
|
||||
create(:activity, category: 'user', topic: 'session', action: 'login', user: second_user)
|
||||
create(:activity, category: 'user', topic: 'otp', action: 'otp::enable', user: second_user)
|
||||
create(:activity, category: 'admin', topic: 'otp', action: 'otp::enable', user: second_user)
|
||||
end
|
||||
|
||||
it 'doesnt return admin activities' do
|
||||
get '/api/v2/admin/activities', headers: auth_header
|
||||
activities = JSON.parse(response.body)
|
||||
expect(Activity.where(category: 'user').count).to eq activities.count
|
||||
expect(Activity.all.count).not_to eq activities.count
|
||||
end
|
||||
|
||||
it 'returns list of activities' do
|
||||
get '/api/v2/admin/activities', headers: auth_header
|
||||
activities = JSON.parse(response.body)
|
||||
user_activites = Activity.where(category: 'user')
|
||||
expect(user_activites.count).to eq activities.count
|
||||
expect(user_activites.last.user_ip).to eq activities[0]['user_ip']
|
||||
expect(user_activites.last.user_agent).to eq activities[0]['user_agent']
|
||||
expect(user_activites.last.topic).to eq activities[0]['topic']
|
||||
expect(user_activites.last.action).to eq activities[0]['action']
|
||||
expect(user_activites.last.result).to eq activities[0]['result']
|
||||
expect(user_activites.last.user.email).to eq activities[0]['user']['email']
|
||||
expect(first_user.email).to eq activities[2]['user']['email']
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by action' do
|
||||
get '/api/v2/admin/activities', headers: auth_header, params: {action: 'login'}
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 2
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by uid' do
|
||||
get '/api/v2/admin/activities', headers: auth_header, params: {uid: first_user.uid}
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 1
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by email' do
|
||||
get '/api/v2/admin/activities', headers: auth_header, params: {email: first_user.email}
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 1
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by topic' do
|
||||
get '/api/v2/admin/activities', headers: auth_header, params: {topic: 'otp'}
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 1
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by action and uid' do
|
||||
get '/api/v2/admin/activities', headers: auth_header, params: {topic: 'session', action: 'login', uid: second_user.uid}
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
context 'admin activities' do
|
||||
let!(:create_actitivites) do
|
||||
create(:activity, topic: 'session', action: 'login', user: first_user, category: 'admin', target_uid: second_user.uid)
|
||||
create(:activity, topic: 'session', action: 'login', user: second_user, category: 'admin')
|
||||
create(:activity, topic: 'otp', action: 'otp::enable', user: second_user, category: 'admin', target_uid: second_user.uid)
|
||||
end
|
||||
|
||||
it 'returns list of activities' do
|
||||
get '/api/v2/admin/activities/admin', headers: auth_header
|
||||
activities = JSON.parse(response.body)
|
||||
|
||||
expect(Activity.count).to eq activities.count
|
||||
expect(Activity.third.user_ip).to eq activities[0]['user_ip']
|
||||
expect(Activity.third.user_agent).to eq activities[0]['user_agent']
|
||||
expect(Activity.third.topic).to eq activities[0]['topic']
|
||||
expect(Activity.third.action).to eq activities[0]['action']
|
||||
expect(Activity.third.result).to eq activities[0]['result']
|
||||
expect(Activity.third.user.email).to eq activities[0]['admin']['email']
|
||||
expect(Activity.third.target.email).to eq activities[0]['target']['email']
|
||||
expect(Activity.first.user.email).to eq activities[2]['admin']['email']
|
||||
expect(Activity.first.target.email).to eq activities[2]['target']['email']
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by action' do
|
||||
get '/api/v2/admin/activities/admin', headers: auth_header, params: { action: 'login' }
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 2
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by uid' do
|
||||
get '/api/v2/admin/activities/admin', headers: auth_header, params: { uid: first_user.uid }
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 1
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by email' do
|
||||
get '/api/v2/admin/activities/admin', headers: auth_header, params: { email: first_user.email }
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 1
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by topic' do
|
||||
get '/api/v2/admin/activities/admin', headers: auth_header, params: { topic: 'otp' }
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 1
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by action and uid' do
|
||||
get '/api/v2/admin/activities/admin', headers: auth_header, params: { topic: 'session', action: 'login', uid: second_user.uid }
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 1
|
||||
end
|
||||
|
||||
it 'returns list of activities filtered by affected user' do
|
||||
get '/api/v2/admin/activities/admin', headers: auth_header, params: { target_uid: second_user.uid }
|
||||
activities = JSON.parse(response.body)
|
||||
expect(activities.count).to eq 2
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user