Refactor settings

This commit is contained in:
Martin Lensment 2014-10-15 17:49:42 +03:00
parent 26f5eda636
commit dafcb6f78c
25 changed files with 132 additions and 282 deletions

View file

@ -11,8 +11,7 @@ describe 'EPP Contact', epp: true do
Fabricate(:epp_user)
Fabricate(:epp_user, username: 'zone', registrar: zone)
Fabricate(:epp_user, username: 'elkdata', registrar: elkdata)
Fabricate(:domain_validation_setting_group)
Fabricate(:dnskeys_setting_group)
create_settings
end
context 'create command' do

View file

@ -6,14 +6,12 @@ describe 'EPP Domain', epp: true do
let(:elkdata) { Fabricate(:registrar, { name: 'Elkdata', reg_no: '123' }) }
let(:zone) { Fabricate(:registrar) }
before(:each) { create_settings }
context 'with valid user' do
before(:each) do
Fabricate(:epp_user, username: 'zone', registrar: zone)
Fabricate(:epp_user, username: 'elkdata', registrar: elkdata)
Fabricate(:domain_validation_setting_group)
Fabricate(:domain_statuses_setting_group)
Fabricate(:dnskeys_setting_group)
end
it 'returns error if contact does not exists' do
@ -36,7 +34,6 @@ describe 'EPP Domain', epp: true do
let(:domain) { Domain.first }
before(:each) do
Fabricate(:domain_general_setting_group)
Fabricate(:domain, name: 'example.ee', registrar: zone)
end
@ -65,8 +62,7 @@ describe 'EPP Domain', epp: true do
expect(domain.registrar).to eq(elkdata)
s = Setting.find_by(code: 'transfer_wait_time')
s.update(value: 1)
Setting.transfer_wait_time = 1
domain.reload
pw = domain.auth_info
@ -209,8 +205,8 @@ describe 'EPP Domain', epp: true do
expect(key.ds_alg).to eq(3)
expect(key.ds_key_tag).to_not be_blank
sg = SettingGroup.dnskeys
expect(key.ds_digest_type).to eq(sg.setting(Setting::DS_ALGORITHM).value.to_i)
expect(key.ds_digest_type).to eq(Setting.ds_algorithm)
expect(key.flags).to eq(257)
expect(key.protocol).to eq(3)
expect(key.alg).to eq(5)
@ -297,7 +293,7 @@ describe 'EPP Domain', epp: true do
response = epp_request(xml, :xml)
expect(response[:result_code]).to eq('2004')
expect(response[:msg]).to eq('Nameservers count must be between 1-13')
expect(response[:msg]).to eq('Nameservers count must be between 2-11')
end
it 'returns error when invalid nameservers are present' do
@ -391,7 +387,7 @@ describe 'EPP Domain', epp: true do
key_1 = d.dnskeys[0]
expect(key_1.ds_key_tag).to_not be_blank
expect(key_1.ds_alg).to eq(3)
expect(key_1.ds_digest_type).to eq(SettingGroup.dnskeys.setting(Setting::DS_ALGORITHM).value.to_i)
expect(key_1.ds_digest_type).to eq(Setting.ds_algorithm)
expect(d.dnskeys.pluck(:flags)).to match_array([257, 0, 256])
expect(d.dnskeys.pluck(:protocol)).to match_array([3, 3, 3])
@ -484,9 +480,7 @@ describe 'EPP Domain', epp: true do
end
it 'validated dnskeys count' do
s = Setting.find_by(code: 'dnskeys_max_count')
s.value = 1
s.save
Setting.dnskeys_max_count = 1
xml = domain_create_xml({}, {
_other: [
@ -572,10 +566,7 @@ describe 'EPP Domain', epp: true do
end
it 'prohibits dsData with key' do
sg = SettingGroup.dnskeys
s = sg.setting(Setting::ALLOW_DS_DATA_WITH_KEYS)
s.value = 0
s.save
Setting.ds_data_with_key_allowed = false
xml = domain_create_xml({}, {
_other: [
@ -600,10 +591,7 @@ describe 'EPP Domain', epp: true do
end
it 'prohibits dsData' do
sg = SettingGroup.dnskeys
s = sg.setting(Setting::ALLOW_DS_DATA)
s.value = 0
s.save
Setting.ds_data_allowed = false
xml = domain_create_xml({}, {
_other: [
@ -628,10 +616,7 @@ describe 'EPP Domain', epp: true do
end
it 'prohibits keyData' do
sg = SettingGroup.dnskeys
s = sg.setting(Setting::ALLOW_KEY_DATA)
s.value = 0
s.save
Setting.key_data_allowed = false
xml = domain_create_xml({}, {
_other: [

View file

@ -1,3 +0,0 @@
Fabricator(:setting) do
code 'ns_min_count'
end

View file

@ -1,52 +0,0 @@
Fabricator(:setting_group) do
code 'domain_validation'
settings do
[
Fabricate(:setting, code: 'ns_min_count', value: 1),
Fabricate(:setting, code: 'ns_max_count', value: 13)
]
end
end
Fabricator(:domain_validation_setting_group, from: :setting_group) do
code 'domain_validation'
settings do
[
Fabricate(:setting, code: 'ns_min_count', value: 1),
Fabricate(:setting, code: 'ns_max_count', value: 13),
Fabricate(:setting, code: 'dnskeys_min_count', value: 0),
Fabricate(:setting, code: 'dnskeys_max_count', value: 9)
]
end
end
Fabricator(:domain_statuses_setting_group, from: :setting_group) do
code 'domain_statuses'
settings do
[
Fabricate(:setting, code: 'client_hold', value: 'clientHold'),
Fabricate(:setting, code: 'client_update_prohibited', value: 'clientUpdateProhibited')
]
end
end
Fabricator(:domain_general_setting_group, from: :setting_group) do
code 'domain_general'
settings do
[
Fabricate(:setting, code: 'transfer_wait_time', value: '0')
]
end
end
Fabricator(:dnskeys_setting_group, from: :setting_group) do
code 'dnskeys'
settings do
[
Fabricate(:setting, code: Setting::DS_ALGORITHM, value: 2),
Fabricate(:setting, code: Setting::ALLOW_DS_DATA, value: 1),
Fabricate(:setting, code: Setting::ALLOW_DS_DATA_WITH_KEYS, value: 1),
Fabricate(:setting, code: Setting::ALLOW_KEY_DATA, value: 1)
]
end
end

View file

@ -50,8 +50,7 @@ describe Contact, '#relations_with_domain?' do
context 'with relation' do
before(:each) do
Fabricate(:domain_validation_setting_group)
Fabricate(:dnskeys_setting_group)
create_settings
Fabricate(:domain)
end

View file

@ -2,8 +2,7 @@ require 'rails_helper'
describe Dnskey do
before(:each) do
Fabricate(:domain_validation_setting_group)
Fabricate(:dnskeys_setting_group)
create_settings
end
it { should belong_to(:domain) }

View file

@ -11,8 +11,7 @@ describe Domain do
context 'with sufficient settings' do
before(:each) do
Fabricate(:domain_validation_setting_group)
Fabricate(:dnskeys_setting_group)
create_settings
end
it 'validates domain name' do
@ -51,20 +50,13 @@ describe Domain do
period: ['is not a number'],
owner_contact: ['Registrant is missing'],
admin_contacts: ['Admin contacts count must be between 1 - infinity'],
nameservers: ['Nameservers count must be between 1-13'],
nameservers: ['Nameservers count must be between 2-11'],
registrar: ['Registrar is missing'],
period: ['Period is not a number']
})
sg = SettingGroup.domain_validation
min = sg.setting(:ns_min_count)
max = sg.setting(:ns_max_count)
min.value = 2
min.save
max.value = 7
max.save
Setting.ns_min_count = 2
Setting.ns_max_count = 7
expect(d.valid?).to be false
expect(d.errors.messages[:nameservers]).to eq(['Nameservers count must be between 2-7'])

View file

@ -1,5 +0,0 @@
require 'rails_helper'
describe SettingGroup do
it { should have_many(:settings) }
end

View file

@ -1,21 +1,12 @@
require 'rails_helper'
describe Setting do
it { should belong_to(:setting_group) }
it 'validates code uniqueness' do
sg = Fabricate(:setting_group)
sg.settings.build(code: 'this_is_code')
expect(sg.save).to be true
sg.settings.build(code: 'this_is_code')
expect(sg.save).to be false
err = sg.settings.last.errors[:code].first
expect(err).to eq('Code already exists')
sg_2 = Fabricate(:setting_group, code: 'domain_statuses')
sg_2.settings.build(code: 'this_is_code')
expect(sg_2.save).to be true
it 'returns value' do
create_settings
expect(Setting.ns_min_count).to eq(2)
Setting.ns_min_count = '2'
expect(Setting.ns_min_count).to eq('2')
Setting.ns_min_count = true
expect(Setting.ns_min_count).to eq(true)
end
end

20
spec/support/general.rb Normal file
View file

@ -0,0 +1,20 @@
module General
def create_settings
Setting.ds_algorithm = 2
Setting.ds_data_allowed = true
Setting.ds_data_with_key_allowed = true
Setting.key_data_allowed = true
Setting.dnskeys_min_count = 0
Setting.dnskeys_max_count = 9
Setting.ns_min_count = 2
Setting.ns_max_count = 11
Setting.transfer_wait_time = 0
end
end
RSpec.configure do |c|
c.include General
end