mirror of
https://github.com/internetee/registry.git
synced 2025-05-16 09:27:19 +02:00
Logging added for most models
This commit is contained in:
parent
09a816d5a8
commit
c3675c1b2a
46 changed files with 285 additions and 28 deletions
|
@ -1,5 +1,6 @@
|
|||
# rubocop: disable Metrics/ClassLength
|
||||
class ApiUser < ActiveRecord::Base
|
||||
include Versions # version/api_user_version.rb
|
||||
# TODO: should have max request limit per day
|
||||
belongs_to :registrar
|
||||
has_many :contacts
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
module LogTable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
# one plase to define log tables
|
||||
log_table_name = "log_#{table_name.sub('_versions', '').tableize}"
|
||||
self.table_name = log_table_name
|
||||
self.sequence_name = log_table_name
|
||||
end
|
||||
end
|
|
@ -1,4 +1,5 @@
|
|||
class ContactDisclosure < ActiveRecord::Base
|
||||
include Versions # version/contact_disclosure_version.rb
|
||||
belongs_to :contact
|
||||
|
||||
def attributes_with_flag
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class ContactStatus < ActiveRecord::Base
|
||||
include Versions # version/contact_status_version.rb
|
||||
include EppErrors
|
||||
|
||||
belongs_to :contact
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
class Country < ActiveRecord::Base
|
||||
include Versions # version/country_version.rb
|
||||
|
||||
validates :name, presence: true
|
||||
|
||||
def to_s
|
||||
name
|
||||
end
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class Dnskey < ActiveRecord::Base
|
||||
include Versions # version/dnskey_version.rb
|
||||
include EppErrors
|
||||
|
||||
belongs_to :domain
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class DomainContact < ActiveRecord::Base
|
||||
include Versions # version/domain_contact_version.rb
|
||||
include EppErrors
|
||||
belongs_to :contact
|
||||
belongs_to :domain
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class DomainTransfer < ActiveRecord::Base
|
||||
include Versions # version/domain_transfer_version.rb
|
||||
belongs_to :domain
|
||||
|
||||
belongs_to :transfer_from, class_name: 'Registrar'
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class Keyrelay < ActiveRecord::Base
|
||||
include Versions # version/keyrelay_version.rb
|
||||
include EppErrors
|
||||
|
||||
belongs_to :domain
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class LegalDocument < ActiveRecord::Base
|
||||
include Versions # version/legal_document_version.rb
|
||||
belongs_to :documentable, polymorphic: true
|
||||
|
||||
TYPES = %w(pdf bdoc ddoc zip rar gz tar 7z)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class Message < ActiveRecord::Base
|
||||
include Versions # version/message_version.rb
|
||||
belongs_to :registrar
|
||||
|
||||
before_create -> { self.queued = true }
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class Registrar < ActiveRecord::Base
|
||||
include Versions # version/registrar_version.rb
|
||||
belongs_to :country
|
||||
has_many :domains, dependent: :restrict_with_error
|
||||
has_many :contacts, dependent: :restrict_with_error
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
class ReservedDomain < ActiveRecord::Base
|
||||
include Versions # version/reserved_domain_version.rb
|
||||
end
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
class Setting < RailsSettings::CachedSettings
|
||||
include Versions # version/setting_version.rb
|
||||
end
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class User < ActiveRecord::Base
|
||||
include Versions # version/user_version.rb
|
||||
# Include default devise modules. Others available are:
|
||||
# :confirmable, :lockable, :timeoutable and :omniauthable
|
||||
devise :trackable, :timeoutable
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
class AddressVersion < PaperTrail::Version
|
||||
include LogTable
|
||||
self.table_name = :log_addresses
|
||||
self.sequence_name = :log_addresses_id_seq
|
||||
end
|
||||
|
|
4
app/models/version/api_user_version.rb
Normal file
4
app/models/version/api_user_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class ApiUserVersion < PaperTrail::Version
|
||||
self.table_name = :log_api_users
|
||||
self.sequence_name = :log_api_users_id_seq
|
||||
end
|
4
app/models/version/contact_disclosure_version.rb
Normal file
4
app/models/version/contact_disclosure_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class ContactDisclosureVersion < PaperTrail::Version
|
||||
self.table_name = :log_contact_disclosures
|
||||
self.sequence_name = :log_contact_disclosures_id_seq
|
||||
end
|
4
app/models/version/contact_status_version.rb
Normal file
4
app/models/version/contact_status_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class ContactStatusVersion < PaperTrail::Version
|
||||
self.table_name = :log_contact_statuses
|
||||
self.sequence_name = :log_contact_statuses_id_seq
|
||||
end
|
|
@ -1,8 +1,8 @@
|
|||
class ContactVersion < PaperTrail::Version
|
||||
include LogTable
|
||||
include UserEvents
|
||||
# self.table_name = :post_versions
|
||||
# self.sequence_name = :post_version_id_seq
|
||||
self.table_name = :log_contacts
|
||||
self.sequence_name = :log_contacts_id_seq
|
||||
|
||||
scope :deleted, -> { where(event: 'destroy') }
|
||||
# include UserEvents
|
||||
|
||||
# scope :deleted, -> { where(event: 'destroy') }
|
||||
end
|
||||
|
|
4
app/models/version/country_version.rb
Normal file
4
app/models/version/country_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class CountryVersion < PaperTrail::Version
|
||||
self.table_name = :log_countries
|
||||
self.sequence_name = :log_countries_id_seq
|
||||
end
|
4
app/models/version/dnskey_version.rb
Normal file
4
app/models/version/dnskey_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class DnskeyVersion < PaperTrail::Version
|
||||
self.table_name = :log_dnskeys
|
||||
self.sequence_name = :log_dnskeys_id_seq
|
||||
end
|
4
app/models/version/domain_contact_version.rb
Normal file
4
app/models/version/domain_contact_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class DomainContactVersion < PaperTrail::Version
|
||||
self.table_name = :log_domain_contacts
|
||||
self.sequence_name = :log_domain_contacts_id_seq
|
||||
end
|
|
@ -1,3 +1,4 @@
|
|||
class DomainStatusVersion < PaperTrail::Version
|
||||
include LogTable
|
||||
self.table_name = :log_domain_statuses
|
||||
self.sequence_name = :log_domain_statuses_id_seq
|
||||
end
|
||||
|
|
4
app/models/version/domain_transfer_version.rb
Normal file
4
app/models/version/domain_transfer_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class DomainTransferVersion < PaperTrail::Version
|
||||
self.table_name = :log_domain_transfers
|
||||
self.sequence_name = :log_domain_transfers_id_seq
|
||||
end
|
|
@ -1,5 +1,7 @@
|
|||
class DomainVersion < PaperTrail::Version
|
||||
include LogTable
|
||||
self.table_name = :log_domains
|
||||
self.sequence_name = :log_domains_id_seq
|
||||
|
||||
include UserEvents
|
||||
# TODO: remove old
|
||||
# include DomainVersionObserver if Setting.whois_enabled # unless Setting.whois_enabled
|
||||
|
|
4
app/models/version/keyrelay_version.rb
Normal file
4
app/models/version/keyrelay_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class KeyrelayVersion < PaperTrail::Version
|
||||
self.table_name = :log_keyrelays
|
||||
self.sequence_name = :log_keyrelays_id_seq
|
||||
end
|
4
app/models/version/legal_document_version.rb
Normal file
4
app/models/version/legal_document_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class LegalDocumentVersion < PaperTrail::Version
|
||||
self.table_name = :log_legal_documents
|
||||
self.sequence_name = :log_legal_documents_id_seq
|
||||
end
|
4
app/models/version/message_version.rb
Normal file
4
app/models/version/message_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class MessageVersion < PaperTrail::Version
|
||||
self.table_name = :log_messages
|
||||
self.sequence_name = :log_messages_id_seq
|
||||
end
|
|
@ -1,3 +1,4 @@
|
|||
class NameserverVersion < PaperTrail::Version
|
||||
include LogTable
|
||||
self.table_name = :log_nameservers
|
||||
self.sequence_name = :log_nameservers_id_seq
|
||||
end
|
||||
|
|
4
app/models/version/registrar_version.rb
Normal file
4
app/models/version/registrar_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class RegistrarVersion < PaperTrail::Version
|
||||
self.table_name = :log_registrars
|
||||
self.sequence_name = :log_registrars_id_seq
|
||||
end
|
4
app/models/version/reserved_domain_version.rb
Normal file
4
app/models/version/reserved_domain_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class ReservedDomainVersion < PaperTrail::Version
|
||||
self.table_name = :log_reserved_domains
|
||||
self.sequence_name = :log_reserved_domains_id_seq
|
||||
end
|
4
app/models/version/setting_version.rb
Normal file
4
app/models/version/setting_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class SettingVersion < PaperTrail::Version
|
||||
self.table_name = :log_settings
|
||||
self.sequence_name = :log_settings_id_seq
|
||||
end
|
4
app/models/version/user_version.rb
Normal file
4
app/models/version/user_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class UserVersion < PaperTrail::Version
|
||||
self.table_name = :log_users
|
||||
self.sequence_name = :log_users_id_seq
|
||||
end
|
4
app/models/version/zonefile_setting_version.rb
Normal file
4
app/models/version/zonefile_setting_version.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class ZonefileSettingVersion < PaperTrail::Version
|
||||
self.table_name = :log_zonefile_settings
|
||||
self.sequence_name = :log_zonefile_settings_id_seq
|
||||
end
|
|
@ -1,4 +1,5 @@
|
|||
class ZonefileSetting < ActiveRecord::Base
|
||||
include Versions # version/zonefile_setting_version.rb
|
||||
validates :origin, :ttl, :refresh, :retry, :expire, :minimum_ttl, :email, presence: true
|
||||
validates :ttl, :refresh, :retry, :expire, :minimum_ttl, numericality: { only_integer: true }
|
||||
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
# the following line is required for PaperTrail >= 4.0.0 with Rails
|
||||
PaperTrail::Rails::Engine.eager_load!
|
||||
|
||||
PaperTrail::Version.module_eval do
|
||||
self.abstract_class = true
|
||||
end
|
||||
|
||||
# Store console and rake changes in versions
|
||||
if defined?(::Rails::Console)
|
||||
PaperTrail.whodunnit = "#{`whoami`.strip}: console"
|
||||
|
@ -8,6 +12,3 @@ elsif File.basename($PROGRAM_NAME) == "rake"
|
|||
PaperTrail.whodunnit = "#{`whoami`.strip}: rake #{ARGV.join ' '}"
|
||||
end
|
||||
|
||||
PaperTrail::Version.module_eval do
|
||||
self.abstract_class = true
|
||||
end
|
||||
|
|
11
db/migrate/20150129093938_add_versions.rb
Normal file
11
db/migrate/20150129093938_add_versions.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
class AddVersions < ActiveRecord::Migration
|
||||
def change
|
||||
if ActiveRecord::Base.connection.table_exists? 'versions'
|
||||
rename_table :versions, :depricated_versions
|
||||
end
|
||||
|
||||
create_table :versions do |t|
|
||||
t.text :depricated_table_but_somehow_paper_trail_tests_fails_without_it
|
||||
end
|
||||
end
|
||||
end
|
15
db/schema.rb
15
db/schema.rb
|
@ -11,8 +11,12 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
<<<<<<< HEAD
|
||||
ActiveRecord::Schema.define(version: 20150130085458) do
|
||||
|
||||
=======
|
||||
ActiveRecord::Schema.define(version: 20150129114042) do
|
||||
>>>>>>> Logging added for most models
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
||||
|
@ -127,6 +131,10 @@ ActiveRecord::Schema.define(version: 20150130085458) do
|
|||
t.string "digest"
|
||||
end
|
||||
|
||||
create_table "depricated_versions", force: :cascade do |t|
|
||||
t.datetime "created_at"
|
||||
end
|
||||
|
||||
create_table "dnskeys", force: :cascade do |t|
|
||||
t.integer "domain_id"
|
||||
t.integer "flags"
|
||||
|
@ -538,14 +546,11 @@ ActiveRecord::Schema.define(version: 20150130085458) do
|
|||
t.string "billing_address"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
<<<<<<< HEAD
|
||||
t.string "phone"
|
||||
t.string "email"
|
||||
t.string "billing_email"
|
||||
=======
|
||||
t.integer "creator_id"
|
||||
t.integer "updater_id"
|
||||
>>>>>>> Added pure PaperTrail stack
|
||||
end
|
||||
|
||||
create_table "reserved_domains", force: :cascade do |t|
|
||||
|
@ -587,6 +592,10 @@ ActiveRecord::Schema.define(version: 20150130085458) do
|
|||
t.integer "updater_id"
|
||||
end
|
||||
|
||||
create_table "versions", force: :cascade do |t|
|
||||
t.text "depricated_table_but_somehow_paper_trail_tests_fails_without_it"
|
||||
end
|
||||
|
||||
create_table "zonefile_settings", force: :cascade do |t|
|
||||
t.string "origin"
|
||||
t.integer "ttl"
|
||||
|
|
1
lib/generators/version/USAGE
Normal file
1
lib/generators/version/USAGE
Normal file
|
@ -0,0 +1 @@
|
|||
Will generate custom PaperTrail version model
|
4
lib/generators/version/templates/version.rb.erb
Normal file
4
lib/generators/version/templates/version.rb.erb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class <%= class_name %>Version < PaperTrail::Version
|
||||
self.table_name = :log_<%= file_name.tableize %>
|
||||
self.sequence_name = :log_<%= file_name.tableize %>_id_seq
|
||||
end
|
11
lib/generators/version/version_generator.rb
Normal file
11
lib/generators/version/version_generator.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
class VersionGenerator < Rails::Generators::NamedBase
|
||||
source_root File.expand_path("../templates", __FILE__)
|
||||
|
||||
def create_version_file
|
||||
template "version.rb.erb", "app/models/version/#{file_name}_version.rb"
|
||||
end
|
||||
|
||||
def class_name
|
||||
file_name.camelize
|
||||
end
|
||||
end
|
|
@ -3,10 +3,55 @@ require 'rails_helper'
|
|||
describe Address do
|
||||
it { should belong_to(:contact) }
|
||||
it { should belong_to(:country) }
|
||||
|
||||
context 'about class' do
|
||||
it 'should have versioning enabled?' do
|
||||
Address.paper_trail_enabled_for_model?.should == true
|
||||
end
|
||||
|
||||
it 'should have custom log prexied table name for versions table' do
|
||||
AddressVersion.table_name.should == 'log_addresses'
|
||||
end
|
||||
end
|
||||
|
||||
context 'with invalid attribute' do
|
||||
before :all do
|
||||
@address = Address.new
|
||||
end
|
||||
|
||||
it 'should not be valid' do
|
||||
@address.valid?
|
||||
@address.errors.full_messages.should match_array([
|
||||
])
|
||||
end
|
||||
|
||||
it 'should not have any versions' do
|
||||
@address.versions.should == []
|
||||
end
|
||||
end
|
||||
|
||||
context 'with valid attributes' do
|
||||
before :all do
|
||||
@address = Fabricate(:address)
|
||||
end
|
||||
|
||||
it 'should be valid' do
|
||||
@address.valid?
|
||||
@address.errors.full_messages.should match_array([])
|
||||
end
|
||||
|
||||
it 'should not have one version' do
|
||||
with_versioning do
|
||||
@address.versions.should == []
|
||||
@address.zip = 'New zip'
|
||||
@address.save
|
||||
@address.versions.size.should == 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe Address, '.extract_params' do
|
||||
|
||||
it 'returns params hash' do
|
||||
Fabricate(:country, iso: 'EE')
|
||||
ph = { postalInfo: { name: 'fred', addr: { cc: 'EE', city: 'Village', street: 'street1' } } }
|
||||
|
|
|
@ -2,6 +2,54 @@ require 'rails_helper'
|
|||
|
||||
describe ContactDisclosure do
|
||||
it { should belong_to(:contact) }
|
||||
|
||||
context 'about class' do
|
||||
it 'should have versioning enabled?' do
|
||||
Country.paper_trail_enabled_for_model?.should == true
|
||||
end
|
||||
|
||||
it 'should have custom log prexied table name for versions table' do
|
||||
CountryVersion.table_name.should == 'log_countries'
|
||||
end
|
||||
end
|
||||
|
||||
context 'with invalid attribute' do
|
||||
before :all do
|
||||
@contact_disclosure = Country.new
|
||||
end
|
||||
|
||||
it 'should not be valid' do
|
||||
@contact_disclosure.valid?
|
||||
@contact_disclosure.errors.full_messages.should match_array([
|
||||
"Name is missing"
|
||||
])
|
||||
end
|
||||
|
||||
it 'should not have any versions' do
|
||||
@contact_disclosure.versions.should == []
|
||||
end
|
||||
end
|
||||
|
||||
context 'with valid attributes' do
|
||||
before :all do
|
||||
@contact_disclosure = Fabricate(:contact_disclosure)
|
||||
end
|
||||
|
||||
it 'should be valid' do
|
||||
@contact_disclosure.valid?
|
||||
@contact_disclosure.errors.full_messages.should match_array([])
|
||||
end
|
||||
|
||||
it 'should not have one version' do
|
||||
with_versioning do
|
||||
@contact_disclosure.versions.should == []
|
||||
@contact_disclosure.name = 'New name'
|
||||
@contact_disclosure.save
|
||||
@contact_disclosure.versions.size.should == 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe '.extract_attributes' do
|
||||
|
|
54
spec/models/country_spec.rb
Normal file
54
spec/models/country_spec.rb
Normal file
|
@ -0,0 +1,54 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe Country do
|
||||
before :all do
|
||||
@epp_user = Fabricate(:country)
|
||||
end
|
||||
|
||||
context 'about class' do
|
||||
it 'should have versioning enabled?' do
|
||||
Country.paper_trail_enabled_for_model?.should == true
|
||||
end
|
||||
|
||||
it 'should have custom log prexied table name for versions table' do
|
||||
CountryVersion.table_name.should == 'log_countries'
|
||||
end
|
||||
end
|
||||
|
||||
context 'with invalid attribute' do
|
||||
before :all do
|
||||
@country = Country.new
|
||||
end
|
||||
|
||||
it 'should not be valid' do
|
||||
@country.valid?
|
||||
@country.errors.full_messages.should match_array([
|
||||
"Name is missing"
|
||||
])
|
||||
end
|
||||
|
||||
it 'should not have any versions' do
|
||||
@country.versions.should == []
|
||||
end
|
||||
end
|
||||
|
||||
context 'with valid attributes' do
|
||||
before :all do
|
||||
@country = Fabricate(:country)
|
||||
end
|
||||
|
||||
it 'should be valid' do
|
||||
@country.valid?
|
||||
@country.errors.full_messages.should match_array([])
|
||||
end
|
||||
|
||||
it 'should not have one version' do
|
||||
with_versioning do
|
||||
@country.versions.should == []
|
||||
@country.name = 'New name'
|
||||
@country.save
|
||||
@country.versions.size.should == 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -26,8 +26,8 @@ Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
|
|||
ActiveRecord::Migration.maintain_test_schema!
|
||||
|
||||
RSpec.configure do |config|
|
||||
config.filter_run focus: true
|
||||
config.run_all_when_everything_filtered = true
|
||||
# config.filter_run focus: true
|
||||
# config.run_all_when_everything_filtered = true
|
||||
|
||||
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
||||
# examples within a transaction, remove the following line or assign false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue