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) %>
+
+
+
+
+
+
+
+
+
+ <%= 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