Passed
Push — master ( e8584f...303446 )
by Emmanuel
04:55
created

stakkr_compose_test   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 50
dl 0
loc 67
rs 10
c 0
b 0
f 0
wmc 13

9 Methods

Rating   Name   Duplication   Size   Complexity  
A StakkrComposeTest.test_get_wrong_enabled_service() 0 3 2
A StakkrComposeTest.test_get_gid() 0 3 2
A StakkrComposeTest.test_get_uid() 0 3 2
A StakkrComposeTest.test_get_gid_whenset() 0 2 1
A StakkrComposeTest.test_get_valid_configured_services() 0 6 1
A StakkrComposeTest.test_get_uid_whenset() 0 2 1
A StakkrComposeTest.test_get_available_services() 0 9 1
A StakkrComposeTest.test_get_right_enabled_service() 0 3 1
A StakkrComposeTest.test_get_invalid_config_in_cli() 0 6 2
1
import os
2
import sys
3
import stakkr.stakkr_compose as sc
4
import subprocess
5
import unittest
6
7
base_dir = os.path.abspath(os.path.dirname(__file__))
8
sys.path.insert(0, base_dir + '/../')
9
10
11
# https://docs.python.org/3/library/unittest.html#assert-methods
12
class StakkrComposeTest(unittest.TestCase):
13
    services = {
14
        'a': 'service_a.yml',
15
        'b': 'service_b.yml',
16
    }
17
18
    def test_get_invalid_config_in_cli(self):
19
        cmd = ['stakkr-compose', '-c', base_dir + '/static/config_invalid.ini']
20
        result = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
21
        for line in result.stdout:
22
            self.assertRegex(line.decode(), 'Failed validating.*config_invalid.ini.*')
23
            break
24
25
    def test_get_uid(self):
26
        uid = '1000' if os.name == 'nt' else str(os.getuid())
27
        self.assertEqual(sc._get_uid(None), uid)
28
29
    def test_get_gid(self):
30
        gid = '1000' if os.name == 'nt' else str(os.getgid())
31
        self.assertEqual(sc._get_gid(None), gid)
32
33
    def test_get_uid_whenset(self):
34
        self.assertEqual(sc._get_uid(1000), '1000')
35
36
    def test_get_gid_whenset(self):
37
        self.assertEqual(sc._get_gid(1000), '1000')
38
39
    def test_get_wrong_enabled_service(self):
40
        with self.assertRaises(SystemExit):
41
            sc.get_enabled_services(['c'])
42
43
    def test_get_right_enabled_service(self):
44
        services_files = sc.get_enabled_services(['maildev'])
45
        self.assertTrue(services_files[0].endswith('static/services/maildev.yml'))
46
47
    def test_get_available_services(self):
48
        services = sc.get_available_services()
49
        self.assertTrue('apache' in services)
50
        self.assertTrue('mongo' in services)
51
        self.assertTrue('php' in services)
52
        self.assertTrue('elasticsearch' in services)
53
54
        self.assertEqual('static/services/apache.yml', services['apache'][-26:])
55
        self.assertEqual('static/services/mongo.yml', services['mongo'][-25:])
56
57
    def test_get_valid_configured_services(self):
58
        services = sc.get_configured_services(base_dir + '/static/config_valid.ini')
59
        self.assertTrue('maildev' in services)
60
        self.assertTrue('php' in services)
61
        self.assertFalse('mongo' in services)
62
        self.assertFalse('elasticsearch' in services)
63
64
65
if __name__ == "__main__":
66
    unittest.main()
67