Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 42 additions & 4 deletions config/initializers/okcomputer.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
require 'net/smtp'

# frozen_string_literal: true

# Health check configuration
Expand All @@ -6,7 +8,7 @@
OkComputer.check_in_parallel = true

class AlmaPatronCheck < OkComputer::Check
TEST_PATRON_ID = '000311@lbl.gov'
TEST_PATRON_ID = '000311@lbl.gov'.freeze

def check
Alma::User.find(TEST_PATRON_ID)
Expand All @@ -18,11 +20,47 @@ def check
end
end

# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
class MailConnectivityCheck < OkComputer::Check
OkComputer::Registry.register 'mail-connectivity', MailConnectivityCheck.new if ActionMailer::Base.delivery_method == :smtp

# Check that the mail password is set
def check
settings = ActionMailer::Base.smtp_settings
begin
Net::SMTP.start(
settings[:address],
settings[:port],
settings[:domain],
settings[:user_name],
settings[:password],
settings[:authentication],
tls: true
) { mark_message 'Connection for smtp successful' }
rescue Net::SMTPAuthenticationError => e
mark_failure
Rails.logger.warn "SMTP authentication error: #{e}"
mark_message 'SMTP Error: Authentication failed. Check logs for more details'
rescue Net::SMTPServerBusy, Net::SMTPSyntaxError, Net::SMTPFatalError, Net::SMTPUnknownError => e
mark_failure
Rails.logger.warn "SMTP Error: #{e}"
mark_message 'SMTP error. Check logs for more details'
rescue IOError, Net::ReadTimeout => e
mark_failure
Rails.logger.warn "SMTP Timeout: #{e}"
mark_message 'SMTP Connection error: Timeout. Check logs for more details'
rescue StandardError => e
# Catch any other unexpected errors
mark_failure
Rails.logger.warn "SMTP standard error: #{e}"
mark_message 'SMTP ERROR: Could not connect. Check logs for more details'
end
end
end
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize

# Ensure Alma API is working.
OkComputer::Registry.register 'alma-patron-lookup', AlmaPatronCheck.new

# Ensure database migrations have been run.
OkComputer::Registry.register 'database-migrations', OkComputer::ActiveRecordMigrationsCheck.new

# Ensure connectivity to the mail system.
OkComputer::Registry.register 'action-mailer', OkComputer::ActionMailerCheck.new
2 changes: 1 addition & 1 deletion spec/request/okcomputer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
it 'returns all checks to /health' do
get '/health'
expect(response.parsed_body.keys).to match_array %w[
action-mailer
mailer-connectivity
alma-patron-lookup
default
database
Expand Down
Loading