diff --git a/app/controllers/widgets_controller.rb b/app/controllers/widgets_controller.rb index 9639b28b2..ac26a36c5 100644 --- a/app/controllers/widgets_controller.rb +++ b/app/controllers/widgets_controller.rb @@ -18,6 +18,9 @@ class WidgetsController < ActionController::Base def set_web_widget @web_widget = ::Channel::WebWidget.find_by!(website_token: permitted_params[:website_token]) + rescue ActiveRecord::RecordNotFound + Rails.logger.error('web widget does not exist') + render json: { error: 'web widget does not exist' }, status: :not_found end def set_token diff --git a/spec/controllers/widgets_controller_spec.rb b/spec/controllers/widgets_controller_spec.rb index 8b955b6f6..71aaa084c 100644 --- a/spec/controllers/widgets_controller_spec.rb +++ b/spec/controllers/widgets_controller_spec.rb @@ -33,5 +33,13 @@ describe '/widget', type: :request do expect(response).to have_http_status(:unauthorized) expect(response.body).to include('Account is suspended') end + + it 'returns 404 if the webwidget is deleted' do + web_widget.delete + + get widget_url(website_token: web_widget.website_token) + expect(response).to have_http_status(:not_found) + expect(response.body).to include('web widget does not exist') + end end end