Show More
@@ -446,7 +446,13 b' class OSMagics(Magics):' | |||
|
446 | 446 | raise UsageError(err) |
|
447 | 447 | if len(bits) > 1: |
|
448 | 448 | return self.set_env(parameter_s) |
|
449 |
|
|
|
449 | env = dict(os.environ) | |
|
450 | # hide likely secrets when printing the whole environment | |
|
451 | for key in list(env): | |
|
452 | if any(s in key.lower() for s in ('key', 'token', 'secret')): | |
|
453 | env[key] = '<hidden>' | |
|
454 | ||
|
455 | return env | |
|
450 | 456 | |
|
451 | 457 | @line_magic |
|
452 | 458 | def set_env(self, parameter_s): |
@@ -11,6 +11,7 b' import sys' | |||
|
11 | 11 | import warnings |
|
12 | 12 | from textwrap import dedent |
|
13 | 13 | from unittest import TestCase |
|
14 | from unittest import mock | |
|
14 | 15 | from importlib import invalidate_caches |
|
15 | 16 | from io import StringIO |
|
16 | 17 | |
@@ -733,6 +734,24 b' class TestEnv(TestCase):' | |||
|
733 | 734 | env = _ip.magic("env") |
|
734 | 735 | self.assertTrue(isinstance(env, dict)) |
|
735 | 736 | |
|
737 | def test_env_secret(self): | |
|
738 | env = _ip.magic("env") | |
|
739 | hidden = "<hidden>" | |
|
740 | with mock.patch.dict( | |
|
741 | os.environ, | |
|
742 | { | |
|
743 | "API_KEY": "abc123", | |
|
744 | "SECRET_THING": "ssshhh", | |
|
745 | "JUPYTER_TOKEN": "", | |
|
746 | "VAR": "abc" | |
|
747 | } | |
|
748 | ): | |
|
749 | env = _ip.magic("env") | |
|
750 | assert env["API_KEY"] == hidden | |
|
751 | assert env["SECRET_THING"] == hidden | |
|
752 | assert env["JUPYTER_TOKEN"] == hidden | |
|
753 | assert env["VAR"] == "abc" | |
|
754 | ||
|
736 | 755 | def test_env_get_set_simple(self): |
|
737 | 756 | env = _ip.magic("env var val1") |
|
738 | 757 | self.assertEqual(env, None) |
General Comments 0
You need to be logged in to leave comments.
Login now