Provide CLI feedback for missing input

This commit is contained in:
Jason Ertel
2022-04-07 10:16:44 -04:00
parent d8defdd7b0
commit 44e318e046
2 changed files with 13 additions and 3 deletions

View File

@@ -39,8 +39,11 @@ def analyze(input):
def main(): def main():
results = analyze(sys.argv[1]) if len(sys.argv) == 2:
print(json.dumps(results)) results = analyze(sys.argv[1])
print(json.dumps(results))
else:
print("ERROR: Missing input JSON")
if __name__ == "__main__": if __name__ == "__main__":

View File

@@ -1,4 +1,5 @@
from io import StringIO from io import StringIO
import sys
from unittest.mock import patch, MagicMock from unittest.mock import patch, MagicMock
from urlhaus import urlhaus from urlhaus import urlhaus
import unittest import unittest
@@ -6,10 +7,16 @@ import unittest
class TestUrlhausMethods(unittest.TestCase): class TestUrlhausMethods(unittest.TestCase):
def test_main(self): def test_main_missing_input(self):
with patch('sys.stdout', new=StringIO()) as mock_stdout:
urlhaus.main()
self.assertEqual(mock_stdout.getvalue(), "ERROR: Missing input JSON\n")
def test_main_success(self):
output = {"foo": "bar"} output = {"foo": "bar"}
with patch('sys.stdout', new=StringIO()) as mock_stdout: with patch('sys.stdout', new=StringIO()) as mock_stdout:
with patch('urlhaus.urlhaus.analyze', new=MagicMock(return_value=output)) as mock: with patch('urlhaus.urlhaus.analyze', new=MagicMock(return_value=output)) as mock:
sys.argv = ["cmd", "input"]
urlhaus.main() urlhaus.main()
expected = '{"foo": "bar"}\n' expected = '{"foo": "bar"}\n'
self.assertEqual(mock_stdout.getvalue(), expected) self.assertEqual(mock_stdout.getvalue(), expected)