diff --git a/app/controllers/management/base_controller.rb b/app/controllers/management/base_controller.rb index 7d6c89b5f..144a28bfe 100644 --- a/app/controllers/management/base_controller.rb +++ b/app/controllers/management/base_controller.rb @@ -12,7 +12,7 @@ class Management::BaseController < ActionController::Base end def current_manager - @current_manager ||= Manager.find(session["manager_id"]) if session["manager_id"] + session["manager"] end def managed_user diff --git a/app/controllers/management/sessions_controller.rb b/app/controllers/management/sessions_controller.rb index 78f5a14c8..72bfdda14 100644 --- a/app/controllers/management/sessions_controller.rb +++ b/app/controllers/management/sessions_controller.rb @@ -1,9 +1,11 @@ +require "manager_authenticator" + class Management::SessionsController < ActionController::Base def create destroy_session - if manager = Manager.valid_manager(params[:login], params[:clave_usuario]) - session["manager_id"] = manager.id + if manager = ManagerAuthenticator.new(params).auth + session["manager"] = manager redirect_to management_root_path else raise ActionController::RoutingError.new('Not Found') @@ -18,7 +20,7 @@ class Management::SessionsController < ActionController::Base private def destroy_session - session["manager_id"] = nil + session["manager"] = nil end end \ No newline at end of file diff --git a/lib/manager_authenticator.rb b/lib/manager_authenticator.rb index a5b9921cc..3f0d58357 100644 --- a/lib/manager_authenticator.rb +++ b/lib/manager_authenticator.rb @@ -1,7 +1,7 @@ class ManagerAuthenticator 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 def auth diff --git a/spec/controllers/management/sessions_controller_spec.rb b/spec/controllers/management/sessions_controller_spec.rb index a1ac98279..f63cd3a56 100644 --- a/spec/controllers/management/sessions_controller_spec.rb +++ b/spec/controllers/management/sessions_controller_spec.rb @@ -2,36 +2,28 @@ require 'rails_helper' describe Management::SessionsController do - before(:all) do - create(:manager, username: "supermanager" , password: "secret") - end - describe 'Sign in' do - it "should return 404 if not username/password" do - expect { get :create }.to raise_error "Not Found" - end - - 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" + it "should return 404 if wrong credentials" do + allow_any_instance_of(ManagerAuthenticator).to receive(:auth).and_return(false) + expect { get :create, login: "nonexistent" , clave_usuario: "wrong"}.to raise_error "Not Found" end 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 end end describe 'Sign out' do it "should destroy the session and redirect" do - session[:manager_id] = 1 + session[:manager] = {user_key: "31415926" , date: "20151031135905", login: "JJB033"} delete :destroy - expect(session[:manager_id]).to be_nil + expect(session[:manager]).to be_nil expect(response).to be_redirect end end diff --git a/spec/features/management/document_verifications_spec.rb b/spec/features/management/document_verifications_spec.rb index 4a9f8c44e..6e43dc1cf 100644 --- a/spec/features/management/document_verifications_spec.rb +++ b/spec/features/management/document_verifications_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' feature 'DocumentVerifications' do background do - login_as_manager(create(:manager)) + login_as_manager end scenario 'Verifying a level 3 user shows an "already verified" page' do diff --git a/spec/features/management/email_verifications_spec.rb b/spec/features/management/email_verifications_spec.rb index 96c0c78ed..cb695a0f7 100644 --- a/spec/features/management/email_verifications_spec.rb +++ b/spec/features/management/email_verifications_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' feature 'EmailVerifications' do scenario 'Verifying a level 1 user via email' do - login_as_manager(create(:manager)) + login_as_manager user = create(:user) diff --git a/spec/features/management/managed_users_spec.rb b/spec/features/management/managed_users_spec.rb index dc0c3f3e0..48b1809af 100644 --- a/spec/features/management/managed_users_spec.rb +++ b/spec/features/management/managed_users_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' feature 'Managed User' do background do - login_as_manager(create(:manager)) + login_as_manager end context "Currently managed user" do @@ -47,7 +47,7 @@ feature 'Managed User' do end 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) @@ -71,7 +71,7 @@ feature 'Managed User' do end scenario "User is created as level three from scratch" do - login_as_manager(create(:manager)) + login_as_manager visit management_document_verifications_path fill_in 'document_verification_document_number', with: '1234' diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index 6c54dc04d..a035c600d 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -3,8 +3,7 @@ require 'rails_helper' feature 'Proposals' do background do - manager = create(:manager) - login_as_manager(manager) + login_as_manager end context "Create" do diff --git a/spec/features/management/users_spec.rb b/spec/features/management/users_spec.rb index bb2ffe7b4..2e2564df8 100644 --- a/spec/features/management/users_spec.rb +++ b/spec/features/management/users_spec.rb @@ -4,7 +4,7 @@ feature 'users' do scenario 'Creating a level 3 user from scratch' do - login_as_manager(create(:manager)) + login_as_manager visit management_document_verifications_path fill_in 'document_verification_document_number', with: '1234' diff --git a/spec/support/common_actions.rb b/spec/support/common_actions.rb index d57a5eaac..b53ff2816 100644 --- a/spec/support/common_actions.rb +++ b/spec/support/common_actions.rb @@ -24,8 +24,10 @@ module CommonActions click_button 'Log in' end - def login_as_manager(manager) - visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + def login_as_manager + 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 def login_managed_user(user)