diff --git a/src/metabase/config.clj b/src/metabase/config.clj index 09f33eff7e9a8644504e933052dccc22ac54b912..459d49a3650713f31f1ff7af03fef6d9d755cf54 100644 --- a/src/metabase/config.clj +++ b/src/metabase/config.clj @@ -41,8 +41,10 @@ 2. jvm options (ex: -Dmb.db.type -> :mb-db-type) 3. hard coded `app-defaults`" [k] - (let [k (keyword k)] - (or (k environ/env) (k app-defaults)))) + (let [k (keyword k) + env-val (k environ/env)] + (or (when-not (str/blank? env-val) env-val) + (k app-defaults)))) ;; These are convenience functions for accessing config values that ensures a specific return type diff --git a/test/metabase/config_test.clj b/test/metabase/config_test.clj new file mode 100644 index 0000000000000000000000000000000000000000..b36562ae62e4d33d45f6664e800459ebfbe6e203 --- /dev/null +++ b/test/metabase/config_test.clj @@ -0,0 +1,17 @@ +(ns metabase.config-test + (:require [clojure.test :refer :all] + [environ.core :as environ] + [metabase.config :as config])) + +(deftest config-parsing + (testing "takes value of non-empty env var" + (with-redefs [environ/env (assoc environ/env :max-session-age "123")] + (is (= "123" + (config/config-str :max-session-age))))) + (testing "falls back to default if env var is nil or an empty string" + (with-redefs [environ/env (assoc environ/env :max-session-age "")] + (is (= "20160" + (config/config-str :max-session-age)))) + (with-redefs [environ/env (assoc environ/env :max-session-age nil)] + (is (= "20160" + (config/config-str :max-session-age))))))