mirror of
https://github.com/internetee/registry.git
synced 2025-08-27 11:33:32 +02:00
Merge pull request #2825 from internetee/2823-send-poll-messages-when-admin-adds-or-removed-statuses-on-a-domain
feat(admin): notify registrar about domain status changes
This commit is contained in:
commit
7f33fd386e
3 changed files with 63 additions and 20 deletions
40
Dockerfile
40
Dockerfile
|
@ -1,4 +1,4 @@
|
||||||
FROM --platform=linux/amd64 ruby:3.0.3-slim-buster
|
FROM --platform=linux/amd64 ruby:3.0.3-bullseye
|
||||||
|
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
RUN apt-get update > /dev/null && apt-get install -y --no-install-recommends > /dev/null \
|
RUN apt-get update > /dev/null && apt-get install -y --no-install-recommends > /dev/null \
|
||||||
|
@ -29,27 +29,27 @@ RUN apt-get update > /dev/null && apt-get install -y --no-install-recommends > /
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# add repository for Node.js in the LTS version
|
# add repository for Node.js in the LTS version
|
||||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
|
||||||
|
|
||||||
RUN apt-get install -y --no-install-recommends > /dev/null \
|
RUN apt-get install -y --no-install-recommends > /dev/null \
|
||||||
nodejs=* \
|
nodejs \
|
||||||
qt5-default=* \
|
qtbase5-dev \
|
||||||
libqt5webkit5-dev=* \
|
libqt5webkit5-dev \
|
||||||
gstreamer1.0-plugins-base=* \
|
gstreamer1.0-plugins-base \
|
||||||
libappindicator3-1=* \
|
libappindicator3-1 \
|
||||||
gstreamer1.0-tools=* \
|
gstreamer1.0-tools \
|
||||||
qtdeclarative5-dev=* \
|
qtdeclarative5-dev \
|
||||||
fonts-liberation=* \
|
fonts-liberation \
|
||||||
gstreamer1.0-x=* \
|
gstreamer1.0-x \
|
||||||
libasound2=* \
|
libasound2 \
|
||||||
libnspr4=* \
|
libnspr4 \
|
||||||
libnss3=* \
|
libnss3 \
|
||||||
libxss1=* \
|
libxss1 \
|
||||||
libxtst6=* \
|
libxtst6 \
|
||||||
xdg-utils=* \
|
xdg-utils \
|
||||||
qtdeclarative5-dev=* \
|
qtdeclarative5-dev \
|
||||||
fonts-liberation=* \
|
fonts-liberation \
|
||||||
gstreamer1.0-x=* \
|
gstreamer1.0-x \
|
||||||
wkhtmltopdf \
|
wkhtmltopdf \
|
||||||
libxslt1-dev \
|
libxslt1-dev \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
|
|
|
@ -31,6 +31,7 @@ module Admin
|
||||||
|
|
||||||
if @domain.update(dp)
|
if @domain.update(dp)
|
||||||
flash[:notice] = I18n.t('domain_updated')
|
flash[:notice] = I18n.t('domain_updated')
|
||||||
|
inform_registrar_about_status_changes
|
||||||
redirect_to [:admin, @domain]
|
redirect_to [:admin, @domain]
|
||||||
else
|
else
|
||||||
@domain.reload
|
@domain.reload
|
||||||
|
@ -111,6 +112,22 @@ module Admin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def inform_registrar_about_status_changes
|
||||||
|
return unless @domain.saved_change_to_statuses?
|
||||||
|
|
||||||
|
old_statuses, new_statuses = @domain.saved_change_to_statuses
|
||||||
|
removed = old_statuses - new_statuses
|
||||||
|
added = new_statuses - old_statuses
|
||||||
|
|
||||||
|
added.each do |status|
|
||||||
|
@domain.registrar.notifications.create!(text: "#{status} set on domain #{@domain.name}")
|
||||||
|
end
|
||||||
|
|
||||||
|
removed.each do |status|
|
||||||
|
@domain.registrar.notifications.create!(text: "#{status} is cancelled on domain #{@domain.name}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def build_associations
|
def build_associations
|
||||||
@server_statuses = @domain.statuses.select { |x| DomainStatus::SERVER_STATUSES.include?(x) }
|
@server_statuses = @domain.statuses.select { |x| DomainStatus::SERVER_STATUSES.include?(x) }
|
||||||
@server_statuses = [nil] if @server_statuses.empty?
|
@server_statuses = [nil] if @server_statuses.empty?
|
||||||
|
|
26
test/integration/domain/domains_controller_test.rb
Normal file
26
test/integration/domain/domains_controller_test.rb
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class DomainsControllerTest < ApplicationIntegrationTest
|
||||||
|
|
||||||
|
def setup
|
||||||
|
@domain = domains(:shop)
|
||||||
|
@admin = users(:admin)
|
||||||
|
sign_in @admin
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_inform_registrar_about_status_changes
|
||||||
|
patch admin_domain_path(domains(:shop)), params: { domain: { statuses: [DomainStatus::PENDING_UPDATE,] } }
|
||||||
|
|
||||||
|
# Status OK is removed because, if:
|
||||||
|
# (statuses.length > 1) || !valid?
|
||||||
|
# then status OK is removed by manage_automatic_statuses method in domain.rb
|
||||||
|
notifications = domains(:shop).registrar.notifications.last(2)
|
||||||
|
assert_equal "#{DomainStatus::PENDING_UPDATE} set on domain #{domains(:shop).name}", notifications.first.text
|
||||||
|
assert_equal "#{DomainStatus::OK} is cancelled on domain #{domains(:shop).name}", notifications.last.text
|
||||||
|
|
||||||
|
patch admin_domain_path(domains(:shop)), params: { domain: { statuses: [DomainStatus::PENDING_DELETE_CONFIRMATION] } }
|
||||||
|
notifications = domains(:shop).registrar.notifications.last(2)
|
||||||
|
assert_equal "#{DomainStatus::PENDING_DELETE_CONFIRMATION} set on domain #{domains(:shop).name}", notifications.first.text
|
||||||
|
assert_equal "#{DomainStatus::PENDING_UPDATE} is cancelled on domain #{domains(:shop).name}", notifications.last.text
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue