added test and saving statuses into histroy field

This commit is contained in:
olegphenomenon 2021-09-23 11:01:34 +03:00
parent 622dba4f1c
commit 09eab21d2b
9 changed files with 34 additions and 183 deletions

8
.idea/.gitignore generated vendored
View file

@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

4
.idea/misc.xml generated
View file

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="rbenv: 2.7.2" project-jdk-type="RUBY_SDK" />
</project>

8
.idea/modules.xml generated
View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/registry.iml" filepath="$PROJECT_DIR$/.idea/registry.iml" />
</modules>
</component>
</project>

148
.idea/registry.iml generated
View file

@ -1,148 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="RUBY_MODULE" version="4">
<component name="FacetManager">
<facet type="RailsFacetType" name="Ruby on Rails">
<configuration>
<RAILS_FACET_CONFIG_ID NAME="RAILS_FACET_SUPPORT_REMOVED" VALUE="false" />
<RAILS_FACET_CONFIG_ID NAME="RAILS_TESTS_SOURCES_PATCHED" VALUE="true" />
<RAILS_FACET_CONFIG_ID NAME="RAILS_FACET_APPLICATION_ROOT" VALUE="$MODULE_DIR$" />
</configuration>
</facet>
</component>
<component name="ModuleRunConfigurationManager">
<shared />
</component>
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/.bundle" />
<excludeFolder url="file://$MODULE_DIR$/public/packs" />
<excludeFolder url="file://$MODULE_DIR$/vendor/bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/cache" />
<excludeFolder url="file://$MODULE_DIR$/log" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
<excludeFolder url="file://$MODULE_DIR$/public/system" />
<excludeFolder url="file://$MODULE_DIR$/components" />
</content>
<orderEntry type="jdk" jdkName="rbenv: 2.7.2" jdkType="RUBY_SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.7.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="aes_key_wrap (v1.1.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="airbrake-ruby (v5.2.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="akami (v1.3.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="apipie-rails (v0.5.18, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="attr_required (v1.0.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="autoprefixer-rails (v10.2.4.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="aws-eventstream (v1.1.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="aws-partitions (v1.434.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="aws-sdk-core (v3.113.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="aws-sdk-sesv2 (v1.17.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="aws-sigv4 (v1.2.3, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="bcrypt (v3.1.16, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="bootstrap-sass (v3.4.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="builder (v3.2.4, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.2.20, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="capybara (v3.35.3, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="childprocess (v3.0.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="chronic (v0.10.2, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="coderay (v1.1.3, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="coffee-rails (v5.0.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="coffee-script (v2.4.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="coffee-script-source (v1.12.2, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="company_register (v0.1.0@4181b2, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.8, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="connection_pool (v2.2.5, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="crack (v0.4.5, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="crass (v1.0.6, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="daemons (v1.3.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="daemons-rails (v1.2.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="database_cleaner (v2.0.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="database_cleaner-active_record (v2.0.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="database_cleaner-core (v2.0.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="digidoc_client (v0.3.0@1645e8, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="directo (v1.0.1@711ce2, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="dnsruby (v1.61.5, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="docile (v1.3.5, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="domain_name (v0.5.20190701, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="epp (v1.5.0@af7cef, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="erubi (v1.10.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="execjs (v2.7.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="ffi (v1.15.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="globalid (v0.4.2, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="gyoku (v1.3.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="hashdiff (v1.0.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="hpricot (v0.8.6, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="httpclient (v2.8.3, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="httpi (v2.4.5, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="i18n (v1.8.10, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="jmespath (v1.4.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="json (v2.5.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="kaminari (v1.2.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="kaminari-actionview (v1.2.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="kaminari-activerecord (v1.2.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="kaminari-core (v1.2.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="lhv (v0.1.0@1fb078, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="loofah (v2.9.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="mail (v2.7.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="marcel (v1.0.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="method_source (v1.0.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="mime-types (v3.3.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="mime-types-data (v3.2021.0225, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="mini_mime (v1.0.3, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.14.4, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="money (v6.13.8, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="msgpack (v1.4.2, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="multi_json (v1.15.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="nio4r (v2.5.7, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="nori (v2.6.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="omniauth-rails_csrf_protection (v0.1.2, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="orm_adapter (v0.5.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="pdfkit (v0.8.5, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="pg (v1.2.3, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="public_suffix (v4.0.6, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="racc (v1.5.2, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="rack (v2.2.3, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="rack-test (v1.1.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="rails-dom-testing (v2.0.3, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="rails-html-sanitizer (v1.3.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="rake (v13.0.3, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="rbtree3 (v0.6.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.1.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="responders (v3.0.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="rubyzip (v2.3.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="sassc (v2.4.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="savon (v2.12.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="selenium-webdriver (v3.142.7, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="simpleidn (v0.2.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="sixarm_ruby_unaccent (v1.2.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="socksify (v1.7.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="sprockets (v4.0.2, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="sprockets-rails (v3.2.2, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="thor (v1.1.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="tilt (v2.0.10, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.4, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="unf (v0.1.4, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="unf_ext (v0.0.7.7, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="validate_email (v0.1.6, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="warden (v1.2.9, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="wasabi (v3.6.1, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="webdrivers (v4.6.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="webfinger (v1.1.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="websocket-driver (v0.7.3, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="websocket-extensions (v0.1.5, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="xpath (v3.2.0, rbenv: 2.7.2) [gem]" level="application" />
<orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.4.2, rbenv: 2.7.2) [gem]" level="application" />
</component>
<component name="RModuleSettingsStorage">
<LOAD_PATH number="0" />
<I18N_FOLDERS number="1" string0="$MODULE_DIR$/config/locales" />
</component>
<component name="RakeTasksCache">
<option name="myRootTask">
<RakeTaskImpl id="rake" />
</option>
</component>
</module>

6
.idea/vcs.xml generated
View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View file

@ -12,11 +12,11 @@ module Domain::RegistryLockable
end
def apply_registry_lock
# binding.pry
return unless registry_lockable?
return if locked_by_registrant?
transaction do
self.admin_store_statuses_history = self.statuses
self.statuses |= LOCK_STATUSES
self.locked_by_registrant_at = Time.zone.now
alert_registrar_lock_changes!(lock: true)
@ -29,7 +29,7 @@ module Domain::RegistryLockable
(statuses & [DomainStatus::PENDING_DELETE_CONFIRMATION,
DomainStatus::PENDING_CREATE, DomainStatus::PENDING_UPDATE,
DomainStatus::PENDING_DELETE, DomainStatus::PENDING_RENEW,
DomainStatus::PENDING_TRANSFER, DomainStatus::FORCE_DELETE]).empty?
DomainStatus::PENDING_TRANSFER]).empty?
end
def locked_by_registrant?

View file

@ -122,7 +122,7 @@ class Domain < ApplicationRecord
def status_is_consistant
has_error = (hold_status? && statuses.include?(DomainStatus::SERVER_MANUAL_INZONE))
if !has_error && (statuses & DELETE_STATUSES).any?
has_error = statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED
has_error = statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED unless locked_by_registrant?
end
errors.add(:domains, I18n.t(:object_status_prohibits_operation)) if has_error
end

View file

@ -17,13 +17,12 @@ class RegistrantUser < User
Country.new(alpha2_code)
end
def companies(company_register = nil)
def companies(company_register = CompanyRegister::Client.new)
return [] if ident.include?('-')
[OpenStruct.new(registration_number: '43344412', company_name: 'TestFirma'),
OpenStruct.new(registration_number: '12345678', company_name: 'SuperFirma OU')]
company_register.representation_rights(citizen_personal_code: ident,
citizen_country_code: country.alpha3)
end
def contacts(representable: true)
Contact.registrant_user_contacts(self, representable: representable)

View file

@ -30,8 +30,8 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase
assert @domain.locked_by_registrant?
@domain.remove_registry_lock
assert_not @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED
assert_not @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED
assert @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED
assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED
assert_not @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED
end
@ -156,6 +156,32 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase
assert @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED
assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED
assert @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED
@domain.remove_registry_lock
assert @domain.statuses.include? DomainStatus::FORCE_DELETE
assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED
assert @domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED
end
def test_set_force_delete_for_locked_domain
assert @domain.apply_registry_lock
@domain.schedule_force_delete(type: :soft)
@domain.reload
assert @domain.force_delete_scheduled?
assert @domain.statuses.include? DomainStatus::FORCE_DELETE
assert @domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED
assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED
assert @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED
@domain.cancel_force_delete
assert @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED
assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED
assert @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED
end