From b4a0ee4b5f0f58fcf77f247471b5bdbbb5bdab97 Mon Sep 17 00:00:00 2001 From: Micaela Lorenzo Date: Thu, 10 Apr 2025 10:09:56 -0300 Subject: [PATCH 1/2] fix default assignment to use env variable --- .rubocop.yml | 7 +++++-- lib/mailcat.rb | 12 ++++++++++-- lib/mailcat/delivery_method.rb | 8 ++++---- spec/mailcat_spec.rb | 30 ++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 8 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 609ce04..802cffb 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,16 +1,19 @@ AllCops: TargetRubyVersion: 3.0 - Metrics/AbcSize: Max: 26 +Metrics/BlockLength: + Exclude: + - "spec/**/*" + Metrics/MethodLength: Max: 20 Style/Documentation: Exclude: - - 'lib/mailcat.rb' + - "lib/mailcat.rb" Style/StringLiterals: Enabled: true diff --git a/lib/mailcat.rb b/lib/mailcat.rb index 76be747..22ef982 100644 --- a/lib/mailcat.rb +++ b/lib/mailcat.rb @@ -10,6 +10,14 @@ class Error < StandardError; end include ::ActiveSupport::Configurable - config_accessor :mailcat_api_key, default: ENV["MAILCAT_API_KEY"] - config_accessor :mailcat_url, default: ENV["MAILCAT_URL"] + config_accessor :mailcat_api_key, default: -> { ENV["MAILCAT_API_KEY"] } + config_accessor :mailcat_url, default: -> { ENV["MAILCAT_URL"] } + + def self.mailcat_api_key_raw + config.mailcat_api_key.is_a?(Proc) ? config.mailcat_api_key.call : config.mailcat_api_key + end + + def self.mailcat_url_raw + config.mailcat_url.is_a?(Proc) ? config.mailcat_url.call : config.mailcat_url + end end diff --git a/lib/mailcat/delivery_method.rb b/lib/mailcat/delivery_method.rb index 627058a..378e090 100644 --- a/lib/mailcat/delivery_method.rb +++ b/lib/mailcat/delivery_method.rb @@ -21,7 +21,7 @@ def send_to_mailcat(mail) Net::HTTP.start(emails_uri.hostname, emails_uri.port, use_ssl: emails_uri.scheme == "https") do |http| req = Net::HTTP::Post.new(emails_uri) req["Content-Type"] = "application/json" - req["X-Api-Key"] = Mailcat.config.mailcat_api_key + req["X-Api-Key"] = Mailcat.mailcat_api_key_raw email_body = { from: mail.from.first, to: mail.to, @@ -62,7 +62,7 @@ def upload_attachment(attachment) req = Net::HTTP::Post.new(direct_uploads_uri) req["Content-Type"] = "application/json" - req["X-Api-Key"] = Mailcat.config.mailcat_api_key + req["X-Api-Key"] = Mailcat.mailcat_api_key_raw req.body = { blob: { filename: attachment.filename, @@ -82,11 +82,11 @@ def upload_attachment(attachment) end def emails_uri - @emails_uri ||= URI("#{Mailcat.config.mailcat_url}/api/emails") + @emails_uri ||= URI("#{Mailcat.mailcat_url_raw}/api/emails") end def direct_uploads_uri - @direct_uploads_uri ||= URI("#{Mailcat.config.mailcat_url}/api/direct_uploads") + @direct_uploads_uri ||= URI("#{Mailcat.mailcat_url_raw}/api/direct_uploads") end def attachment_tempfile(attachment) diff --git a/spec/mailcat_spec.rb b/spec/mailcat_spec.rb index 0447bdb..8d6f5d7 100644 --- a/spec/mailcat_spec.rb +++ b/spec/mailcat_spec.rb @@ -4,4 +4,34 @@ it "has a version number" do expect(Mailcat::VERSION).not_to be nil end + + describe "environment variable loader" do + context "when using the default environment variables" do + before do + stub_const("ENV", ENV.to_h.merge( + "MAILCAT_API_KEY" => "spec_key", + "MAILCAT_URL" => "https://spec-url.com" + )) + end + + it "uses ENV defaults if not explicitly set" do + expect(Mailcat.mailcat_api_key_raw).to eq("spec_key") + expect(Mailcat.mailcat_url_raw).to eq("https://spec-url.com") + end + end + + context "when explicitly set" do + before do + described_class.configure do |config| + config.mailcat_api_key = "explicit_key" + config.mailcat_url = "https://explicit-url.com" + end + end + + it "uses explicitly set values" do + expect(Mailcat.mailcat_api_key_raw).to eq("explicit_key") + expect(Mailcat.mailcat_url_raw).to eq("https://explicit-url.com") + end + end + end end From db60f367687fb89eb31d64992811489a3fb3056b Mon Sep 17 00:00:00 2001 From: Micaela Lorenzo Date: Fri, 11 Apr 2025 15:21:05 -0300 Subject: [PATCH 2/2] Update mailcat gem version to 0.1.2 --- Gemfile.lock | 2 +- lib/mailcat/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2bebafb..36e06c6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - mailcat (0.1.1) + mailcat (0.1.2) activesupport (>= 6.0.0) GEM diff --git a/lib/mailcat/version.rb b/lib/mailcat/version.rb index 6ead511..7ec3b9e 100644 --- a/lib/mailcat/version.rb +++ b/lib/mailcat/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Mailcat - VERSION = "0.1.1" + VERSION = "0.1.2" end