From 4d809e984dd7fb2fadd7d93dd62e3866c3b784dc Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Silva Date: Wed, 30 Mar 2022 16:22:22 -0300 Subject: [PATCH] FEATURE: DiscourseEvent hook for sync_sso (#16329) --- app/controllers/admin/users_controller.rb | 1 + spec/requests/admin/users_controller_spec.rb | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index f8263615577..04b1dcceb44 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -455,6 +455,7 @@ class Admin::UsersController < Admin::AdminController begin user = sso.lookup_or_create_user + DiscourseEvent.trigger(:sync_sso, user) render_serialized(user, AdminDetailedUserSerializer, root: false) rescue ActiveRecord::RecordInvalid => ex render json: failed_json.merge(message: ex.message), status: 403 diff --git a/spec/requests/admin/users_controller_spec.rb b/spec/requests/admin/users_controller_spec.rb index e4d25e6c247..bb6aac7e242 100644 --- a/spec/requests/admin/users_controller_spec.rb +++ b/spec/requests/admin/users_controller_spec.rb @@ -1075,6 +1075,24 @@ RSpec.describe Admin::UsersController do expect(user.ip_address).to be_blank end + it "triggers :sync_sso DiscourseEvent" do + sso.name = "Bob The Bob" + sso.username = "bob" + sso.email = "bob@bob.com" + sso.external_id = "1" + + user = DiscourseConnect.parse(sso.payload, secure_session: read_secure_session).lookup_or_create_user + + sso.name = "Bill" + sso.username = "Hokli$$!!" + sso.email = "bob2@bob.com" + + events = DiscourseEvent.track_events do + post "/admin/users/sync_sso.json", params: Rack::Utils.parse_query(sso.payload) + end + expect(events).to include(event_name: :sync_sso, params: [user]) + end + it 'should return the right message if the record is invalid' do sso.email = "" sso.name = ""