Initial commit

This commit is contained in:
Yaser
2026-08-13 19:56:46 +03:30
commit de1d57a67b
474 changed files with 43185 additions and 0 deletions

View 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