Better flash messages, sessions spec

This commit is contained in:
Martin Lensment 2014-09-25 16:37:36 +03:00
parent 662806d8c9
commit 482d77c319
12 changed files with 77 additions and 8 deletions

View file

@ -1,7 +1,6 @@
body {
padding-top: 40px;
padding-bottom: 40px;
background-color: #eee;
}
.form-signin {

View file

@ -1,4 +1,4 @@
class Admin::ContactsController < ApplicationController
class Admin::ContactsController < AdminController
# TODO created_by and updated_by ids
before_action :set_contact, only: [:show, :destroy, :edit, :update]

View file

@ -1,4 +1,4 @@
class Admin::DomainsController < ApplicationController
class Admin::DomainsController < AdminController
before_action :set_domain, only: [:show, :edit, :update, :destroy]
before_action :verify_deletion, only: [:destroy]

View file

@ -1,4 +1,4 @@
class Admin::RegistrarsController < ApplicationController
class Admin::RegistrarsController < AdminController
def search
render json: Registrar.search_by_query(params[:q])
end

View file

@ -1,4 +1,4 @@
class Admin::SettingGroupsController < ApplicationController
class Admin::SettingGroupsController < AdminController
before_action :set_setting_group, only: [:show, :update]
def index

View file

@ -0,0 +1,7 @@
class AdminController < ApplicationController
before_action :verify_admin
def verify_admin
redirect_to client_root_path unless current_user.try(:admin?)
end
end

View file

@ -2,7 +2,8 @@ class Client::DomainsController < ClientController
include Shared::CommonDomain
def index
@q = current_user.registrar.domains.search(params[:q])
@q = Domain.search(params[:q]) if current_user.admin?
@q = current_user.registrar.domains.search(params[:q]) unless current_user.admin?
@domains = @q.result.page(params[:page])
end

View file

@ -1,8 +1,10 @@
class SessionsController < Devise::SessionsController
def create
if Rails.env.development?
if Rails.env.development? || Rails.env.test?
@user = User.find_by(username: 'gitlab') if params[:gitlab]
@user = User.find_by(username: 'zone') if params[:zone]
flash[:notice] = I18n.t('shared.welcome')
sign_in_and_redirect @user, :event => :authentication
return
end

View file

@ -14,9 +14,13 @@
%body
.container
.form-signin
- display = (flash.empty?) ? 'none' : 'block'
#flash{style: "display: #{display};"}
- type = (flash[:notice]) ? 'bg-success' : 'bg-danger'
.alert{class: type}= flash[:notice] || flash[:alert]
%h2.form-signin-heading.text-center Eesti Interneti SA
%hr
- if Rails.env.development?
- if Rails.env.development? || Rails.env.test?
= button_to 'ID card (gitlab)', 'sessions', class: 'btn btn-lg btn-primary btn-block', name: 'gitlab'
= button_to 'ID card (zone)', 'sessions', class: 'btn btn-lg btn-primary btn-block', name: 'zone'
-else

View file

@ -297,3 +297,4 @@ en:
domain_was_not_found: 'Domain was not found!'
domain_list: 'Domain list'
register_new_domain: 'Register new domain'
welcome: 'Welcome!'

View file

@ -0,0 +1,8 @@
Fabricator(:user) do
username 'gitlab'
password 'ghyt9e4fu'
email 'info@gitlab.eu'
identity_code '37810013108'
admin true
registrar
end

View file

@ -0,0 +1,47 @@
require 'rails_helper'
feature 'Sessions', type: :feature do
let(:elkdata) { Fabricate(:registrar, { name: 'Elkdata', reg_no: '123' }) }
let(:zone) { Fabricate(:registrar) }
background do
Fabricate(:user, registrar: zone)
Fabricate(:user, registrar: zone, username: 'zone', admin: false)
Fabricate(:domain_validation_setting_group)
Fabricate.times(2, :domain, registrar: zone)
Fabricate.times(2, :domain, registrar: elkdata)
end
scenario 'Admin logs in' do
visit root_path
expect(page).to have_button('ID card (gitlab)')
expect(page).to have_button('ID card (zone)')
click_on 'ID card (gitlab)'
expect(page).to have_text('Welcome!')
uri = URI.parse(current_url)
expect(uri.path).to eq(admin_root_path)
expect(page).to have_link('Elkdata', count: 2)
expect(page).to have_link('Zone Media OÜ', count: 2)
end
scenario 'Client logs in' do
visit root_path
click_on 'ID card (zone)'
expect(page).to have_text('Welcome!')
uri = URI.parse(current_url)
expect(uri.path).to eq(client_root_path)
zone.domains.pluck(:name).each do |name|
expect(page).to have_link(name)
end
elkdata.domains.pluck(:name).each do |name|
expect(page).to_not have_link(name)
end
end
end