• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / tigerdata-app / e88bda7b-d38c-474f-879a-7b040e202955

24 Sep 2025 09:48PM UTC coverage: 89.197% (+0.06%) from 89.139%
e88bda7b-d38c-474f-879a-7b040e202955

push

circleci

web-flow
Handle mediaflux session errors in request controller (#1892)

* Handle mediaflux session errors in request controller

* Catch ProjectCreateErrors

* typo

* minimizing the change

* linting

* testing rescue block

* Create request controller spec
update user factory
updated the rescue in the request controller
remove outdated request spec

* return real netid for project sponsor/manager

4 of 8 new or added lines in 1 file covered. (50.0%)

3 existing lines in 3 files now uncovered.

2609 of 2925 relevant lines covered (89.2%)

339.63 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

80.0
/app/controllers/requests_controller.rb
1
# frozen_string_literal: true
2
class RequestsController < ApplicationController
1✔
3
  before_action :set_breadcrumbs
1✔
4

5
  # GET /requests
6
  def index
1✔
7
    if current_user.eligible_sysadmin?
5✔
8
      add_breadcrumb("Project Requests - All")
2✔
9
      @draft_requests = Request.where(state: Request::DRAFT).map do |request|
2✔
10
        request.project_title = "no title set" if request.project_title.blank?
×
11
        request
×
12
      end
13
      @submitted_requests = Request.where(state: Request::SUBMITTED)
2✔
14
    else
15
      error_message = "You do not have access to this page."
3✔
16
      flash[:notice] = error_message
3✔
17
      redirect_to dashboard_path
3✔
18
    end
19
  end
20

21
  def show
1✔
22
    if current_user.developer || current_user.sysadmin || current_user.trainer
15✔
23
      @request_model = Request.find(params[:id])
11✔
24
      add_breadcrumb("Requests", requests_path)
11✔
25
      add_breadcrumb(@request_model.project_title, request_path(@request_model))
11✔
26
      render :show
11✔
27
    else
28
      error_message = "You do not have access to this page."
4✔
29
      flash[:notice] = error_message
4✔
30
      redirect_to dashboard_path
4✔
31
    end
32
  end
33

34
  # rubocop:disable Metrics/AbcSize
35
  # rubocop:disable Metrics/MethodLength
36
  # rubocop:disable Metrics/PerceivedComplexity
37
  # rubocop:disable Metrics/CyclomaticComplexity
38
  def approve
1✔
39
    if current_user.developer || current_user.sysadmin || current_user.trainer
7✔
40
      @request_model = Request.find(params[:id])
7✔
41
      if @request_model.valid_to_submit?
7✔
42
        project = @request_model.approve(current_user)
6✔
43
        @request_model.destroy
4✔
44
        stub_message = "The request has been approved and this project was created in the TigerData web portal.  The request has been processed and deleted."
4✔
45
        TigerdataMailer.with(project_id: project.id, approver: current_user).project_creation.deliver_later
4✔
46
        redirect_to project_path(project.id), notice: stub_message
4✔
47
      else
48
        redirect_to new_project_review_and_submit_path(@request_model)
1✔
49
      end
50
    else
51
      error_message = "You do not have access to this page."
×
52
      flash[:notice] = error_message
×
53
      redirect_to dashboard_path
×
54
    end
55
  rescue StandardError => ex
56
    if ex.is_a?(Mediaflux::SessionExpired) || ex.cause.is_a?(Mediaflux::SessionExpired)
2✔
57
      raise
1✔
58
    elsif ex.is_a?(ProjectCreate::ProjectCreateError) && ex.message.include?("Session expired for token")
1✔
59
      raise Mediaflux::SessionExpired
1✔
60
    else
NEW
61
      Rails.logger.error "Error approving request #{params[:id]}. Details: #{ex.message}"
×
NEW
62
      Honeybadger.notify "Error approving request #{params[:id]}. Details: #{ex.message}"
×
NEW
63
      flash[:notice] = "Error approving request #{params[:id]}"
×
NEW
64
      redirect_to request_path(@request_model)
×
65
    end
66
  end
67
  # rubocop:enable Metrics/MethodLength
68
  # rubocop:enable Metrics/AbcSize
69
  # rubocop:enable Metrics/PerceivedComplexity
70
  # rubocop:enable Metrics/CyclomaticComplexity
71

72
  private
1✔
73

74
    def set_breadcrumbs
1✔
75
      add_breadcrumb("Dashboard", dashboard_path)
27✔
76
    end
77
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc