From 6dac732a7f3a647d70ad823c932ba0bce74b0969 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Tue, 8 Dec 2020 17:52:53 +0100 Subject: [PATCH] Move invitation invalidation to service --- app/controllers/signup_controller.rb | 2 -- app/services/create_account.rb | 7 ++++++- spec/services/create_account_spec.rb | 22 ++++++++++++++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/controllers/signup_controller.rb b/app/controllers/signup_controller.rb index 541c31d..a355b75 100644 --- a/app/controllers/signup_controller.rb +++ b/app/controllers/signup_controller.rb @@ -104,7 +104,5 @@ class SignupController < ApplicationController password: @user.password, invitation: @invitation ) - - @invitation.update! invited_user_id: @user.id, used_at: DateTime.now end end diff --git a/app/services/create_account.rb b/app/services/create_account.rb index c4a3d58..e000631 100644 --- a/app/services/create_account.rb +++ b/app/services/create_account.rb @@ -8,8 +8,9 @@ class CreateAccount < ApplicationService end def call - create_user_in_database + user = create_user_in_database add_ldap_document + update_invitation(user.id) if @invitation.present? end private @@ -24,6 +25,10 @@ class CreateAccount < ApplicationService ) end + def update_invitation(user_id) + @invitation.update! invited_user_id: user_id, used_at: DateTime.now + end + def add_ldap_document dn = "cn=#{@username},ou=kosmos.org,cn=users,dc=kosmos,dc=org" attr = { diff --git a/spec/services/create_account_spec.rb b/spec/services/create_account_spec.rb index c691f75..8641beb 100644 --- a/spec/services/create_account_spec.rb +++ b/spec/services/create_account_spec.rb @@ -23,6 +23,28 @@ RSpec.describe CreateAccount, type: :model do end end + describe "#update_invitation" do + let(:invitation) { create :invitation } + let(:service) { CreateAccount.new( + username: 'isaacnewton', + email: 'isaacnewton@example.com', + password: 'bright-ideas-in-autumn', + invitation: invitation + )} + + before(:each) do + service.send(:update_invitation, 23) + end + + it "marks the invitation as used" do + expect(invitation.used_at).not_to be_nil + end + + it "saves the invited user's ID" do + expect(invitation.invited_user_id).to eq(23) + end + end + describe "#add_ldap_document" do let(:service) { CreateAccount.new( username: 'halfinney',