From c257983cdd40edc2ddf4d283f9c157e6468988bc Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 9 Oct 2017 04:43:37 +0300 Subject: [PATCH] Use DELETE when signing out from registrar area #599 --- .../registrar/base/_current_user.html.erb | 3 +++ app/views/registrar/base/_navbar.haml | 13 ++---------- config/locales/en.yml | 1 - config/locales/registrar/base.en.yml | 5 +++++ config/routes.rb | 2 +- spec/features/registrar/sign_out_spec.rb | 15 ++++++++++++++ spec/requests/registrar/sign_out_spec.rb | 20 +++++++++++++++++++ 7 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 app/views/registrar/base/_current_user.html.erb create mode 100644 config/locales/registrar/base.en.yml create mode 100644 spec/features/registrar/sign_out_spec.rb create mode 100644 spec/requests/registrar/sign_out_spec.rb diff --git a/app/views/registrar/base/_current_user.html.erb b/app/views/registrar/base/_current_user.html.erb new file mode 100644 index 000000000..9c82b37f0 --- /dev/null +++ b/app/views/registrar/base/_current_user.html.erb @@ -0,0 +1,3 @@ +<%= "#{current_user} (#{current_user.roles.first}) - #{current_user.registrar}" %> +| +<%= link_to t('.sign_out'), registrar_destroy_user_session_path, method: :delete %> diff --git a/app/views/registrar/base/_navbar.haml b/app/views/registrar/base/_navbar.haml index 160b455ed..2f6f77171 100644 --- a/app/views/registrar/base/_navbar.haml +++ b/app/views/registrar/base/_navbar.haml @@ -16,14 +16,5 @@ - active_class = ['registrar/xml_consoles'].include?(params[:controller]) ? 'active' :nil %li{class: active_class}= link_to t(:xml_console), registrar_xml_console_path - %ul.nav.navbar-nav.navbar-right - %li.dropdown - %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"} - = "#{current_user} (#{current_user.roles.first}) - #{current_user.registrar}" - %span.caret - %ul.dropdown-menu{role: "menu"} - - current_user.linked_users.each do |user| - %li= link_to "#{user} (#{user.roles.first}) - #{user.registrar}", registrar_switch_current_user_path(user), - id: "switch-current-user-#{user.id}-btn" - - if user_signed_in? - %li= link_to t(:log_out_), '/registrar/logout' + %div.navbar-text.navbar-right + = render 'current_user' diff --git a/config/locales/en.yml b/config/locales/en.yml index 6153e319f..ef8762917 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -816,7 +816,6 @@ en: notes: Notes active_price_for_this_operation_is: 'Active price for this operation is %{price}' active_price_missing_for_this_operation: 'Active price missing for this operation!' - log_out_: 'Log out' valid_to_from: 'Valid to from' valid_to_until: 'Valid to until' registrant_ident: 'Registrant ident' diff --git a/config/locales/registrar/base.en.yml b/config/locales/registrar/base.en.yml new file mode 100644 index 000000000..a00df6750 --- /dev/null +++ b/config/locales/registrar/base.en.yml @@ -0,0 +1,5 @@ +en: + registrar: + base: + current_user: + sign_out: Log out diff --git a/config/routes.rb b/config/routes.rb index 685c7dd07..0f83e9aef 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -44,7 +44,7 @@ Rails.application.routes.draw do post 'id' => 'sessions#id' post 'mid' => 'sessions#mid' get 'switch_user/:id' => 'sessions#switch_user' - get 'logout' => '/devise/sessions#destroy' + delete 'logout', to: '/devise/sessions#destroy', as: :destroy_user_session end get 'current_user/switch/:new_user_id', to: 'current_user#switch', as: :switch_current_user diff --git a/spec/features/registrar/sign_out_spec.rb b/spec/features/registrar/sign_out_spec.rb new file mode 100644 index 000000000..33acc52ab --- /dev/null +++ b/spec/features/registrar/sign_out_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +RSpec.feature 'Registrar area sign-out', settings: false do + background do + Setting.registrar_ip_whitelist_enabled = false + sign_in_to_registrar_area(user: create(:api_user_with_unlimited_balance)) + end + + scenario 'signs the user out' do + visit registrar_root_path + click_on t('registrar.base.current_user.sign_out') + + expect(page).to have_text('Signed out successfully.') + end +end diff --git a/spec/requests/registrar/sign_out_spec.rb b/spec/requests/registrar/sign_out_spec.rb new file mode 100644 index 000000000..fa8ccdd10 --- /dev/null +++ b/spec/requests/registrar/sign_out_spec.rb @@ -0,0 +1,20 @@ +require 'rails_helper' + +RSpec.describe 'Registrar area sign-out', settings: false do + describe 'sign-out' do + before do + sign_in_to_registrar_area + end + + it 'signs the user out' do + delete registrar_destroy_user_session_path + follow_redirect! + expect(controller.current_user).to be_nil + end + + it 'redirects to login url' do + delete registrar_destroy_user_session_path + expect(response).to redirect_to(registrar_login_url) + end + end +end