Merge pull request #1063 from internetee/require-reserved-domain-password

Require reserved domain password
This commit is contained in:
Timo Võhmar 2019-01-04 18:00:21 +02:00 committed by GitHub
commit 012d53c9a4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 109 additions and 39 deletions

View file

@ -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

View file

@ -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

View file

@ -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')

View file

@ -0,0 +1,40 @@
<%= form_for([:admin, @domain], html: { class: 'form-horizontal' }) do |f| %>
<%= render 'shared/full_errors', object: @domain %>
<div class="row">
<div class="col-md-8">
<div class="panel panel-default">
<div class="panel-heading clearfix">
<div class="pull-left">
<%= t(:general) %>
</div>
</div>
<div class="panel-body">
<div class="form-group">
<div class="col-md-4 control-label">
<%= f.label :name %>
</div>
<div class="col-md-7">
<%= f.text_field(:name, class: 'form-control', disabled: !f.object.new_record?) %>
</div>
</div>
<div class="form-group">
<div class="col-md-4 control-label">
<%= f.label :password %>
</div>
<div class="col-md-7">
<%= f.text_field(:password, placeholder: t(:optional), class: 'form-control') %>
<span class="help-block"><%= t '.password_hint' %></span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8 text-right">
<%= button_tag(t(:save), class: 'btn btn-primary') %>
</div>
</div>
<% end %>

View file

@ -5,3 +5,6 @@ en:
title: Reserved domains
new_btn: New reserved domain
reset_btn: Reset
form:
password_hint: Generated automatically if left blank

View file

@ -0,0 +1,5 @@
class ChangeReservedDomainsPasswordToNotNull < ActiveRecord::Migration
def change
change_column_null :reserved_domains, :password, false
end
end

View file

@ -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');

3
test/fixtures/reserved_domains.yml vendored Normal file
View file

@ -0,0 +1,3 @@
one:
name: reserved.test
password: reserved-001

View file

@ -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

View file

@ -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