mirror of
https://github.com/internetee/registry.git
synced 2025-07-31 06:56:23 +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
|
||||
class RegistrarsController < BaseController # rubocop:disable Metrics/ClassLength
|
||||
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]
|
||||
helper_method :registry_vat_rate
|
||||
helper_method :iban_max_length
|
||||
|
@ -39,6 +39,11 @@ module Admin
|
|||
|
||||
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
|
||||
if @registrar.update(registrar_params)
|
||||
redirect_to [:admin, @registrar], notice: t('.updated')
|
||||
|
|
|
@ -91,6 +91,25 @@ class ApiUser < User
|
|||
another_api_user.identity_code == identity_code
|
||||
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
|
||||
|
||||
def machine_readable_certificate(cert)
|
||||
|
|
|
@ -72,5 +72,19 @@ class WhiteIp < ApplicationRecord
|
|||
rescue StandardError => _e
|
||||
nil
|
||||
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
|
||||
|
|
|
@ -22,7 +22,7 @@ class CsvGenerator
|
|||
def custom_csv?(class_name)
|
||||
[
|
||||
Version::DomainVersion, Version::ContactVersion, Domain,
|
||||
Contact, Invoice, Account, AccountActivity
|
||||
Contact, Invoice, Account, AccountActivity, ApiUser, WhiteIp
|
||||
].include?(class_name)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="panel panel-default">
|
||||
<div class="panel panel-default api_users">
|
||||
<div class="panel-heading">
|
||||
<%= t '.header' %>
|
||||
</div>
|
||||
|
@ -15,7 +15,7 @@
|
|||
<tbody>
|
||||
<% registrar.api_users.each do |api_user| %>
|
||||
<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>
|
||||
|
||||
|
@ -37,5 +37,7 @@
|
|||
<div class="panel-footer text-right">
|
||||
<%= link_to t('.new_btn'), new_admin_registrar_api_user_path(registrar),
|
||||
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>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="panel panel-default">
|
||||
<div class="panel panel-default white_ips">
|
||||
<div class="panel-heading">
|
||||
<%= t '.header' %>
|
||||
</div>
|
||||
|
@ -34,5 +34,7 @@
|
|||
<div class="panel-footer text-right">
|
||||
<%= link_to t('.new_btn'), new_admin_registrar_white_ip_path(registrar),
|
||||
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>
|
||||
|
|
|
@ -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 'remove_test_date_to_api_user', to: 'api_users#remove_test_date_to_api_user', as: 'remove_test_date_to_api_user'
|
||||
end
|
||||
|
||||
member do
|
||||
get 'export/:records', to: 'registrars#show', constraints: { format: 'csv' },
|
||||
as: :export
|
||||
end
|
||||
end
|
||||
|
||||
resources :contacts do
|
||||
|
@ -336,7 +341,7 @@ Rails.application.routes.draw do
|
|||
|
||||
resources :admin_users
|
||||
# /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
|
||||
member do
|
||||
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)
|
||||
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
|
||||
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