Completed
Pull Request — master (#334)
by
unknown
02:03
created

WaitUntilBuildFinishesActionTestCase   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 57
Duplicated Lines 0 %
Metric Value
dl 0
loc 57
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A test_happy_case() 0 16 1
A test_bad_build_number() 0 15 1
A test_timeout_fails_action() 0 22 2
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
14
    @responses.activate
15
    def test_bad_build_number(self):
16
        action = WaitUntilBuildFinishes()
17
        setattr(action, 'config', {'token': 'dummy'})
18
        test_build_num = 373
19
        MOCK_RESPONSE = {'error': 'Build not found'}
20
        MOCK_URL = ('https://circleci.com/api/v1/project/area51/%s' %
21
                    str(test_build_num))
22
        responses.add(
23
            responses.GET,
24
            MOCK_URL,
25
            json=MOCK_RESPONSE,
26
            status=404)
27
        self.assertRaises(Exception, action.run,
28
                          build_number=373, project='area51')
29
30
    @responses.activate
31
    def test_timeout_fails_action(self):
32
        action = WaitUntilBuildFinishes()
33
        setattr(action, 'config', {'token': 'dummy'})
34
        test_build_num = 373
35
        MOCK_RESPONSE = {'lifecycle': 'Running'}
36
        MOCK_URL = ('https://circleci.com/api/v1/project/area51/%s' %
37
                    str(test_build_num))
38
        responses.add(
39
            responses.GET,
40
            MOCK_URL,
41
            json=MOCK_RESPONSE,
42
            status=200)
43
        TEST_TIMEOUT = 0.2
44
        try:
45
            action.run(build_number=373, project='area51',
46
                       wait_timeout=TEST_TIMEOUT)
47
            self.assertFail('Action should have failed.')
48
        except Exception as e:
49
            expected_msg = ('Build did not complete within %s seconds.' %
50
                            TEST_TIMEOUT)
51
            self.assertEqual(expected_msg, e.message)
52
53
    @responses.activate
54
    def test_happy_case(self):
55
        action = WaitUntilBuildFinishes()
56
        setattr(action, 'config', {'token': 'dummy'})
57
        test_build_num = 373
58
        MOCK_RESPONSE = {'lifecycle': 'finished'}
59
        MOCK_URL = ('https://circleci.com/api/v1/project/area51/%s' %
60
                    str(test_build_num))
61
        responses.add(
62
            responses.GET,
63
            MOCK_URL,
64
            json=MOCK_RESPONSE,
65
            status=200)
66
        ret = action.run(build_number=373, project='area51',
67
                         wait_timeout=1)
68
        self.assertEqual(ret, True)
69