-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtest_credentials.py
84 lines (67 loc) · 3.3 KB
/
test_credentials.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import sys
import unittest
from unittest.mock import patch
from froster import *
from tests.config import *
class TestCredentials(unittest.TestCase):
'''Test the froster credentials command.'''
# Method executed once before all tests
@classmethod
def setUpClass(cls):
'''- Set up class.'''
# Setup the froster configuration by mocking user input
with \
patch('sys.argv', ['froster', 'config']), \
patch('inquirer.text', side_effect=[NAME_1, EMAIL_1, PROFILE_1, AWS_CREDENTIALS_PROFILE_1, AWS_ACCESS_KEY_ID, AWS_SECRET, S3_BUCKET_NAME_CREDENTIALS_1, S3_ARCHIVE_DIR_1]), \
patch('inquirer.confirm', side_effect=[False, False, True, False]), \
patch('inquirer.list_input', side_effect=['+ Create new profile', PROVIDER_1, '+ Create new credentials', AWS_REGION_1, '+ Create new bucket', S3_STORAGE_CLASS_1]):
main()
# Method executed once after all tests
@classmethod
def tearDownClass(cls):
'''- Tear down class.'''
# Delete the S3 buckets
with \
patch('sys.argv', ['froster', '--debug', 'delete', '--bucket', S3_BUCKET_NAME_CONFIG_1]), \
patch('builtins.print') as mock_print:
main()
with \
patch('sys.argv', ['froster', '--debug', 'delete', '--bucket', S3_BUCKET_NAME_CONFIG_2]), \
patch('builtins.print') as mock_print:
main()
def test_subcmd_credentials(self):
'''- Test the froster credentials command.'''
# Run the index command and check if sys.exit(0), which means no issues detected while executing the command
with \
patch('sys.argv', ['froster', 'credentials']):
self.assertFalse(main())
if __name__ == '__main__':
try:
if True:
unittest.main(verbosity=2)
else:
suite = unittest.TestSuite()
# FULL CONFIGURATION
# suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestConfig))
# PARTIAL CONFIGURATION
# suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestConfigUser))
# suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestConfigAWS))
# suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestConfigShared))
# suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestConfigNIH))
# suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestConfigS3))
# suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestConfigSlurm))
# BASIC TEST CASE FOR EVERY TEST
# suite.addTest(TestConfig('test_subcmd_config'))
# suite.addTest(TestConfigUser('test_set_user'))
# suite.addTest(TestConfigAWS('test_set_aws'))
# suite.addTest(TestConfigShared('test_set_shared'))
# suite.addTest(TestConfigNIH('test_set_nih'))
suite.addTest(TestConfigS3('test_set_s3'))
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
except KeyboardInterrupt:
print("\nTests interrupted by the user. Exiting...")
sys.exit(1)
except Exception as e:
print("\nAn error occurred during the tests execution: %s" % e)
sys.exit(1)