summaryrefslogtreecommitdiffstats
path: root/testapi/testapi-client/testapiclient/tests/unit/test_deployresults.py
blob: 0e0385beedca632038bffb0b1bc11555f0c55896 (plain)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import json

from mock import mock
from six.moves.urllib import parse
import testtools

from testapiclient.cli import deployresults
from testapiclient.tests.unit import fakes
from testapiclient.tests.unit import utils
from testapiclient.utils import clientmanager


class DeployresultTest(utils.TestCommand):
    def setUp(self):
        super(DeployresultTest, self).setUp()
        self.base_url = parse.urljoin(self.api_url, 'deployresults')
        self.deployresult_json = {
            'job_name': 'daisy-deploy',
            'scenario': 'test-scenario',
            'stop_date': '2018-04-09 13:44:53',
            'upstream_job_name': 'test-job',
            'build_id': 'test-build',
            'version': 'test-version',
            'pod_name': 'test-pod',
            'criteria': 'test-criteria',
            'installer': 'test-installer',
            'start_date': '2018-04-09 13:44:53',
            'details': 'test-details',
            'upstream_build_id': 'test-stream'
        }
        self.deployresult_string = json.dumps(self.deployresult_json)


class DeployresultGetTest(DeployresultTest):

    def setUp(self):
        super(DeployresultGetTest, self).setUp()
        self.deployresults_rsp = {'deployresults': [self.deployresult_json]}

    def test_get(self):
        self.get_mock.return_value = fakes.FakeResponse(
            data=self.deployresults_rsp)
        deployresult_get = deployresults.DeployresultGet(
            self.app, mock.Mock())
        args = ['-job-name', 'dfs']
        verifies = [('job_name', 'dfs')]
        parsed_args = self.check_parser(deployresult_get, args, verifies)
        deployresult_get.take_action(parsed_args)
        self.get_mock.assert_called_once_with(
            self.base_url + '?job_name=dfs',
            headers=clientmanager.ClientManager.headers)

    def test_get_all(self):
        self.get_mock.return_value = fakes.FakeResponse(
            data=self.deployresults_rsp)
        deployresult_get = deployresults.DeployresultGet(
            self.app, mock.Mock())
        args = []
        verifies = []
        parsed_args = self.check_parser(deployresult_get, args, verifies)
        deployresult_get.take_action(parsed_args)
        self.get_mock.assert_called_once_with(
            self.base_url,
            headers=clientmanager.ClientManager.headers)

    def test_get_one(self):
        self.get_mock.return_value = fakes.FakeResponse(
            data=self.deployresult_json)
        deployresult_get_one = deployresults.DeployresultGetOne(
            self.app, mock.Mock())
        args = ['def']
        verifies = [('deployresult_id', 'def')]
        parsed_args = self.check_parser(
            deployresult_get_one, args, verifies)
        deployresult_get_one.take_action(parsed_args)
        self.get_mock.assert_called_once_with(
            self.base_url + '/def',
            headers=clientmanager.ClientManager.headers)


class DeployresultCreateTest(DeployresultTest):

    def setUp(self):
        super(DeployresultCreateTest, self).setUp()

    def test_create_success(self):
        succ_rsp = {
            'href': '{}/{}'.format(self.base_url,
                                   self.deployresult_json.get('project_name'))
        }
        self.post_mock.return_value = fakes.FakeResponse(data=succ_rsp)
        deployresult_create = deployresults.DeployresultCreate(
            self.app, mock.Mock())
        args = [self.deployresult_string]
        verifies = [('deployresult', self.deployresult_json)]
        parsed_args = self.check_parser(deployresult_create, args, verifies)
        deployresult_create.take_action(parsed_args)
        self.post_mock.assert_called_once()

    def test_create_failure(self):
        with testtools.ExpectedException(Exception, 'Create failed: Error'):
            self.post_mock.return_value = utils.FAKE_FAILURE
            deployresult_create = deployresults.DeployresultCreate(
                self.app, mock.Mock())
            args = [self.deployresult_string]
            verifies = [('deployresult', self.deployresult_json)]
            parsed_args = self.check_parser(
                deployresult_create, args, verifies)
            deployresult_create.take_action(parsed_args)