From cb3b2e39fc8a4ed4035242781d37da3f576a8184 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Fri, 20 Mar 2015 12:26:18 +0200 Subject: [PATCH 1/9] Fixed db:all rake task --- config/initializers/initial_settings.rb | 7 +++- lib/tasks/db.rake | 51 +++++++++++-------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/config/initializers/initial_settings.rb b/config/initializers/initial_settings.rb index 08b4b5094..087ccb6ae 100644 --- a/config/initializers/initial_settings.rb +++ b/config/initializers/initial_settings.rb @@ -1,5 +1,10 @@ # otherwise rake not working 100% -con = ActiveRecord::Base.connection +begin + con = ActiveRecord::Base.connection +rescue ActiveRecord::NoDatabaseError + # for running rake tasks, no output +end + if con.present? && con.table_exists?('settings') Setting.disclosure_name = true if Setting.disclosure_name.nil? Setting.disclosure_name = true if Setting.disclosure_name.nil? diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index fd35f1f23..444acbab6 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -1,10 +1,12 @@ namespace :db do - def other_databases - @db ||= ["api_log_#{Rails.env}", "whois_#{Rails.env}"] + def databases + @db ||= [Rails.env, "api_log_#{Rails.env}", "whois_#{Rails.env}"] end def schema_file(db) case db + when Rails.env + 'schema.rb' when "api_log_#{Rails.env}" 'api_log_schema.rb' when "whois_#{Rails.env}" @@ -14,28 +16,31 @@ namespace :db do namespace :all do desc 'Create all databases: registry, api_log and whois' - task setup: [:environment] do + task setup: [:environment, :load_config] do Rake::Task['db:all:create'].invoke Rake::Task['db:all:schema:load'].invoke ActiveRecord::Base.clear_all_connections! ActiveRecord::Base.establish_connection(Rails.env.to_sym) - # puts "\n---------------------------- Import seed ----------------------------------------\n" - # Rake::Task['db:seed'].invoke + + puts "\n---------------------------- Import seed ----------------------------------------\n" + Rake::Task['db:seed'].invoke puts "\n All done!\n\n" end desc 'Create all databases: registry, api_log and whois' - task create: [:environment] do - puts "\n---------------------------- Create main database ----------------------------------------\n" - Rake::Task['db:create'].invoke - - other_databases.each do |name| + task create: [:environment, :load_config] do + databases.each do |name| begin puts "\n---------------------------- Create #{name} ----------------------------------------\n" ActiveRecord::Base.clear_all_connections! conf = ActiveRecord::Base.configurations - ActiveRecord::Base.connection.create_database(conf[name]['database'].to_sym, conf[name]) + + if name == Rails.env + ActiveRecord::Tasks::DatabaseTasks.create_current + else + ActiveRecord::Base.connection.create_database(conf[name]['database'].to_sym, conf[name]) + end rescue => e puts "\n#{e}" end @@ -43,15 +48,11 @@ namespace :db do end desc 'Drop all databaseses: registry, api_log and whois' - task drop: [:environment] do - # just in case we allow only drop test, comment it out please for temp + task drop: [:environment, :load_config] do + # just in case we allow only drop test, comment it out only for temp return unless Rails.env.test? - Rake::Task['db:drop'].invoke - conf = ActiveRecord::Base.configurations - puts "#{conf[Rails.env]['database']} dropped" - - other_databases.each do |name| + databases.each do |name| begin ActiveRecord::Base.clear_all_connections! ActiveRecord::Base.establish_connection(name.to_sym) @@ -70,11 +71,8 @@ namespace :db do namespace :schema do desc 'Schema load for all databases: registry, api_log and whois' - task load: [:environment] do - puts "\n---------------------------- Main schema load ----------------------------------------\n" - Rake::Task['db:schema:load'].invoke - - other_databases.each do |name| + task load: [:environment, :load_config] do + databases.each do |name| begin puts "\n---------------------------- #{name} schema loaded ----------------------------------------\n" ActiveRecord::Base.clear_all_connections! @@ -91,11 +89,8 @@ namespace :db do end desc 'Schema load for all databases: registry, api_log and whois' - task dump: [:environment] do - puts "\n---------------------------- Main schema load ----------------------------------------\n" - Rake::Task['db:schema:dump'].invoke - - other_databases.each do |name| + task dump: [:environment, :load_config] do + databases.each do |name| begin puts "\n---------------------------- #{name} ----------------------------------------\n" filename = "#{Rails.root}/db/#{schema_file(name)}" From eb3a0dd6295c9e7fef286969d621fe6aa67ed698 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Fri, 20 Mar 2015 12:32:02 +0200 Subject: [PATCH 2/9] Added loggen info if init settings does not find database --- config/initializers/initial_settings.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/initializers/initial_settings.rb b/config/initializers/initial_settings.rb index 087ccb6ae..dbf89a186 100644 --- a/config/initializers/initial_settings.rb +++ b/config/initializers/initial_settings.rb @@ -1,8 +1,8 @@ # otherwise rake not working 100% begin con = ActiveRecord::Base.connection -rescue ActiveRecord::NoDatabaseError - # for running rake tasks, no output +rescue ActiveRecord::NoDatabaseError => e + logger.info "Init settings didn't find database: #{e}" end if con.present? && con.table_exists?('settings') From 5f40db94ba52814b9186e122d518a360c7d39289 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Fri, 20 Mar 2015 12:36:37 +0200 Subject: [PATCH 3/9] Fixed rake Rails logger --- config/initializers/initial_settings.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/initial_settings.rb b/config/initializers/initial_settings.rb index dbf89a186..4050d8122 100644 --- a/config/initializers/initial_settings.rb +++ b/config/initializers/initial_settings.rb @@ -2,7 +2,7 @@ begin con = ActiveRecord::Base.connection rescue ActiveRecord::NoDatabaseError => e - logger.info "Init settings didn't find database: #{e}" + Rails.logger.info "Init settings didn't find database: #{e}" end if con.present? && con.table_exists?('settings') From d1a2c863bfafac1d316a1bcaa568daef9bb91d83 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Fri, 20 Mar 2015 14:30:30 +0200 Subject: [PATCH 4/9] Fixed name already exists issue for robot --- spec/fabricators/contact_fabricator.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/fabricators/contact_fabricator.rb b/spec/fabricators/contact_fabricator.rb index 1858b0d99..182411d90 100644 --- a/spec/fabricators/contact_fabricator.rb +++ b/spec/fabricators/contact_fabricator.rb @@ -1,5 +1,5 @@ Fabricator(:contact) do - code { "sh#{Faker::Number.number(8)}" } + code { sequence(:code) { |i| "sh#{Faker::Number.number(8)}#{i}" } } auth_info 'password' name { sequence(:name) { |i| "#{Faker::Name.name}#{i}" } } phone '+372.12345678' @@ -8,7 +8,7 @@ Fabricator(:contact) do ident_type 'priv' ident_country_code 'EE' address - registrar { Fabricate(:registrar, name: Faker::Company.name, reg_no: Faker::Company.duns_number) } + registrar { Fabricate(:registrar) } disclosure { Fabricate(:contact_disclosure) } # rubocop: disable Style/SymbolProc after_validation { |c| c.disable_generate_auth_info! } From e0283050090d7e204ebaaab23b08504e39264466 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Fri, 20 Mar 2015 14:33:11 +0200 Subject: [PATCH 5/9] Added zonefile to travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index cb0a3fc07..de7572df0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ before_script: - cp config/database-travis.yml config/database.yml - RAILS_ENV=test bundle exec rake db:all:schema:load - RAILS_ENV=test bundle exec rake db:seed + - RAILS_ENV=test bundle exec rake zonefile:replace_procedure script: - RAILS_ENV=test bundle exec rake cache: bundler From 15272bad767008d4ddb0dcf96c8441ff6ce83f08 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Fri, 20 Mar 2015 19:17:28 +0200 Subject: [PATCH 6/9] Update contact auth info --- app/models/contact.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index 902d0295d..233954c67 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -116,7 +116,7 @@ class Contact < ActiveRecord::Base def generate_auth_info return if @generate_auth_info_disabled - self.auth_info = SecureRandom.hex(16) + self.auth_info = SecureRandom.hex(11) end def disable_generate_auth_info! # needed for testing From d8d951974e38565e9a504ea1b7817a61855f6cc3 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Mon, 23 Mar 2015 11:17:27 +0200 Subject: [PATCH 7/9] Added creator_link and updator_link helpers --- app/helpers/application_helper.rb | 16 ++++++++++++++++ app/models/concerns/versions.rb | 8 ++++++-- app/views/admin/contacts/partials/_general.haml | 7 ++----- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9153b1911..367aeaba9 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -17,4 +17,20 @@ module ApplicationHelper "#{contact.ident} [#{contact.ident_country_code} #{contact.ident_type}]" end end + + def creator_link(model) + return 'not present' if model.blank? + return model if model.kind_of? String + + # can be api user or some other user + link_to(model.creator, ['admin', model.creator]) + end + + def updator_link(model) + return 'not present' if model.blank? + return model if model.kind_of? String + + # can be api user or some other user + link_to(model.creator, ['admin', model.updator]) + end end diff --git a/app/models/concerns/versions.rb b/app/models/concerns/versions.rb index 8918647f1..099cecfb4 100644 --- a/app/models/concerns/versions.rb +++ b/app/models/concerns/versions.rb @@ -27,21 +27,25 @@ module Versions def creator return nil if creator_str.blank? - if creator_str =~ /^\d-api-/ + creator = if creator_str =~ /^\d-api-/ ApiUser.find_by(id: creator_str) else AdminUser.find_by(id: creator_str) end + + creator.present? ? creator : creator_str end def updator return nil if updator_str.blank? - if updator_str =~ /^\d-api-/ + updator = if updator_str =~ /^\d-api-/ ApiUser.find_by(id: updator_str) else AdminUser.find_by(id: updator_str) end + + updator.present? ? updator : updator_str end # callbacks diff --git a/app/views/admin/contacts/partials/_general.haml b/app/views/admin/contacts/partials/_general.haml index 2504bbc97..30c6c74b6 100644 --- a/app/views/admin/contacts/partials/_general.haml +++ b/app/views/admin/contacts/partials/_general.haml @@ -32,18 +32,15 @@ %dd = l(@contact.created_at, format: :short) by - = link_to(@contact.creator, [:admin, @contact.creator]) + = creator_link(@contact) %dt= t(:updated) %dd = l(@contact.updated_at, format: :short) by - = link_to(@contact.updator, [:admin, @contact.updator]) - + = updator_link(@contact) %dt= t(:registrar) %dd - if @contact.registrar.present? = link_to(@contact.registrar, admin_registrar_path(@contact.registrar)) - - From b2ec23edc9c9f368f1e1b2049158efe611ee43c3 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Mon, 23 Mar 2015 11:58:48 +0200 Subject: [PATCH 8/9] Syntax updates for creator_link and updator_link --- app/helpers/application_helper.rb | 4 ++-- app/models/concerns/versions.rb | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 367aeaba9..88a7f1039 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -20,7 +20,7 @@ module ApplicationHelper def creator_link(model) return 'not present' if model.blank? - return model if model.kind_of? String + return model if model.is_a? String # can be api user or some other user link_to(model.creator, ['admin', model.creator]) @@ -28,7 +28,7 @@ module ApplicationHelper def updator_link(model) return 'not present' if model.blank? - return model if model.kind_of? String + return model if model.is_a? String # can be api user or some other user link_to(model.creator, ['admin', model.updator]) diff --git a/app/models/concerns/versions.rb b/app/models/concerns/versions.rb index 099cecfb4..eff834218 100644 --- a/app/models/concerns/versions.rb +++ b/app/models/concerns/versions.rb @@ -27,10 +27,10 @@ module Versions def creator return nil if creator_str.blank? - creator = if creator_str =~ /^\d-api-/ - ApiUser.find_by(id: creator_str) + if creator_str =~ /^\d-api-/ + creator = ApiUser.find_by(id: creator_str) else - AdminUser.find_by(id: creator_str) + creator = AdminUser.find_by(id: creator_str) end creator.present? ? creator : creator_str @@ -39,10 +39,10 @@ module Versions def updator return nil if updator_str.blank? - updator = if updator_str =~ /^\d-api-/ - ApiUser.find_by(id: updator_str) + if updator_str =~ /^\d-api-/ + updator = ApiUser.find_by(id: updator_str) else - AdminUser.find_by(id: updator_str) + updator = AdminUser.find_by(id: updator_str) end updator.present? ? updator : updator_str From e63a59c2639218db58c89d3c87a001b5d3986b6f Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Mon, 23 Mar 2015 17:05:23 +0200 Subject: [PATCH 9/9] Added admin contacts feature spec and fixed helpers --- app/helpers/application_helper.rb | 6 +++--- spec/features/admin/contact_spec.rb | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 spec/features/admin/contact_spec.rb diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 88a7f1039..06d17b8c8 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -20,7 +20,7 @@ module ApplicationHelper def creator_link(model) return 'not present' if model.blank? - return model if model.is_a? String + return model.creator if model.creator.is_a? String # can be api user or some other user link_to(model.creator, ['admin', model.creator]) @@ -28,9 +28,9 @@ module ApplicationHelper def updator_link(model) return 'not present' if model.blank? - return model if model.is_a? String + return model.updator if model.updator.is_a? String # can be api user or some other user - link_to(model.creator, ['admin', model.updator]) + link_to(model.updator, ['admin', model.updator]) end end diff --git a/spec/features/admin/contact_spec.rb b/spec/features/admin/contact_spec.rb new file mode 100644 index 000000000..a0b36e181 --- /dev/null +++ b/spec/features/admin/contact_spec.rb @@ -0,0 +1,25 @@ +require 'rails_helper' + +feature 'Admin contact', type: :feature do + background { create_settings } + + before :all do + @user = Fabricate(:admin_user, username: 'user1', identity_code: '37810013087') + @contact = Fabricate(:contact, name: 'Mr John') + end + + it 'should show index of contacts' do + sign_in @user + visit admin_contacts_url + + page.should have_content('Mr John') + end + + it 'should show correct contact creator' do + sign_in @user + visit admin_contacts_url + + click_link('Mr John') + page.should have_content('by autotest') + end +end