Create user when creating gestionnaire (unified login)

This commit is contained in:
Julien Portalier 2016-10-18 15:49:46 +02:00
parent fa762dbb39
commit c8b7d0eeb3
2 changed files with 35 additions and 12 deletions

View file

@ -21,8 +21,11 @@ class Admin::GestionnairesController < AdminController
assign_gestionnaire!
end
return redirect_to admin_procedure_accompagnateurs_path(procedure_id: procedure_id) unless procedure_id.nil?
redirect_to admin_gestionnaires_path
if procedure_id
redirect_to admin_procedure_accompagnateurs_path(procedure_id: procedure_id)
else
redirect_to admin_gestionnaires_path
end
end
def destroy
@ -30,19 +33,18 @@ class Admin::GestionnairesController < AdminController
redirect_to admin_gestionnaires_path
end
def create_gestionnaire_params
params.require(:gestionnaire).permit(:email)
.merge(password: SecureRandom.hex(5))
.merge(administrateurs: [current_administrateur])
end
private
def new_gestionnaire!
@gestionnaire = Gestionnaire.create(create_gestionnaire_params)
attributes = params.require(:gestionnaire).permit(:email)
.merge(password: SecureRandom.hex(5))
@gestionnaire = Gestionnaire.create(attributes.merge(
administrateurs: [current_administrateur]
))
if @gestionnaire.errors.messages.empty?
User.create(attributes) if Features.unified_login
flash.notice = 'Accompagnateur ajouté'
GestionnaireMailer.new_gestionnaire(@gestionnaire.email, @gestionnaire.password).deliver_now!
GestionnaireMailer.new_assignement(@gestionnaire.email, current_administrateur.email).deliver_now!
@ -61,4 +63,4 @@ class Admin::GestionnairesController < AdminController
#TODO Mailer no assign_to
end
end
end
end

View file

@ -147,6 +147,27 @@ describe Admin::GestionnairesController, type: :controller do
}
end
end
context 'unified login' do
before do
allow(Features).to receive(:unified_login).and_return(true)
subject
end
it "creates associated user with same credentials" do
gestionnaire = controller.instance_variable_get(:@gestionnaire)
user = User.find_by(email: gestionnaire.email)
expect(user.valid_password?(gestionnaire.password)).to be(true)
end
context 'invalid email' do
let(:email) { 'fail' }
it "won't create associated user" do
expect(User.where(email: email).exists?).to be(false)
end
end
end
end
describe 'DELETE #destroy' do
@ -171,4 +192,4 @@ describe Admin::GestionnairesController, type: :controller do
it { expect { subject }.not_to change(Gestionnaire, :count) }
end
end
end