diff --git a/app/models/blocked_domain.rb b/app/models/blocked_domain.rb index b668e3147..26d5fedd7 100644 --- a/app/models/blocked_domain.rb +++ b/app/models/blocked_domain.rb @@ -10,10 +10,6 @@ class BlockedDomain < ActiveRecord::Base def by_domain name where(name: name) end - - def any_of_domains names - where(name: names) - end end def name= val diff --git a/app/models/reserved_domain.rb b/app/models/reserved_domain.rb index 0db778fdb..3da9f1098 100644 --- a/app/models/reserved_domain.rb +++ b/app/models/reserved_domain.rb @@ -6,9 +6,6 @@ class ReservedDomain < ActiveRecord::Base validates :name, domain_name: true, uniqueness: true - - - class << self def pw_for(domain_name) name_in_ascii = SimpleIDN.to_ascii(domain_name) @@ -19,10 +16,6 @@ class ReservedDomain < ActiveRecord::Base where(name: name) end - def any_of_domains names - where(name: names) - end - def new_password_for name record = by_domain(name).first return unless record @@ -32,8 +25,6 @@ class ReservedDomain < ActiveRecord::Base end end - - def name= val super SimpleIDN.to_unicode(val) end @@ -53,17 +44,17 @@ class ReservedDomain < ActiveRecord::Base wr.json = @json = generate_json # we need @json to bind to class wr.save end + alias_method :update_whois_record, :generate_data def generate_json h = HashWithIndifferentAccess.new - h[:name] = self.name - h[:status] = ['Reserved'] + h[:name] = self.name + h[:status] = ['Reserved'] h end def remove_data UpdateWhoisRecordJob.enqueue name, 'reserved' end - end diff --git a/app/views/admin/reserved_domains/_form.haml b/app/views/admin/reserved_domains/_form.haml deleted file mode 100644 index ec7492659..000000000 --- a/app/views/admin/reserved_domains/_form.haml +++ /dev/null @@ -1,22 +0,0 @@ -= form_for([:admin, @domain], html: {class: 'form-horizontal'}) do |f| - = render 'shared/full_errors', object: @domain - - .row - .col-md-8 - .panel.panel-default - .panel-heading.clearfix - .pull-left= t(:general) - .panel-body - .form-group - .col-md-4.control-label - = f.label :name - .col-md-7 - = f.text_field(:name, class: 'form-control', disabled: !f.object.new_record?) - .form-group - .col-md-4.control-label - = f.label :password - .col-md-7 - = f.text_field(:password, placeholder: t(:optional), class: 'form-control') - .row - .col-md-8.text-right - = button_tag(t(:save), class: 'btn btn-primary') diff --git a/app/views/admin/reserved_domains/_form.html.erb b/app/views/admin/reserved_domains/_form.html.erb new file mode 100644 index 000000000..6dd266566 --- /dev/null +++ b/app/views/admin/reserved_domains/_form.html.erb @@ -0,0 +1,40 @@ +<%= form_for([:admin, @domain], html: { class: 'form-horizontal' }) do |f| %> + <%= render 'shared/full_errors', object: @domain %> + +
+
+
+
+
+ <%= t(:general) %> +
+
+
+
+
+ <%= f.label :name %> +
+
+ <%= f.text_field(:name, class: 'form-control', disabled: !f.object.new_record?) %> +
+
+
+
+ <%= f.label :password %> +
+
+ <%= f.text_field(:password, placeholder: t(:optional), class: 'form-control') %> + <%= t '.password_hint' %> +
+
+
+
+
+
+ +
+
+ <%= button_tag(t(:save), class: 'btn btn-primary') %> +
+
+<% end %> diff --git a/config/locales/admin/reserved_domains.en.yml b/config/locales/admin/reserved_domains.en.yml index 7648776a8..cc1a3c4d7 100644 --- a/config/locales/admin/reserved_domains.en.yml +++ b/config/locales/admin/reserved_domains.en.yml @@ -5,3 +5,6 @@ en: title: Reserved domains new_btn: New reserved domain reset_btn: Reset + + form: + password_hint: Generated automatically if left blank diff --git a/db/migrate/20190102144032_change_reserved_domains_password_to_not_null.rb b/db/migrate/20190102144032_change_reserved_domains_password_to_not_null.rb new file mode 100644 index 000000000..7fb21b2f1 --- /dev/null +++ b/db/migrate/20190102144032_change_reserved_domains_password_to_not_null.rb @@ -0,0 +1,5 @@ +class ChangeReservedDomainsPasswordToNotNull < ActiveRecord::Migration + def change + change_column_null :reserved_domains, :password, false + end +end diff --git a/db/structure.sql b/db/structure.sql index 98d1fbd26..6cca7b361 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -2241,7 +2241,7 @@ CREATE TABLE public.reserved_domains ( updator_str character varying, legacy_id integer, name character varying, - password character varying + password character varying NOT NULL ); @@ -4864,3 +4864,5 @@ INSERT INTO schema_migrations (version) VALUES ('20181002090319'); INSERT INTO schema_migrations (version) VALUES ('20181108154921'); +INSERT INTO schema_migrations (version) VALUES ('20190102144032'); + diff --git a/test/fixtures/reserved_domains.yml b/test/fixtures/reserved_domains.yml new file mode 100644 index 000000000..249b7904a --- /dev/null +++ b/test/fixtures/reserved_domains.yml @@ -0,0 +1,3 @@ +one: + name: reserved.test + password: reserved-001 diff --git a/test/models/reserved_domain_test.rb b/test/models/reserved_domain_test.rb new file mode 100644 index 000000000..30736d06d --- /dev/null +++ b/test/models/reserved_domain_test.rb @@ -0,0 +1,11 @@ +require 'test_helper' + +class ReservedDomainTest < ActiveSupport::TestCase + setup do + @reserved_domain = reserved_domains(:one) + end + + def test_fixture_is_valid + assert @reserved_domain.valid? + end +end diff --git a/test/system/admin_area/reserved_domains/new_test.rb b/test/system/admin_area/reserved_domains/new_test.rb new file mode 100644 index 000000000..05b740b86 --- /dev/null +++ b/test/system/admin_area/reserved_domains/new_test.rb @@ -0,0 +1,41 @@ +require 'test_helper' + +class AdminAreaReservedDomainsNewTest < ApplicationSystemTestCase + setup do + sign_in users(:admin) + end + + def test_creates_new_with_requires_attributes + visit admin_reserved_domains_url + click_on 'New reserved domain' + fill_in 'Name', with: 'reserved-new.test' + + assert_difference 'ReservedDomain.count' do + click_link_or_button 'Save' + end + assert_equal 'reserved-new.test', ReservedDomain.last.name + assert_current_path admin_reserved_domains_url + assert_text 'Domain added!' + end + + def test_generates_password_automatically_when_left_blank + visit new_admin_reserved_domain_url + fill_in 'Name', with: 'some.test' + + assert_difference 'ReservedDomain.count' do + click_link_or_button 'Save' + end + assert_not_empty ReservedDomain.last.password + end + + def test_honors_custom_password + visit new_admin_reserved_domain_url + fill_in 'Name', with: 'some.test' + fill_in 'Password', with: 'reserved-123' + + assert_difference 'ReservedDomain.count' do + click_link_or_button 'Save' + end + assert_equal 'reserved-123', ReservedDomain.last.password + end +end