##// END OF EJS Templates
%env: hide likely secrets by default...
Min RK -
Show More
@@ -446,7 +446,13 b' class OSMagics(Magics):'
446 raise UsageError(err)
446 raise UsageError(err)
447 if len(bits) > 1:
447 if len(bits) > 1:
448 return self.set_env(parameter_s)
448 return self.set_env(parameter_s)
449 return dict(os.environ)
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 @line_magic
457 @line_magic
452 def set_env(self, parameter_s):
458 def set_env(self, parameter_s):
@@ -11,6 +11,7 b' import sys'
11 import warnings
11 import warnings
12 from textwrap import dedent
12 from textwrap import dedent
13 from unittest import TestCase
13 from unittest import TestCase
14 from unittest import mock
14 from importlib import invalidate_caches
15 from importlib import invalidate_caches
15 from io import StringIO
16 from io import StringIO
16
17
@@ -733,6 +734,24 b' class TestEnv(TestCase):'
733 env = _ip.magic("env")
734 env = _ip.magic("env")
734 self.assertTrue(isinstance(env, dict))
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 def test_env_get_set_simple(self):
755 def test_env_get_set_simple(self):
737 env = _ip.magic("env var val1")
756 env = _ip.magic("env var val1")
738 self.assertEqual(env, None)
757 self.assertEqual(env, None)
General Comments 0
You need to be logged in to leave comments. Login now