mirror of
https://github.com/internetee/registry.git
synced 2025-08-01 23:42:04 +02:00
Added csv export to registrar api_users and white_ips
This commit is contained in:
parent
316f00cadc
commit
0f16ec77f5
11 changed files with 104 additions and 6 deletions
|
@ -3,7 +3,7 @@ require 'net/http'
|
||||||
module Admin
|
module Admin
|
||||||
class RegistrarsController < BaseController # rubocop:disable Metrics/ClassLength
|
class RegistrarsController < BaseController # rubocop:disable Metrics/ClassLength
|
||||||
load_and_authorize_resource
|
load_and_authorize_resource
|
||||||
before_action :set_registrar, only: [:show, :edit, :update, :destroy]
|
before_action :set_registrar, only: %i[show edit update destroy]
|
||||||
before_action :set_registrar_status_filter, only: [:index]
|
before_action :set_registrar_status_filter, only: [:index]
|
||||||
helper_method :registry_vat_rate
|
helper_method :registry_vat_rate
|
||||||
helper_method :iban_max_length
|
helper_method :iban_max_length
|
||||||
|
@ -39,6 +39,11 @@ module Admin
|
||||||
|
|
||||||
def edit; end
|
def edit; end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@result = @registrar.send(params[:records]) unless params[:records].blank?
|
||||||
|
render_by_format('admin/registrars/show', "#{@registrar.name.parameterize}_#{params[:records]}")
|
||||||
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
if @registrar.update(registrar_params)
|
if @registrar.update(registrar_params)
|
||||||
redirect_to [:admin, @registrar], notice: t('.updated')
|
redirect_to [:admin, @registrar], notice: t('.updated')
|
||||||
|
|
|
@ -91,6 +91,25 @@ class ApiUser < User
|
||||||
another_api_user.identity_code == identity_code
|
another_api_user.identity_code == identity_code
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def as_csv_row
|
||||||
|
[
|
||||||
|
username,
|
||||||
|
plain_text_password,
|
||||||
|
identity_code,
|
||||||
|
roles.join(', '),
|
||||||
|
active,
|
||||||
|
accredited?,
|
||||||
|
accreditation_expire_date,
|
||||||
|
created_at,
|
||||||
|
updated_at
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.csv_header
|
||||||
|
['Username', 'Password', 'Identity Code', 'Role', 'Active', 'Accredited',
|
||||||
|
'Accreditation Expire Date', 'Created', 'Updated']
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def machine_readable_certificate(cert)
|
def machine_readable_certificate(cert)
|
||||||
|
|
|
@ -72,5 +72,19 @@ class WhiteIp < ApplicationRecord
|
||||||
rescue StandardError => _e
|
rescue StandardError => _e
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def csv_header
|
||||||
|
%w[IPv4 IPv6 Interfaces Created Updated]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def as_csv_row
|
||||||
|
[
|
||||||
|
ipv4,
|
||||||
|
ipv6,
|
||||||
|
interfaces.join(', ').upcase,
|
||||||
|
created_at,
|
||||||
|
updated_at
|
||||||
|
]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,7 +22,7 @@ class CsvGenerator
|
||||||
def custom_csv?(class_name)
|
def custom_csv?(class_name)
|
||||||
[
|
[
|
||||||
Version::DomainVersion, Version::ContactVersion, Domain,
|
Version::DomainVersion, Version::ContactVersion, Domain,
|
||||||
Contact, Invoice, Account, AccountActivity
|
Contact, Invoice, Account, AccountActivity, ApiUser, WhiteIp
|
||||||
].include?(class_name)
|
].include?(class_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default api_users">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<%= t '.header' %>
|
<%= t '.header' %>
|
||||||
</div>
|
</div>
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<% registrar.api_users.each do |api_user| %>
|
<% registrar.api_users.each do |api_user| %>
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= link_to api_user, admin_registrar_api_user_path(api_user.registrar, api_user) %></td>
|
<td><%= link_to api_user, admin_registrar_api_user_path(registrar, api_user) %></td>
|
||||||
<td><%= api_user.active %></td>
|
<td><%= api_user.active %></td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
|
@ -37,5 +37,7 @@
|
||||||
<div class="panel-footer text-right">
|
<div class="panel-footer text-right">
|
||||||
<%= link_to t('.new_btn'), new_admin_registrar_api_user_path(registrar),
|
<%= link_to t('.new_btn'), new_admin_registrar_api_user_path(registrar),
|
||||||
class: 'btn btn-default btn-xs' %>
|
class: 'btn btn-default btn-xs' %>
|
||||||
|
<%= link_to 'Export to CSV', export_admin_registrar_path(registrar, records: 'api_users', format: :csv),
|
||||||
|
class: 'btn btn-default btn-xs' if registrar.api_users.any? %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default white_ips">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<%= t '.header' %>
|
<%= t '.header' %>
|
||||||
</div>
|
</div>
|
||||||
|
@ -34,5 +34,7 @@
|
||||||
<div class="panel-footer text-right">
|
<div class="panel-footer text-right">
|
||||||
<%= link_to t('.new_btn'), new_admin_registrar_white_ip_path(registrar),
|
<%= link_to t('.new_btn'), new_admin_registrar_white_ip_path(registrar),
|
||||||
class: 'btn btn-default btn-xs' %>
|
class: 'btn btn-default btn-xs' %>
|
||||||
|
<%= link_to 'Export to CSV', export_admin_registrar_path(registrar, records: 'white_ips', format: :csv),
|
||||||
|
class: 'btn btn-default btn-xs' if registrar.white_ips.any? %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -326,6 +326,11 @@ Rails.application.routes.draw do
|
||||||
post 'set_test_date_to_api_user', to: 'api_users#set_test_date_to_api_user', as: 'set_test_date_to_api_user'
|
post 'set_test_date_to_api_user', to: 'api_users#set_test_date_to_api_user', as: 'set_test_date_to_api_user'
|
||||||
post 'remove_test_date_to_api_user', to: 'api_users#remove_test_date_to_api_user', as: 'remove_test_date_to_api_user'
|
post 'remove_test_date_to_api_user', to: 'api_users#remove_test_date_to_api_user', as: 'remove_test_date_to_api_user'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
member do
|
||||||
|
get 'export/:records', to: 'registrars#show', constraints: { format: 'csv' },
|
||||||
|
as: :export
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :contacts do
|
resources :contacts do
|
||||||
|
@ -336,7 +341,7 @@ Rails.application.routes.draw do
|
||||||
|
|
||||||
resources :admin_users
|
resources :admin_users
|
||||||
# /admin/api_users is mainly for manual testing
|
# /admin/api_users is mainly for manual testing
|
||||||
resources :api_users, only: [:index, :show] do
|
resources :api_users, only: %i[index show] do
|
||||||
resources :certificates do
|
resources :certificates do
|
||||||
member do
|
member do
|
||||||
post 'sign'
|
post 'sign'
|
||||||
|
|
2
test/fixtures/files/api_users.csv
vendored
Normal file
2
test/fixtures/files/api_users.csv
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Username,Password,Identity Code,Role,Active,Accredited,Accreditation Expire Date,Created,Updated
|
||||||
|
test_bestnames,testtest,1234,super,true,false,,2010-07-05 10:30:00 +0300,2010-07-05 10:30:00 +0300
|
|
2
test/fixtures/files/white_ips.csv
vendored
Normal file
2
test/fixtures/files/white_ips.csv
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
IPv4,IPv6,Interfaces,Created,Updated
|
||||||
|
127.0.0.1,,"REGISTRAR, API",2010-07-05 10:30:00 +0300,2010-07-05 10:30:00 +0300
|
|
|
@ -22,6 +22,26 @@ class AdminRegistrarsApiUsersSystemTest < ApplicationSystemTestCase
|
||||||
assert_current_path admin_registrar_api_user_path(registrar, new_api_user)
|
assert_current_path admin_registrar_api_user_path(registrar, new_api_user)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_downloads_api_users_list_as_csv
|
||||||
|
travel_to Time.zone.parse('2010-07-05 10:30')
|
||||||
|
registrar = registrars(:bestnames)
|
||||||
|
api_users = registrar.api_users
|
||||||
|
api_users.each do |u|
|
||||||
|
u.created_at = Time.zone.now
|
||||||
|
u.updated_at = Time.zone.now
|
||||||
|
u.save(validate: false)
|
||||||
|
end
|
||||||
|
|
||||||
|
visit admin_registrar_path(registrar)
|
||||||
|
within('.api_users') do
|
||||||
|
click_on 'Export to CSV'
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal "attachment; filename=\"#{registrar.name.parameterize}_api_users_#{Time.zone.now.to_formatted_s(:number)}.csv\"; " \
|
||||||
|
"filename*=UTF-8''#{registrar.name.parameterize}_api_users_#{Time.zone.now.to_formatted_s(:number)}.csv", response_headers['Content-Disposition']
|
||||||
|
assert_equal file_fixture('api_users.csv').read, page.body
|
||||||
|
end
|
||||||
|
|
||||||
def test_shows_api_user_details
|
def test_shows_api_user_details
|
||||||
api_user = users(:api_bestnames)
|
api_user = users(:api_bestnames)
|
||||||
|
|
||||||
|
|
27
test/system/admin_area/registrars/white_ips_test.rb
Normal file
27
test/system/admin_area/registrars/white_ips_test.rb
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
require 'application_system_test_case'
|
||||||
|
|
||||||
|
class AdminRegistrarsWhiteIpsSystemTest < ApplicationSystemTestCase
|
||||||
|
setup do
|
||||||
|
sign_in users(:admin)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_downloads_whitelisted_ips_list_as_csv
|
||||||
|
travel_to Time.zone.parse('2010-07-05 10:30')
|
||||||
|
registrar = registrars(:bestnames)
|
||||||
|
white_ips = registrar.white_ips
|
||||||
|
white_ips.each do |ip|
|
||||||
|
ip.created_at = Time.zone.now
|
||||||
|
ip.updated_at = Time.zone.now
|
||||||
|
ip.save(validate: false)
|
||||||
|
end
|
||||||
|
|
||||||
|
visit admin_registrar_path(registrar)
|
||||||
|
within('.white_ips') do
|
||||||
|
click_on 'Export to CSV'
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal "attachment; filename=\"#{registrar.name.parameterize}_white_ips_#{Time.zone.now.to_formatted_s(:number)}.csv\"; " \
|
||||||
|
"filename*=UTF-8''#{registrar.name.parameterize}_white_ips_#{Time.zone.now.to_formatted_s(:number)}.csv", response_headers['Content-Disposition']
|
||||||
|
assert_equal file_fixture('white_ips.csv').read, page.body
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue