From 74dd6483025ea3966d140527e44ba39ca2de8048 Mon Sep 17 00:00:00 2001 From: "M. Simon Borg" Date: Thu, 14 Mar 2019 01:24:35 -0400 Subject: [PATCH] make api_key overridable in Application env --- lib/open_states/application.ex | 10 ++++++++-- test/open_states_test.exs | 15 ++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/open_states/application.ex b/lib/open_states/application.ex index 0584014..b21089b 100644 --- a/lib/open_states/application.ex +++ b/lib/open_states/application.ex @@ -7,8 +7,7 @@ defmodule OpenStates.Application do use Receiver, as: :credentials def start(_type, _args) do - api_key = Application.get_env(:open_states, :api_key, System.get_env("OPENSTATES_API_KEY")) - start_credentials(fn -> api_key end) + set_api_key_from_env() children = [] @@ -18,4 +17,11 @@ defmodule OpenStates.Application do @spec api_key() :: String.t() def api_key, do: get_credentials() + + @spec set_api_key_from_env() :: :ok + def set_api_key_from_env do + start_credentials() + api_key = Application.get_env(:open_states, :api_key, System.get_env("OPENSTATES_API_KEY")) + update_credentials(fn _ -> api_key end) + end end diff --git a/test/open_states_test.exs b/test/open_states_test.exs index 781eb73..f408be6 100644 --- a/test/open_states_test.exs +++ b/test/open_states_test.exs @@ -1,5 +1,5 @@ defmodule OpenStatesTest do - use ExUnit.Case, async: true + use ExUnit.Case, async: false import Mock doctest OpenStates @@ -11,6 +11,19 @@ defmodule OpenStatesTest do assert OpenStates.api_key() == System.get_env("OPENSTATES_API_KEY") end + test "api_key/0 can be overriden in Application config" do + original = OpenStates.api_key() + Application.put_env(:open_states, :api_key, "hello") + :ok = OpenStates.Application.set_api_key_from_env() + + assert OpenStates.api_key() == "hello" + + Application.put_env(:open_states, :api_key, original) + :ok = OpenStates.Application.set_api_key_from_env() + + assert OpenStates.api_key() == original + end + test "headers/0 returns the API query headers" do assert OpenStates.headers() == ["X-API-KEY": OpenStates.api_key()] end