Commit 6b8eceda authored by Patricio Cano's avatar Patricio Cano

Default to manual input for `domain_whitelist`, syntax fixes and added new tests.

parent 23afb02a
...@@ -46,7 +46,6 @@ class @Admin ...@@ -46,7 +46,6 @@ class @Admin
else else
$('.blacklist-file').hide() $('.blacklist-file').hide()
$('.blacklist-raw').show() $('.blacklist-raw').show()
return
$('input[name=\'blacklist_type\']').click showBlacklistType $("input[name='blacklist_type']").click showBlacklistType
showBlacklistType() showBlacklistType()
...@@ -71,7 +71,7 @@ class ApplicationSetting < ActiveRecord::Base ...@@ -71,7 +71,7 @@ class ApplicationSetting < ActiveRecord::Base
inclusion: { in: %w(ssh http), allow_blank: true, allow_nil: true } inclusion: { in: %w(ssh http), allow_blank: true, allow_nil: true }
validates :domain_blacklist, validates :domain_blacklist,
presence: true, presence: { message: 'Domain blacklist cannot be empty if Blacklist is enabled.' },
if: :domain_blacklist_enabled? if: :domain_blacklist_enabled?
validates_each :restricted_visibility_levels do |record, attr, value| validates_each :restricted_visibility_levels do |record, attr, value|
......
...@@ -125,7 +125,7 @@ ...@@ -125,7 +125,7 @@
.form-group .form-group
= f.label :domain_whitelist, 'Whitelisted domains for sign-ups', class: 'control-label col-sm-2' = f.label :domain_whitelist, 'Whitelisted domains for sign-ups', class: 'control-label col-sm-2'
.col-sm-10 .col-sm-10
= f.text_area :domain_whitelist_raw, placeholder: 'domain.com', class: 'form-control' = f.text_area :domain_whitelist_raw, placeholder: 'domain.com', class: 'form-control', rows: 8
.help-block ONLY users with e-mail addresses that match these domain(s) will be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com .help-block ONLY users with e-mail addresses that match these domain(s) will be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com
.form-group .form-group
= f.label :domain_blacklist_enabled, 'Domain Blacklist', class: 'control-label col-sm-2' = f.label :domain_blacklist_enabled, 'Domain Blacklist', class: 'control-label col-sm-2'
...@@ -138,12 +138,12 @@ ...@@ -138,12 +138,12 @@
.col-sm-offset-2.col-sm-10 .col-sm-offset-2.col-sm-10
.radio .radio
= label_tag :blacklist_type_file do = label_tag :blacklist_type_file do
= radio_button_tag :blacklist_type, :file, @application_setting.domain_blacklist.blank? = radio_button_tag :blacklist_type, :file
.option-title .option-title
Upload blacklist file Upload blacklist file
.radio .radio
= label_tag :blacklist_type_raw do = label_tag :blacklist_type_raw do
= radio_button_tag :blacklist_type, :raw, @application_setting.domain_blacklist.present? = radio_button_tag :blacklist_type, :raw, @application_setting.domain_blacklist.present? || @application_setting.domain_blacklist.blank?
.option-title .option-title
Enter blacklist manually Enter blacklist manually
.form-group.blacklist-file .form-group.blacklist-file
...@@ -154,7 +154,7 @@ ...@@ -154,7 +154,7 @@
.form-group.blacklist-raw .form-group.blacklist-raw
= f.label :domain_blacklist, 'Blacklisted domains for sign-ups', class: 'control-label col-sm-2' = f.label :domain_blacklist, 'Blacklisted domains for sign-ups', class: 'control-label col-sm-2'
.col-sm-10 .col-sm-10
= f.text_area :domain_blacklist_raw, placeholder: 'domain.com', class: 'form-control', rows: 10 = f.text_area :domain_blacklist_raw, placeholder: 'domain.com', class: 'form-control', rows: 8
.help-block Users with e-mail addresses that match these domain(s) will NOT be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com .help-block Users with e-mail addresses that match these domain(s) will NOT be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com
.form-group .form-group
......
...@@ -95,8 +95,18 @@ describe ApplicationSetting, models: true do ...@@ -95,8 +95,18 @@ describe ApplicationSetting, models: true do
expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com') expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com')
end end
it 'set multiple domains with semicolon' do
setting.domain_blacklist_raw = "example.com; *.example.com"
expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com')
end
it 'set multiple domains with mixture of everything' do
setting.domain_blacklist_raw = "example.com; *.example.com\n test.com\sblock.com yes.com"
expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com', 'test.com', 'block.com', 'yes.com')
end
it 'set multiple domain with file' do it 'set multiple domain with file' do
setting.domain_blacklist_file = File.open(Rails.root.join('spec/fixtures/', 'blacklist.txt')) setting.domain_blacklist_file = File.open(Rails.root.join('spec/fixtures/', 'domain_blacklist.txt'))
expect(setting.domain_blacklist).to contain_exactly('example.com', 'test.com', 'foo.bar') expect(setting.domain_blacklist).to contain_exactly('example.com', 'test.com', 'foo.bar')
end end
end end
......
...@@ -148,7 +148,7 @@ describe User, models: true do ...@@ -148,7 +148,7 @@ describe User, models: true do
allow_any_instance_of(ApplicationSetting).to receive(:domain_blacklist).and_return(['example.com']) allow_any_instance_of(ApplicationSetting).to receive(:domain_blacklist).and_return(['example.com'])
end end
context 'when a signup domain is black listed' do context 'when a signup domain is blacklisted' do
it 'accepts info@test.com' do it 'accepts info@test.com' do
user = build(:user, email: 'info@test.com') user = build(:user, email: 'info@test.com')
expect(user).to be_valid expect(user).to be_valid
...@@ -160,7 +160,7 @@ describe User, models: true do ...@@ -160,7 +160,7 @@ describe User, models: true do
end end
end end
context 'when a signup domain is black listed but a wildcard subdomain is allowed' do context 'when a signup domain is blacklisted but a wildcard subdomain is allowed' do
before do before do
allow_any_instance_of(ApplicationSetting).to receive(:domain_blacklist).and_return(['test.example.com']) allow_any_instance_of(ApplicationSetting).to receive(:domain_blacklist).and_return(['test.example.com'])
allow_any_instance_of(ApplicationSetting).to receive(:domain_whitelist).and_return(['*.example.com']) allow_any_instance_of(ApplicationSetting).to receive(:domain_whitelist).and_return(['*.example.com'])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment