From 90b1b6365e7b8ea1b99157ad5a9752105aaa37ca Mon Sep 17 00:00:00 2001 From: Josh Nichols Date: Wed, 24 Jan 2024 12:17:35 -0500 Subject: [PATCH] Check that slack token isn't empty before using it --- lib/smart_todo/dispatchers/slack.rb | 1 + test/smart_todo/dispatchers/slack_test.rb | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/lib/smart_todo/dispatchers/slack.rb b/lib/smart_todo/dispatchers/slack.rb index 4fc9e2d..6ef6bfd 100644 --- a/lib/smart_todo/dispatchers/slack.rb +++ b/lib/smart_todo/dispatchers/slack.rb @@ -8,6 +8,7 @@ class Slack < Base class << self def validate_options!(options) options[:slack_token] ||= ENV.fetch("SMART_TODO_SLACK_TOKEN") { raise(ArgumentError, "Missing :slack_token") } + raise(ArgumentError, "Missing :slack_token") if options[:slack_token].empty? options.fetch(:fallback_channel) { raise(ArgumentError, "Missing :fallback_channel") } end diff --git a/test/smart_todo/dispatchers/slack_test.rb b/test/smart_todo/dispatchers/slack_test.rb index c006d09..92731b7 100644 --- a/test/smart_todo/dispatchers/slack_test.rb +++ b/test/smart_todo/dispatchers/slack_test.rb @@ -120,6 +120,16 @@ def test_validate_options_when_all_mandatory_options_are_passed Slack.validate_options!(slack_token: "123", fallback_channel: "#general") end + def test_validate_options_when_token_option_passed_is_empty_string + error = assert_raises(ArgumentError) do + Slack.validate_options!(slack_token: "", fallback_channel: "#general") + end + + assert_equal("Missing :slack_token", error.message) + ensure + ENV.delete("SMART_TODO_SLACK_TOKEN") + end + def test_validate_options_when_token_option_is_missing error = assert_raises(ArgumentError) do Slack.validate_options!(fallback_channel: "#general") @@ -128,6 +138,17 @@ def test_validate_options_when_token_option_is_missing assert_equal("Missing :slack_token", error.message) end + def test_validate_options_when_token_option_env_is_empty_string + ENV["SMART_TODO_SLACK_TOKEN"] = "" + error = assert_raises(ArgumentError) do + Slack.validate_options!(fallback_channel: "#general") + end + + assert_equal("Missing :slack_token", error.message) + ensure + ENV.delete("SMART_TODO_SLACK_TOKEN") + end + def test_when_slack_token_option_is_in_the_environment ENV["SMART_TODO_SLACK_TOKEN"] = "123" options = { fallback_channel: "#general" }