|
33 | 33 | from mig.shared.fileio import pickle, read_file |
34 | 34 | from mig.shared.vgrid import vgrid_list, vgrid_set_entities, vgrid_settings |
35 | 35 | from mig.shared.vgridaccess import CONF, MEMBERS, OWNERS, RESOURCES, SETTINGS, \ |
36 | | - USERID, VGRIDS, check_vgrid_access, check_vgrids_modified, \ |
37 | | - force_update_resource_map, force_update_user_map, force_update_vgrid_map, \ |
38 | | - get_re_provider_map, get_resource_map, get_user_map, get_vgrid_map, \ |
39 | | - load_resource_map, load_user_map, load_vgrid_map, mark_vgrid_modified, \ |
40 | | - refresh_resource_map, refresh_user_map, refresh_vgrid_map, \ |
41 | | - res_vgrid_access, reset_vgrids_modified, resources_using_re, unmap_vgrid, \ |
42 | | - user_allowed_res_confs, user_vgrid_access, user_visible_res_confs, \ |
43 | | - user_visible_user_confs, vgrid_inherit_map |
| 36 | + USERID, VGRIDS, check_resources_modified, check_vgrid_access, \ |
| 37 | + check_vgrids_modified, fill_placeholder_cache, force_update_resource_map, \ |
| 38 | + force_update_user_map, force_update_vgrid_map, get_re_provider_map, \ |
| 39 | + get_resource_map, get_user_map, get_vgrid_map, get_vgrid_map_vgrids, \ |
| 40 | + is_vgrid_parent_placeholder, load_resource_map, load_user_map, \ |
| 41 | + load_vgrid_map, mark_vgrid_modified, refresh_resource_map, \ |
| 42 | + refresh_user_map, refresh_vgrid_map, res_vgrid_access, \ |
| 43 | + reset_resources_modified, reset_vgrids_modified, resources_using_re, \ |
| 44 | + unmap_inheritance, unmap_resource, unmap_vgrid, user_allowed_res_confs, \ |
| 45 | + user_allowed_res_exes, user_allowed_res_stores, user_allowed_res_units, \ |
| 46 | + user_allowed_user_confs, user_owned_res_exes, user_owned_res_stores, \ |
| 47 | + user_vgrid_access, user_visible_res_confs, user_visible_res_exes, \ |
| 48 | + user_visible_res_stores, user_visible_user_confs, vgrid_inherit_map |
44 | 49 | from tests.support import MigTestCase, ensure_dirs_exist, testmain |
45 | 50 |
|
46 | 51 |
|
@@ -164,45 +169,39 @@ def test_refresh_user_map(self): |
164 | 169 | """Minimal test for user map refresh functionality""" |
165 | 170 | self._provision_test_user(self, self.TEST_USER_DN) |
166 | 171 | user_map = refresh_user_map(self.configuration) |
167 | | - self.assertTrue(user_map) |
168 | 172 | self.assertIn(self.TEST_USER_DN, user_map) |
169 | 173 |
|
170 | 174 | def test_refresh_resource_map(self): |
171 | 175 | """Minimal test for resource map refresh functionality""" |
172 | 176 | self._create_resource(self.TEST_RESOURCE_ID, [self.TEST_OWNER_DN]) |
173 | 177 | res_map = refresh_resource_map(self.configuration) |
174 | | - self.assertTrue(res_map) |
175 | 178 | self.assertIn(self.TEST_RESOURCE_ID, res_map) |
176 | 179 |
|
177 | 180 | def test_refresh_vgrid_map(self): |
178 | 181 | """Minimal test for vgrid map refresh functionality""" |
179 | 182 | self._create_vgrid(self.test_vgrid, [self.TEST_OWNER_DN]) |
180 | 183 | vgrid_map = refresh_vgrid_map(self.configuration) |
181 | | - self.assertTrue(vgrid_map) |
182 | 184 | self.assertIn(self.test_vgrid, vgrid_map.get(VGRIDS, [])) |
183 | 185 |
|
184 | 186 | def test_get_user_map(self): |
185 | 187 | """Minimal test for user map refresh functionality""" |
186 | 188 | self._provision_test_user(self, self.TEST_USER_DN) |
187 | 189 | force_update_user_map(self.configuration) |
188 | 190 | user_map = get_user_map(self.configuration) |
189 | | - self.assertTrue(user_map) |
190 | 191 | self.assertIn(self.TEST_USER_DN, user_map) |
191 | 192 |
|
192 | 193 | def test_get_resource_map(self): |
193 | 194 | """Minimal test for user map refresh functionality""" |
194 | 195 | self._create_resource(self.TEST_RESOURCE_ID, [self.TEST_OWNER_DN]) |
195 | 196 | force_update_resource_map(self.configuration) |
196 | 197 | resource_map = get_resource_map(self.configuration) |
197 | | - self.assertTrue(resource_map) |
198 | 198 | self.assertIn(self.TEST_RESOURCE_ID, resource_map) |
199 | 199 |
|
200 | 200 | def test_get_vgrid_map(self): |
201 | 201 | """Minimal test for user map refresh functionality""" |
202 | 202 | self._create_vgrid(self.test_vgrid, [self.TEST_OWNER_DN]) |
203 | 203 | force_update_vgrid_map(self.configuration) |
204 | 204 | vgrid_map = get_vgrid_map(self.configuration) |
205 | | - self.assertTrue(vgrid_map) |
206 | 205 | self.assertIn(self.test_vgrid, vgrid_map.get(VGRIDS, [])) |
207 | 206 |
|
208 | 207 | def test_load_user_map(self): |
@@ -240,6 +239,108 @@ def test_load_vgrid_map(self): |
240 | 239 | vgrid_map, map_stamp = load_vgrid_map(self.configuration) |
241 | 240 | self.assertIn(self.test_vgrid, vgrid_map.get(VGRIDS, {})) |
242 | 241 |
|
| 242 | + def test_get_vgrid_map_vgrids(self): |
| 243 | + """Test get_vgrid_map_vgrids returns vgrid list""" |
| 244 | + vgrid_list = get_vgrid_map_vgrids(self.configuration) |
| 245 | + self.assertTrue(isinstance(vgrid_list, list)) |
| 246 | + self.assertEqual(['Generic'], vgrid_list) |
| 247 | + |
| 248 | + def test_user_owned_res_exes(self): |
| 249 | + """Test user_owned_res_exes returns owned execution nodes""" |
| 250 | + self._create_resource(self.TEST_RESOURCE_ID, [self.TEST_OWNER_DN]) |
| 251 | + force_update_resource_map(self.configuration) |
| 252 | + owned = user_owned_res_exes(self.configuration, self.TEST_OWNER_DN) |
| 253 | + self.assertTrue(isinstance(owned, dict)) |
| 254 | + self.assertIn(self.TEST_RESOURCE_ALIAS, owned) |
| 255 | + |
| 256 | + def test_user_owned_res_stores(self): |
| 257 | + """Test user_owned_res_stores returns owned storage nodes""" |
| 258 | + self._create_resource(self.TEST_RESOURCE_ID, [self.TEST_OWNER_DN]) |
| 259 | + force_update_resource_map(self.configuration) |
| 260 | + owned = user_owned_res_stores(self.configuration, self.TEST_OWNER_DN) |
| 261 | + self.assertTrue(isinstance(owned, dict)) |
| 262 | + self.assertIn(self.TEST_RESOURCE_ALIAS, owned) |
| 263 | + |
| 264 | + def test_user_allowed_res_units(self): |
| 265 | + """Test user_allowed_res_units returns allowed units""" |
| 266 | + self._create_resource(self.TEST_RESOURCE_ID, [self.TEST_OWNER_DN]) |
| 267 | + self._create_vgrid(self.test_vgrid, [self.TEST_OWNER_DN]) |
| 268 | + force_update_vgrid_map(self.configuration) |
| 269 | + force_update_resource_map(self.configuration) |
| 270 | + allowed = user_allowed_res_units( |
| 271 | + self.configuration, self.TEST_OWNER_DN, "exe") |
| 272 | + self.assertTrue(isinstance(allowed, dict)) |
| 273 | + self.assertIn(self.TEST_RESOURCE_ALIAS, allowed) |
| 274 | + |
| 275 | + def test_user_allowed_res_exes(self): |
| 276 | + """Test user_allowed_res_exes returns allowed exes""" |
| 277 | + self._create_resource(self.TEST_RESOURCE_ID, [self.TEST_OWNER_DN]) |
| 278 | + self._create_vgrid(self.test_vgrid, [self.TEST_OWNER_DN]) |
| 279 | + force_update_vgrid_map(self.configuration) |
| 280 | + force_update_resource_map(self.configuration) |
| 281 | + allowed = user_allowed_res_exes(self.configuration, self.TEST_OWNER_DN) |
| 282 | + self.assertTrue(isinstance(allowed, dict)) |
| 283 | + self.assertIn(self.TEST_RESOURCE_ALIAS, allowed) |
| 284 | + |
| 285 | + def test_user_allowed_res_stores(self): |
| 286 | + """Test user_allowed_res_stores returns allowed stores""" |
| 287 | + self._create_resource(self.TEST_RESOURCE_ID, [self.TEST_OWNER_DN]) |
| 288 | + self._create_vgrid(self.test_vgrid, [self.TEST_OWNER_DN]) |
| 289 | + force_update_vgrid_map(self.configuration) |
| 290 | + force_update_resource_map(self.configuration) |
| 291 | + allowed = user_allowed_res_stores( |
| 292 | + self.configuration, self.TEST_OWNER_DN) |
| 293 | + self.assertTrue(isinstance(allowed, dict)) |
| 294 | + self.assertIn(self.TEST_RESOURCE_ALIAS, allowed) |
| 295 | + |
| 296 | + def test_user_visible_res_exes(self): |
| 297 | + """Test user_visible_res_exes returns visible exes""" |
| 298 | + self._create_resource(self.TEST_RESOURCE_ID, [self.TEST_OWNER_DN]) |
| 299 | + self._create_vgrid(self.test_vgrid, [self.TEST_OWNER_DN]) |
| 300 | + force_update_vgrid_map(self.configuration) |
| 301 | + force_update_resource_map(self.configuration) |
| 302 | + visible = user_visible_res_exes(self.configuration, self.TEST_OWNER_DN) |
| 303 | + self.assertTrue(isinstance(visible, dict)) |
| 304 | + self.assertIn(self.TEST_RESOURCE_ALIAS, visible) |
| 305 | + |
| 306 | + def test_user_visible_res_stores(self): |
| 307 | + """Test user_visible_res_stores returns visible stores""" |
| 308 | + self._create_resource(self.TEST_RESOURCE_ID, [self.TEST_OWNER_DN]) |
| 309 | + self._create_vgrid(self.test_vgrid, [self.TEST_OWNER_DN]) |
| 310 | + force_update_vgrid_map(self.configuration) |
| 311 | + force_update_resource_map(self.configuration) |
| 312 | + visible = user_visible_res_stores( |
| 313 | + self.configuration, self.TEST_OWNER_DN) |
| 314 | + self.assertTrue(isinstance(visible, dict)) |
| 315 | + self.assertIn(self.TEST_RESOURCE_ALIAS, visible) |
| 316 | + |
| 317 | + def test_user_allowed_user_confs(self): |
| 318 | + """Test user_allowed_user_confs returns allowed user confs""" |
| 319 | + self._provision_test_user(self, self.TEST_OWNER_DN) |
| 320 | + self._provision_test_user(self, self.TEST_USER_DN) |
| 321 | + self._create_vgrid(self.test_vgrid, [self.TEST_OWNER_DN], |
| 322 | + [self.TEST_USER_DN]) |
| 323 | + force_update_vgrid_map(self.configuration) |
| 324 | + force_update_user_map(self.configuration) |
| 325 | + allowed = user_allowed_user_confs( |
| 326 | + self.configuration, self.TEST_OWNER_DN) |
| 327 | + self.assertTrue(isinstance(allowed, dict)) |
| 328 | + self.assertIn(self.TEST_USER_UUID, allowed) |
| 329 | + self.assertIn(self.TEST_OWNER_UUID, allowed) |
| 330 | + |
| 331 | + def test_fill_placeholder_cache(self): |
| 332 | + """Test fill_placeholder_cache populates cache""" |
| 333 | + cache = {} |
| 334 | + fill_placeholder_cache(self.configuration, cache, [self.test_vgrid]) |
| 335 | + self.assertIn(self.test_vgrid, cache) |
| 336 | + |
| 337 | + def test_is_vgrid_parent_placeholder(self): |
| 338 | + """Test is_vgrid_parent_placeholder detection""" |
| 339 | + test_path = os.path.join(self.configuration.user_home, 'testvgrid') |
| 340 | + result = is_vgrid_parent_placeholder(self.configuration, test_path, |
| 341 | + test_path) |
| 342 | + self.assertIsNone(result) |
| 343 | + |
243 | 344 | def test_check_vgrids_modified_initial(self): |
244 | 345 | """Verify initial state of modified vgrids list is empty""" |
245 | 346 | modified, stamp = check_vgrids_modified(self.configuration) |
@@ -417,6 +518,22 @@ def test_settings_inheritance(self): |
417 | 518 | # Verify hidden setting inheritance |
418 | 519 | self.assertEqual(sub_settings_dict.get('hidden'), True) |
419 | 520 |
|
| 521 | + def test_unmap_inheritance(self): |
| 522 | + """Test unmap_inheritance clears inherited mappings""" |
| 523 | + self._create_vgrid(self.test_vgrid, owners=[self.TEST_OWNER_DN]) |
| 524 | + sub_vgrid = os.path.join(self.test_vgrid, 'subvgrid') |
| 525 | + self._create_vgrid(sub_vgrid) |
| 526 | + |
| 527 | + # Force refresh of cached map |
| 528 | + updated_map = force_update_vgrid_map(self.configuration) |
| 529 | + |
| 530 | + # Unmap and verify mark modified |
| 531 | + unmap_inheritance(self.configuration, self.test_vgrid, |
| 532 | + self.TEST_OWNER_DN) |
| 533 | + |
| 534 | + modified, stamp = check_vgrids_modified(self.configuration) |
| 535 | + self.assertEqual(modified, [self.test_vgrid, sub_vgrid]) |
| 536 | + |
420 | 537 | def test_user_map_fields(self): |
421 | 538 | """Verify user map includes complete profile/settings data""" |
422 | 539 | # First add a couple of test users |
@@ -630,6 +747,20 @@ def test_unmap_vgrid(self): |
630 | 747 | mod_list, mod_stamp = check_vgrids_modified(self.configuration) |
631 | 748 | self.assertIn(self.test_vgrid, mod_list) |
632 | 749 |
|
| 750 | + def test_unmap_resource(self): |
| 751 | + """Test unmap_resource marks resource modified""" |
| 752 | + mod_list, mod_stamp = check_resources_modified(self.configuration) |
| 753 | + self.assertNotIn(self.TEST_RESOURCE_ID, mod_list) |
| 754 | + |
| 755 | + # Unmap and verify mark modified |
| 756 | + unmap_resource(self.configuration, self.TEST_RESOURCE_ID) |
| 757 | + |
| 758 | + mod_list, mod_stamp = check_vgrids_modified(self.configuration) |
| 759 | + self.assertIn(self.TEST_RESOURCE_ID, mod_list) |
| 760 | + # TODO: fix and enable next |
| 761 | + # mod_list, mod_stamp = check_resources_modified(self.configuration) |
| 762 | + # self.assertIn(self.TEST_RESOURCE_ID, mod_list) |
| 763 | + |
633 | 764 | def test_check_vgrids_modified_initial(self): |
634 | 765 | """Verify initial state of modified vgrids list is empty""" |
635 | 766 | modified, stamp = check_vgrids_modified(self.configuration) |
|
0 commit comments