|
11 | 11 | # under the License. |
12 | 12 | # |
13 | 13 |
|
| 14 | +import argparse |
14 | 15 | import mock |
15 | 16 |
|
| 17 | +from openstackclient.common import exceptions |
16 | 18 | from openstackclient.common import utils |
17 | 19 | from openstackclient.network.v2 import subnet_pool |
18 | 20 | from openstackclient.tests.network.v2 import fakes as network_fakes |
@@ -129,6 +131,96 @@ def test_subnet_pool_list_long(self): |
129 | 131 | self.assertEqual(self.data_long, list(data)) |
130 | 132 |
|
131 | 133 |
|
| 134 | +class TestSetSubnetPool(TestSubnetPool): |
| 135 | + |
| 136 | + # The subnet_pool to set. |
| 137 | + _subnet_pool = network_fakes.FakeSubnetPool.create_one_subnet_pool() |
| 138 | + |
| 139 | + def setUp(self): |
| 140 | + super(TestSetSubnetPool, self).setUp() |
| 141 | + |
| 142 | + self.network.update_subnet_pool = mock.Mock(return_value=None) |
| 143 | + |
| 144 | + self.network.find_subnet_pool = mock.Mock( |
| 145 | + return_value=self._subnet_pool) |
| 146 | + |
| 147 | + # Get the command object to test |
| 148 | + self.cmd = subnet_pool.SetSubnetPool(self.app, self.namespace) |
| 149 | + |
| 150 | + def test_set_this(self): |
| 151 | + arglist = [ |
| 152 | + self._subnet_pool.name, |
| 153 | + '--name', 'noob', |
| 154 | + '--default-prefix-length', '8', |
| 155 | + '--min-prefix-length', '8', |
| 156 | + ] |
| 157 | + verifylist = [ |
| 158 | + ('subnet_pool', self._subnet_pool.name), |
| 159 | + ('name', 'noob'), |
| 160 | + ('default_prefix_length', '8'), |
| 161 | + ('min_prefix_length', '8'), |
| 162 | + ] |
| 163 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 164 | + |
| 165 | + result = self.cmd.take_action(parsed_args) |
| 166 | + |
| 167 | + attrs = { |
| 168 | + 'name': 'noob', |
| 169 | + 'default_prefix_length': '8', |
| 170 | + 'min_prefix_length': '8', |
| 171 | + } |
| 172 | + self.network.update_subnet_pool.assert_called_with( |
| 173 | + self._subnet_pool, **attrs) |
| 174 | + self.assertIsNone(result) |
| 175 | + |
| 176 | + def test_set_that(self): |
| 177 | + arglist = [ |
| 178 | + self._subnet_pool.name, |
| 179 | + '--pool-prefix', '10.0.1.0/24', |
| 180 | + '--pool-prefix', '10.0.2.0/24', |
| 181 | + '--max-prefix-length', '16', |
| 182 | + ] |
| 183 | + verifylist = [ |
| 184 | + ('subnet_pool', self._subnet_pool.name), |
| 185 | + ('prefixes', ['10.0.1.0/24', '10.0.2.0/24']), |
| 186 | + ('max_prefix_length', '16'), |
| 187 | + ] |
| 188 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 189 | + |
| 190 | + result = self.cmd.take_action(parsed_args) |
| 191 | + |
| 192 | + prefixes = ['10.0.1.0/24', '10.0.2.0/24'] |
| 193 | + prefixes.extend(self._subnet_pool.prefixes) |
| 194 | + attrs = { |
| 195 | + 'prefixes': prefixes, |
| 196 | + 'max_prefix_length': '16', |
| 197 | + } |
| 198 | + self.network.update_subnet_pool.assert_called_with( |
| 199 | + self._subnet_pool, **attrs) |
| 200 | + self.assertIsNone(result) |
| 201 | + |
| 202 | + def test_set_nothing(self): |
| 203 | + arglist = [self._subnet_pool.name, ] |
| 204 | + verifylist = [('subnet_pool', self._subnet_pool.name), ] |
| 205 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 206 | + |
| 207 | + self.assertRaises(exceptions.CommandError, self.cmd.take_action, |
| 208 | + parsed_args) |
| 209 | + |
| 210 | + def test_set_len_negative(self): |
| 211 | + arglist = [ |
| 212 | + self._subnet_pool.name, |
| 213 | + '--max-prefix-length', '-16', |
| 214 | + ] |
| 215 | + verifylist = [ |
| 216 | + ('subnet_pool', self._subnet_pool.name), |
| 217 | + ('max_prefix_length', '-16'), |
| 218 | + ] |
| 219 | + |
| 220 | + self.assertRaises(argparse.ArgumentTypeError, self.check_parser, |
| 221 | + self.cmd, arglist, verifylist) |
| 222 | + |
| 223 | + |
132 | 224 | class TestShowSubnetPool(TestSubnetPool): |
133 | 225 |
|
134 | 226 | # The subnet_pool to set. |
@@ -189,14 +281,13 @@ def test_show_all_options(self): |
189 | 281 | verifylist = [ |
190 | 282 | ('subnet_pool', self._subnet_pool.name), |
191 | 283 | ] |
192 | | - |
193 | 284 | parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 285 | + |
194 | 286 | columns, data = self.cmd.take_action(parsed_args) |
195 | 287 |
|
196 | 288 | self.network.find_subnet_pool.assert_called_with( |
197 | 289 | self._subnet_pool.name, |
198 | 290 | ignore_missing=False |
199 | 291 | ) |
200 | | - |
201 | 292 | self.assertEqual(self.columns, columns) |
202 | 293 | self.assertEqual(self.data, data) |
0 commit comments