Completed
Pull Request — master (#466)
by
unknown
02:56
created

NcmConfigDownloadTestCase.test_run_connect_fail()   A

Complexity

Conditions 1

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 1
dl 0
loc 12
rs 9.4285
1
# Licensed to the StackStorm, Inc ('StackStorm') under one or more
2
# contributor license agreements.  See the NOTICE file distributed with
3
# this work for additional information regarding copyright ownership.
4
# The ASF licenses this file to You under the Apache License, Version 2.0
5
# (the "License"); you may not use this file except in compliance with
6
# the License.  You may obtain a copy of the License at
7
#
8
#     http://www.apache.org/licenses/LICENSE-2.0
9
#
10
# Unless required by applicable law or agreed to in writing, software
11
# distributed under the License is distributed on an "AS IS" BASIS,
12
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
# See the License for the specific language governing permissions and
14
15
import yaml
16
from mock import Mock, MagicMock
17
18
from st2tests.base import BaseActionTestCase
19
20
from ncm_config_download import NcmConfigDownload
21
22
__all__ = [
23
    'NcmConfigDownloadTestCase'
24
]
25
26
MOCK_CONFIG_BLANK = ""
27
28
MOCK_CONFIG_FULL = """
29
orion:
30
  host: orion-npm
31
  user: stanley
32
  password: foobar
33
"""
34
35
36
class NcmConfigDownloadTestCase(BaseActionTestCase):
37
    action_cls = NcmConfigDownload
38
39
    def test_run_no_config(self):
40
        config = yaml.safe_load(MOCK_CONFIG_BLANK)
41
42
        self.assertRaises(ValueError, NcmConfigDownload, config)
43
44
    def test_run_basic_config(self):
45
        config = yaml.safe_load(MOCK_CONFIG_FULL)
46
47
        action = self.get_action_instance(config)
48
        self.assertIsInstance(action, NcmConfigDownload)
49
50
    def test_run_connect_fail(self):
51
        config = yaml.safe_load(MOCK_CONFIG_FULL)
52
53
        action = self.get_action_instance(config)
54
        action.connect = Mock(side_effect=ValueError(
55
            'Orion host details not in the config.yaml'))
56
57
        self.assertRaises(ValueError,
58
                          action.run,
59
                          "router1",
60
                          "orion",
61
                          ["running","startup"])
62
63
    def test_run_ncm_node_not_found(self):
64
        orion_data = {'results': []}
65
66
        config = yaml.safe_load(MOCK_CONFIG_FULL)
67
        action = self.get_action_instance(config)
68
        action.connect = MagicMock(return_value=True)
69
70
        action.query = MagicMock(return_value=orion_data)
71
72
        self.assertRaises(IndexError,
73
                          action.run,
74
                          "router1",
75
                          "orion",
76
                          ["running","startup"])
77
78
    def test_run_ncm_download_complete(self):
79
        expected = {'running': {'status': 'Complete'},
80
                    'startup': {'status': 'Complete'}
81
                    }
82
        query_data = [
83
            {'results': [{'NodeID': "abc1234"}]},
84
            {'results': [{'Status': 2}]},
85
            {'results': [{'Status': 2}]}
86
        ]
87
        invoke_data = ["1234567890"]
88
89
        config = yaml.safe_load(MOCK_CONFIG_FULL)
90
        action = self.get_action_instance(config)
91
92
        action.connect = MagicMock(return_value=True)
93
        action.query = Mock(side_effect=query_data)
94
        action.invoke = MagicMock(return_value=invoke_data)
95
96
        result = action.run("router1",
97
                            "orion",
98
                            ["running","startup"])
99
100
        self.assertEqual(result, expected)
101