Completed
Pull Request — master (#543)
by
unknown
02:30
created

WaitUntilBuildFinishesActionTestCase   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 58
rs 10
c 0
b 0
f 0
wmc 4
1
import responses
2
3
from st2tests.base import BaseActionTestCase
4
5
from wait_until_build_finishes import WaitUntilBuildFinishes
6
7
__all__ = [
8
    'WaitUntilBuildFinishesActionTestCase'
9
]
10
11
12
class WaitUntilBuildFinishesActionTestCase(BaseActionTestCase):
13
    action_cls = WaitUntilBuildFinishes
14
15
    @responses.activate
16
    def test_bad_build_number(self):
17
        action = self.get_action_instance()
18
        setattr(action, 'config', {'token': 'dummy'})
19
        test_build_num = 373
20
        MOCK_RESPONSE = {'error': 'Build not found'}
21
        MOCK_URL = ('https://circleci.com/api/v1/project/area51/%s' %
22
                    str(test_build_num))
23
        responses.add(
24
            responses.GET,
25
            MOCK_URL,
26
            json=MOCK_RESPONSE,
27
            status=404)
28
        self.assertRaises(Exception, action.run,
29
                          build_number=373, project='area51')
30
31
    @responses.activate
32
    def test_timeout_fails_action(self):
33
        action = self.get_action_instance()
34
        setattr(action, 'config', {'token': 'dummy'})
35
        test_build_num = 373
36
        MOCK_RESPONSE = {'lifecycle': 'Running'}
37
        MOCK_URL = ('https://circleci.com/api/v1/project/area51/%s' %
38
                    str(test_build_num))
39
        responses.add(
40
            responses.GET,
41
            MOCK_URL,
42
            json=MOCK_RESPONSE,
43
            status=200)
44
        TEST_TIMEOUT = 0.2
45
        try:
46
            action.run(build_number=373, project='area51',
47
                       wait_timeout=TEST_TIMEOUT)
48
            self.fail('Action should have failed.')
49
        except Exception as e:
50
            expected_msg = ('Build did not complete within %s seconds.' %
51
                            TEST_TIMEOUT)
52
            self.assertEqual(expected_msg, e.message)
53
54
    @responses.activate
55
    def test_happy_case(self):
56
        action = self.get_action_instance()
57
        setattr(action, 'config', {'token': 'dummy'})
58
        test_build_num = 373
59
        MOCK_RESPONSE = {'lifecycle': 'finished'}
60
        MOCK_URL = ('https://circleci.com/api/v1/project/area51/%s' %
61
                    str(test_build_num))
62
        responses.add(
63
            responses.GET,
64
            MOCK_URL,
65
            json=MOCK_RESPONSE,
66
            status=200)
67
        ret = action.run(build_number=373, project='area51',
68
                         wait_timeout=1)
69
        self.assertEqual(ret, True)
70