src/tests/api/t_publisher.py
changeset 2310 ce10607d5332
parent 2286 938fbb350ad2
child 2433 7af4ccfa1c06
equal deleted inserted replaced
2309:5aa9213d0285 2310:ce10607d5332
   337                 pprops = {
   337                 pprops = {
   338                     "alias": "cat",
   338                     "alias": "cat",
   339                     "client_uuid": "2c6a8ff8-20e5-11de-a818-001fd0979039",
   339                     "client_uuid": "2c6a8ff8-20e5-11de-a818-001fd0979039",
   340                     "disabled": True,
   340                     "disabled": True,
   341                     "meta_root": os.path.join(self.test_root, "bobcat"),
   341                     "meta_root": os.path.join(self.test_root, "bobcat"),
   342                     "repositories": [robj, r2obj],
   342                     "repository": r2obj,
   343                     "selected_repository": r2obj,
       
   344                 }
   343                 }
   345 
   344 
   346                 # Check that all properties can be set at construction time.
   345                 # Check that all properties can be set at construction time.
   347                 pobj = publisher.Publisher("bobcat", **pprops)
   346                 pobj = publisher.Publisher("bobcat", **pprops)
   348 
   347 
   352                         self.assertEqual(pprops[p], getattr(pobj, p))
   351                         self.assertEqual(pprops[p], getattr(pobj, p))
   353 
   352 
   354                 # Verify that a copy matches its original.
   353                 # Verify that a copy matches its original.
   355                 cpobj = copy.copy(pobj)
   354                 cpobj = copy.copy(pobj)
   356                 for p in pprops:
   355                 for p in pprops:
   357                         if p in ("repositories", "selected_repository"):
   356                         if p == "repository":
   358                                 # These attributes can't be directly compared.
   357                                 # These attributes can't be directly compared.
   359                                 continue
   358                                 continue
   360                         self.assertEqual(getattr(pobj, p), getattr(cpobj, p))
   359                         self.assertEqual(getattr(pobj, p), getattr(cpobj, p))
   361 
   360 
   362                 # Assume that if the origins match, we have the right selected
   361                 # Assume that if the origins match, we have the right selected
   363                 # repository.
   362                 # repository.
   364                 self.assertEqual(cpobj.selected_repository.origins,
   363                 self.assertEqual(cpobj.repository.origins,
   365                     r2obj.origins)
   364                     r2obj.origins)
   366 
   365 
   367                 # Compare all of the repository objects individually.  Assume
   366                 # Compare the source_object_id of the copied repository object
   368                 # that if the source_object_id matches, that the copy happened
   367                 # with the id of the source repository object.
   369                 # correctly.
   368                 self.assertEqual(id(pobj), cpobj._source_object_id)
   370                 for i in range(0, len(pobj.repositories)):
   369 
   371                         srepo = pobj.repositories[i]
       
   372                         crepo = cpobj.repositories[i]
       
   373                         self.assertEqual(id(srepo), crepo._source_object_id)
       
   374                 cpobj = None
   370                 cpobj = None
   375 
   371 
   376                 # Verify that individual properties can be set.
   372                 # Verify that individual properties can be set.
   377                 pobj = publisher.Publisher("tomcat")
   373                 pobj = publisher.Publisher("tomcat")
   378                 pobj.prefix = "bobcat"
   374                 pobj.prefix = "bobcat"
   384                                         pobj.add_repository(r)
   380                                         pobj.add_repository(r)
   385                         else:
   381                         else:
   386                                 setattr(pobj, p, pprops[p])
   382                                 setattr(pobj, p, pprops[p])
   387                         self.assertEqual(getattr(pobj, p), pprops[p])
   383                         self.assertEqual(getattr(pobj, p), pprops[p])
   388 
   384 
   389                 pobj.selected_repository = robj
   385                 pobj.repository = robj
   390                 self.assertEqual(pobj.selected_repository, robj)
   386                 self.assertEqual(pobj.repository, robj)
   391 
   387 
   392                 # An invalid value shouldn't be allowed.
   388                 # An invalid value shouldn't be allowed.
   393                 self.assertRaises(api_errors.UnknownRepository, setattr,
   389                 self.assertRaises(api_errors.UnknownRepository, setattr,
   394                     pobj, "selected_repository", -1)
   390                     pobj, "repository", -1)
   395 
       
   396                 # A repository object not already in the list of repositories
       
   397                 # shouldn't be allowed.
       
   398                 self.assertRaises(api_errors.UnknownRepository, setattr,
       
   399                     pobj, "selected_repository", publisher.Repository())
       
   400 
       
   401                 # Verify that management methods work as expected.
       
   402                 pobj.set_selected_repository(origin=r2obj.origins[-1])
       
   403                 self.assertEqual(pobj.selected_repository, r2obj)
       
   404 
       
   405                 pobj.set_selected_repository(name=robj.name)
       
   406                 self.assertEqual(pobj.selected_repository, robj)
       
   407 
   391 
   408                 pobj.reset_client_uuid()
   392                 pobj.reset_client_uuid()
   409                 self.assertNotEqual(pobj.client_uuid, None)
   393                 self.assertNotEqual(pobj.client_uuid, None)
   410                 self.assertNotEqual(pobj.client_uuid, pprops["client_uuid"])
   394                 self.assertNotEqual(pobj.client_uuid, pprops["client_uuid"])
   411 
   395 
   413                 self.assertTrue(os.path.exists(pobj.meta_root))
   397                 self.assertTrue(os.path.exists(pobj.meta_root))
   414 
   398 
   415                 pobj.remove_meta_root()
   399                 pobj.remove_meta_root()
   416                 self.assertFalse(os.path.exists(pobj.meta_root))
   400                 self.assertFalse(os.path.exists(pobj.meta_root))
   417 
   401 
   418                 # Verify that get and remove works as expected.
       
   419                 for r in pprops["repositories"]:
       
   420                         gr = pobj.get_repository(name=r.name)
       
   421                         self.assertEqual(r, gr)
       
   422 
       
   423                         gr = pobj.get_repository(origin=r.origins[-1])
       
   424                         self.assertEqual(r, gr)
       
   425 
       
   426                         if r == pobj.selected_repository:
       
   427                                 # Attempting to remove the selected repository
       
   428                                 # should raise an exception.
       
   429                                 ex = api_errors.SelectedRepositoryRemoval
       
   430                                 self.assertRaises(ex, pobj.remove_repository,
       
   431                                     name=r.name)
       
   432                         else:
       
   433                                 pobj.remove_repository(name=r.name)
       
   434                                 self.assertRaises(api_errors.UnknownRepository,
       
   435                                     pobj.get_repository, name=r.name)
       
   436 
       
   437 
   402 
   438 if __name__ == "__main__":
   403 if __name__ == "__main__":
   439         unittest.main()
   404         unittest.main()
   440 
   405