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

pulibrary / tigerdata-app / 8d70f2ab-acc5-4aab-b64b-743d66ddd2eb

29 Aug 2025 06:22PM UTC coverage: 87.983% (-0.1%) from 88.118%
8d70f2ab-acc5-4aab-b64b-743d66ddd2eb

Pull #1801

circleci

JaymeeH
Merge branch '1586-request-mailer' of https://github.com/pulibrary/tiger-data-app into 1586-request-mailer
Pull Request #1801: 1586 request mailer

10 of 10 new or added lines in 2 files covered. (100.0%)

1173 existing lines in 56 files now uncovered.

2482 of 2821 relevant lines covered (87.98%)

317.98 hits per line

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

88.31
/app/controllers/application_controller.rb
1
# frozen_string_literal: true
2
class ApplicationController < ActionController::Base
2✔
3
  protect_from_forgery with: :exception
2✔
4
  before_action :authenticate_user!
2✔
5
  before_action :mediaflux_session
2✔
6
  around_action :mediaflux_session_errors
2✔
7
  around_action :mediaflux_login_errors
2✔
8
  before_action :emulate_user
2✔
9

10
  helper_method :breadcrumbs
2✔
11

12
  def new_session_path(_scope)
2✔
13
    new_user_session_path
×
14
  end
15

16
  def after_sign_in_path_for(_resource)
2✔
17
    mediaflux_passthru_path
1✔
18
    # "/users/#{@user.id}"
19
  end
20

21
  def require_admin_user
2✔
UNCOV
22
    head :forbidden unless current_user&.eligible_sysadmin?
4✔
23
  end
24

25
  def breadcrumbs
2✔
26
    @breadcrumbs ||= []
640✔
27
  end
28

29
  def add_breadcrumb(name, path = nil)
2✔
30
    breadcrumbs << Breadcrumb.new(name, path)
346✔
31
  end
32

33
  private
2✔
34

35
    def mediaflux_session
2✔
36
      logger.debug "Application Session #{session[:mediaflux_session]} cas: #{session[:active_web_user]}"
398✔
37
      unless ["passthru", "cas"].include?(action_name)
398✔
38
        current_user&.mediaflux_from_session(session)
395✔
39
      end
40
    end
41

42
    def mediaflux_session_errors
2✔
43
      yield
398✔
44
    rescue ActionView::Template::Error, Mediaflux::SessionExpired => e
UNCOV
45
      raise unless e.is_a?(Mediaflux::SessionExpired) || e.cause.is_a?(Mediaflux::SessionExpired)
4✔
UNCOV
46
      if session[:active_web_user]
4✔
UNCOV
47
        redirect_to mediaflux_passthru_path(path: request.path)
1✔
UNCOV
48
      elsif session_error_handler
3✔
UNCOV
49
        retry
2✔
50
      else
UNCOV
51
        raise
1✔
52
      end
53
    end
54

55
    def mediaflux_login_errors
2✔
56
      yield
398✔
57
    rescue Mediaflux::SessionError
58
      if session_error_handler
×
59
        retry
×
60
      else
61
        raise
×
62
      end
63
    end
64

65
    def session_error_handler
2✔
UNCOV
66
      @retry_count ||= 0
3✔
UNCOV
67
      @retry_count += 1
3✔
68

UNCOV
69
      current_user.clear_mediaflux_session(session)
3✔
UNCOV
70
      current_user.mediaflux_from_session(session)
3✔
UNCOV
71
      @retry_count < 3 # If the session is expired we should not have to retry more than once, but let's have a little wiggle room
3✔
72
    end
73

74
    def emulate_user
2✔
75
      return if Rails.env.production?
398✔
76
      return if current_user.blank? || !current_user.trainer
398✔
77

78
      if session[:emulation_role]
32✔
79
        if session[:emulation_role] == "Eligible Data Sponsor"
10✔
80
          emulate_sponsor
3✔
81
        elsif session[:emulation_role] == "Eligible Data Manager"
7✔
82
          emulate_manager
3✔
UNCOV
83
        elsif session[:emulation_role] == "System Administrator"
4✔
UNCOV
84
          emulate_sysadmin
3✔
UNCOV
85
        elsif session[:emulation_role] == "Eligible Data User"
1✔
UNCOV
86
          emulate_data_user
1✔
87
        elsif session[:emulation_role] == "Return to Self"
×
88
          return_to_self
×
89
        end
90
      end
91
    end
92

93
    def emulate_sponsor
2✔
94
      current_user.eligible_sponsor = true
3✔
95
      current_user.eligible_manager = false
3✔
96
      current_user.sysadmin = false
3✔
97
    end
98

99
    def emulate_manager
2✔
100
      current_user.eligible_manager = true
3✔
101
      current_user.eligible_sponsor = false
3✔
102
      current_user.sysadmin = false
3✔
103
    end
104

105
    def emulate_sysadmin
2✔
UNCOV
106
      current_user.sysadmin = true
3✔
UNCOV
107
      current_user.eligible_manager = false
3✔
UNCOV
108
      current_user.eligible_sponsor = false
3✔
109
    end
110

111
    def emulate_data_user
2✔
UNCOV
112
      current_user.eligible_sponsor = false
1✔
UNCOV
113
      current_user.eligible_manager = false
1✔
UNCOV
114
      current_user.sysadmin = false
1✔
UNCOV
115
      current_user.trainer = false
1✔
116
    end
117

118
    def return_to_self
2✔
119
      current_user.eligible_sponsor = false
×
120
      current_user.eligible_manager = false
×
121
      current_user.sysadmin = false
×
122
    end
123
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