adds managers login via ManagerAuthenticators

This commit is contained in:
Juanjo Bazán
2015-10-15 15:57:53 +02:00
parent 3e9dc458bc
commit 89cc26c261
10 changed files with 27 additions and 32 deletions

View File

@@ -12,7 +12,7 @@ class Management::BaseController < ActionController::Base
end end
def current_manager def current_manager
@current_manager ||= Manager.find(session["manager_id"]) if session["manager_id"] session["manager"]
end end
def managed_user def managed_user

View File

@@ -1,9 +1,11 @@
require "manager_authenticator"
class Management::SessionsController < ActionController::Base class Management::SessionsController < ActionController::Base
def create def create
destroy_session destroy_session
if manager = Manager.valid_manager(params[:login], params[:clave_usuario]) if manager = ManagerAuthenticator.new(params).auth
session["manager_id"] = manager.id session["manager"] = manager
redirect_to management_root_path redirect_to management_root_path
else else
raise ActionController::RoutingError.new('Not Found') raise ActionController::RoutingError.new('Not Found')
@@ -18,7 +20,7 @@ class Management::SessionsController < ActionController::Base
private private
def destroy_session def destroy_session
session["manager_id"] = nil session["manager"] = nil
end end
end end

View File

@@ -1,7 +1,7 @@
class ManagerAuthenticator class ManagerAuthenticator
def initialize(data={}) def initialize(data={})
@manager = {login: data[:login], user_key: data[:user_key], date: data[:date]} @manager = {login: data[:login], user_key: data[:clave_usuario], date: data[:fecha_conexion]}
end end
def auth def auth

View File

@@ -2,36 +2,28 @@ require 'rails_helper'
describe Management::SessionsController do describe Management::SessionsController do
before(:all) do
create(:manager, username: "supermanager" , password: "secret")
end
describe 'Sign in' do describe 'Sign in' do
it "should return 404 if not username/password" do it "should return 404 if wrong credentials" do
expect { get :create }.to raise_error "Not Found" allow_any_instance_of(ManagerAuthenticator).to receive(:auth).and_return(false)
end expect { get :create, login: "nonexistent" , clave_usuario: "wrong"}.to raise_error "Not Found"
it "should return 404 if wrong username" do
expect { get :create, login: "nonexistent" , clave_usuario: "secret" }.to raise_error "Not Found"
end
it "should return 404 if wrong password" do
expect { get :create, login: "supermanager" , clave_usuario: "wrong" }.to raise_error "Not Found"
end end
it "should redirect to management root path if right credentials" do it "should redirect to management root path if right credentials" do
get :create, login: "supermanager" , clave_usuario: "secret" manager = {login: "JJB033", user_key: "31415926" , date: "20151031135905"}
allow_any_instance_of(ManagerAuthenticator).to receive(:auth).and_return(manager)
get :create, login: "JJB033" , clave_usuario: "31415926", fecha_conexion: "20151031135905"
expect(response).to be_redirect expect(response).to be_redirect
end end
end end
describe 'Sign out' do describe 'Sign out' do
it "should destroy the session and redirect" do it "should destroy the session and redirect" do
session[:manager_id] = 1 session[:manager] = {user_key: "31415926" , date: "20151031135905", login: "JJB033"}
delete :destroy delete :destroy
expect(session[:manager_id]).to be_nil expect(session[:manager]).to be_nil
expect(response).to be_redirect expect(response).to be_redirect
end end
end end

View File

@@ -3,7 +3,7 @@ require 'rails_helper'
feature 'DocumentVerifications' do feature 'DocumentVerifications' do
background do background do
login_as_manager(create(:manager)) login_as_manager
end end
scenario 'Verifying a level 3 user shows an "already verified" page' do scenario 'Verifying a level 3 user shows an "already verified" page' do

View File

@@ -3,7 +3,7 @@ require 'rails_helper'
feature 'EmailVerifications' do feature 'EmailVerifications' do
scenario 'Verifying a level 1 user via email' do scenario 'Verifying a level 1 user via email' do
login_as_manager(create(:manager)) login_as_manager
user = create(:user) user = create(:user)

View File

@@ -3,7 +3,7 @@ require 'rails_helper'
feature 'Managed User' do feature 'Managed User' do
background do background do
login_as_manager(create(:manager)) login_as_manager
end end
context "Currently managed user" do context "Currently managed user" do
@@ -47,7 +47,7 @@ feature 'Managed User' do
end end
scenario "User becomes verified as level two (pending email confirmation for level three)" do scenario "User becomes verified as level two (pending email confirmation for level three)" do
login_as_manager(create(:manager)) login_as_manager
user = create(:user) user = create(:user)
@@ -71,7 +71,7 @@ feature 'Managed User' do
end end
scenario "User is created as level three from scratch" do scenario "User is created as level three from scratch" do
login_as_manager(create(:manager)) login_as_manager
visit management_document_verifications_path visit management_document_verifications_path
fill_in 'document_verification_document_number', with: '1234' fill_in 'document_verification_document_number', with: '1234'

View File

@@ -3,8 +3,7 @@ require 'rails_helper'
feature 'Proposals' do feature 'Proposals' do
background do background do
manager = create(:manager) login_as_manager
login_as_manager(manager)
end end
context "Create" do context "Create" do

View File

@@ -4,7 +4,7 @@ feature 'users' do
scenario 'Creating a level 3 user from scratch' do scenario 'Creating a level 3 user from scratch' do
login_as_manager(create(:manager)) login_as_manager
visit management_document_verifications_path visit management_document_verifications_path
fill_in 'document_verification_document_number', with: '1234' fill_in 'document_verification_document_number', with: '1234'

View File

@@ -24,8 +24,10 @@ module CommonActions
click_button 'Log in' click_button 'Log in'
end end
def login_as_manager(manager) def login_as_manager
visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) login, user_key, date = "JJB042", "31415926", Time.now.strftime("%Y%m%d%H%M%S")
allow_any_instance_of(ManagerAuthenticator).to receive(:auth).and_return({login: login, user_key: user_key, date: date})
visit management_sign_in_path(login: login, clave_usuario: user_key, fecha_conexion: date)
end end
def login_managed_user(user) def login_managed_user(user)