|
8 | 8 | os.path.dirname(os.path.realpath(__file__)), ".nasdaq-config", "testkeyfile"
|
9 | 9 | )
|
10 | 10 |
|
11 |
| - |
12 |
| -class ApiConfigTest(TestCase): |
13 |
| - @mock.patch.dict(os.environ, {"NASDAQ_DATA_LINK_API_KEY": "setinenv"}) |
14 |
| - def test_read_key_when_environment_variable_set(self): |
15 |
| - ApiConfig.api_key = None |
16 |
| - read_key() |
17 |
| - self.assertEqual(ApiConfig.api_key, "setinenv") |
18 |
| - del os.environ['NASDAQ_DATA_LINK_API_KEY'] |
| 11 | +TEST_DEFAULT_FILE = os.path.join( |
| 12 | + os.path.dirname(os.path.realpath(__file__)), ".nasdaq-config", "defaultkeyfile" |
| 13 | +) |
19 | 14 |
|
20 | 15 |
|
21 |
| - def test_read_key_when_environment_variable_not_set(self): |
| 16 | +class ApiConfigTest(TestCase): |
| 17 | + def setUp(self): |
22 | 18 | if not os.path.exists(os.path.dirname(TEST_KEY_FILE)):
|
23 | 19 | try:
|
24 | 20 | os.makedirs(os.path.dirname(TEST_KEY_FILE))
|
25 | 21 | except OSError as exc: # Guard against race condition
|
26 | 22 | if exc.errno != errno.EEXIST:
|
27 | 23 | raise
|
28 | 24 |
|
29 |
| - ApiConfig.api_key = None |
30 |
| - save_key("keyforfile", TEST_KEY_FILE) |
31 |
| - read_key(TEST_KEY_FILE) |
32 |
| - self.assertEqual(ApiConfig.api_key, 'keyforfile') |
| 25 | + def tearDown(self): |
| 26 | + if NASDAQ_DATA_LINK_API_KEY in os.environ: |
| 27 | + del os.environ['NASDAQ_DATA_LINK_API_KEY'] |
| 28 | + |
33 | 29 | if os.path.exists(TEST_KEY_FILE):
|
34 | 30 | os.remove(TEST_KEY_FILE)
|
35 | 31 |
|
| 32 | + if os.path.exists(TEST_DEFAULT_FILE): |
| 33 | + os.remove(TEST_DEFAULT_FILE) |
36 | 34 |
|
37 | 35 |
|
38 |
| - def test_read_key_when_file_not_set(self): |
39 |
| - if os.path.exists(TEST_KEY_FILE): |
40 |
| - os.remove(TEST_KEY_FILE) |
| 36 | + def test_read_key_when_environment_variable_set(self): |
| 37 | + os.environ['NASDAQ_DATA_LINK_API_KEY'] = 'setinenv' |
| 38 | + ApiConfig.api_key = None |
| 39 | + read_key() |
| 40 | + self.assertEqual(ApiConfig.api_key, "setinenv") |
| 41 | + |
41 | 42 |
|
| 43 | + def test_read_key_environment_variable_takes_precedence(self): |
| 44 | + os.environ['NASDAQ_DATA_LINK_API_KEY'] = 'setinenvprecedence' |
| 45 | + save_key("keyforfilenot", TEST_KEY_FILE) |
42 | 46 | ApiConfig.api_key = None
|
43 | 47 | read_key()
|
| 48 | + self.assertEqual(ApiConfig.api_key, "setinenvprecedence") |
| 49 | + |
| 50 | + |
| 51 | + def test_read_key_when_environment_variable_not_set(self): |
| 52 | + save_key("keyforfile", TEST_KEY_FILE) |
| 53 | + ApiConfig.api_key = None # Set None, we are not testing save_key |
| 54 | + read_key(TEST_KEY_FILE) |
| 55 | + self.assertEqual(ApiConfig.api_key, 'keyforfile') |
| 56 | + |
| 57 | + |
| 58 | + def test_read_key_when_files_not_set(self): |
| 59 | + ApiConfig.api_key = None |
| 60 | + with mock.patch("nasdaqdatalink.api_config.default_config_filename") as mock_default_config_filename: |
| 61 | + mock_default_config_filename.return_value = TEST_DEFAULT_FILE |
| 62 | + read_key() |
| 63 | + |
| 64 | + mock_default_config_filename.assert_called_once |
44 | 65 | self.assertEqual(ApiConfig.api_key, None)
|
| 66 | + |
| 67 | + |
| 68 | + def test_read_key_when_default_file_set(self): |
| 69 | + save_key("keyfordefaultfile", TEST_DEFAULT_FILE) |
| 70 | + ApiConfig.api_key = None # Set None, we are not testing save_key |
| 71 | + |
| 72 | + with mock.patch("nasdaqdatalink.api_config.default_config_filename") as mock_default_config_filename: |
| 73 | + mock_default_config_filename.return_value = TEST_DEFAULT_FILE |
| 74 | + read_key() |
| 75 | + |
| 76 | + self.assertEqual(ApiConfig.api_key, 'keyfordefaultfile') |
0 commit comments