From 381793243e0af6a8083be34ca0e720cdc8fa717a Mon Sep 17 00:00:00 2001 From: Arpit Jalan <arpit@techapj.com> Date: Wed, 6 Feb 2019 19:19:00 +0530 Subject: [PATCH] FIX: include error message if the "accept invite" process fails --- app/controllers/invites_controller.rb | 3 ++- config/locales/server.en.yml | 1 + spec/requests/invites_controller_spec.rb | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb index a178e401dac..884f67ec8f7 100644 --- a/app/controllers/invites_controller.rb +++ b/app/controllers/invites_controller.rb @@ -63,7 +63,8 @@ class InvitesController < ApplicationController rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved => e render json: { success: false, - errors: e.record&.errors&.to_hash || {} + errors: e.record&.errors&.to_hash || {}, + message: I18n.t('invite.error_message') } end else diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 286a8f25531..c525fe1f901 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -208,6 +208,7 @@ en: <p>If you remember your password you can <a href="%{base_url}/login">Login</a>.</p> <p>Otherwise please <a href="%{base_url}/password-reset">Reset Password</a>.</p> + error_message: "There was an error accepting invite. Please contact the site's administrator." user_exists: "There's no need to invite <b>%{email}</b>, they <a href='%{base_path}/u/%{username}/summary'>already have an account!</a>" confirm_email: "<p>You’re almost done! We sent an activation mail to your email address. Please follow the instructions in the mail to activate your account.</p><p>If it doesn’t arrive, check your spam folder.</p>" diff --git a/spec/requests/invites_controller_spec.rb b/spec/requests/invites_controller_spec.rb index 037d2aa0476..b2b7f4152ca 100644 --- a/spec/requests/invites_controller_spec.rb +++ b/spec/requests/invites_controller_spec.rb @@ -213,6 +213,18 @@ describe InvitesController do end end + context 'with an invalid invite record' do + let(:invite) { Fabricate(:invite, email: "John Doe <john.doe@example.com>") } + it "responds with error message" do + put "/invites/show/#{invite.invite_key}.json" + expect(response.status).to eq(200) + json = JSON.parse(response.body) + expect(json["success"]).to eq(false) + expect(json["message"]).to eq(I18n.t('invite.error_message')) + expect(session[:current_user_id]).to be_blank + end + end + context 'with a deleted invite' do let(:topic) { Fabricate(:topic) }