def test_no_slots_in_setup(self): # minimum set up: org_setup = """\ ... action ... anyone ... anything ... permissions *** deny anyone to action anything wt 10 ... aliases """ competition = Competition.load(org_setup) competition.validate() bob = "user-2719963b00964c01b42b5d81c998fd05" fran = "user-bca37695842f41e3b3bab9a2aa666c61" ali = "user-bc25a08ff757418aa37445f818d4c7ad" can_perform = competition.can_perform st = competition.slot_types_for(bob) self.assertEquals(st, []) st = competition.slot_types_for(fran) self.assertEquals(st, []) st = competition.slot_types_for(ali) self.assertEquals(st, []) # check bob can do what I expect: self.assertFalse(can_perform(bob, "create", "private")) self.assertFalse(can_perform(bob, "create", "pypro")) self.assertFalse(can_perform(bob, "create", "public")) self.assertFalse(can_perform(bob, "edit", "public")) self.assertFalse(can_perform(bob, "view", "public")) # check fran can do what I expect: self.assertFalse(can_perform(fran, "create", "private")) self.assertFalse(can_perform(fran, "create", "pypro")) self.assertFalse(can_perform(fran, "create", "public")) self.assertFalse(can_perform(fran, "edit", "public")) self.assertFalse(can_perform(fran, "view", "public")) # check ali can do anything except view public: self.assertFalse(can_perform(ali, "create", "private")) self.assertFalse(can_perform(ali, "create", "pypro")) self.assertFalse(can_perform(ali, "create", "public")) self.assertFalse(can_perform(ali, "edit", "public")) self.assertFalse(can_perform(ali, "view", "public"))
def validate_competition(self, org_id, data): """Check the data produces a valid competition. :param data: The string competition configuration. :returns: A valid competition instance. """ comp = LocalCompetition.load(data) try: comp.validate() finally: self.stats.competition_validation_failed[org_id] += 1 return comp
def test_get_slot_types_for(self): # org_id = "org-user-2719963b00964c01b42b5d81c998fd05" org_setup = """\ ... action ... view ... edit ... create ... anyone ... bob ... fran ... anything ... slots ... public ... private ... pypro ... permissions # |--------------- latch -----------------------------| #** <permit> <rider/user> to action <pony/resource> wt 10 *** deny anyone to action anything wt 10 *** allow bob.sprocket to create slots wt 30 *** allow fran to create pypro wt 35 *** allow anyone to view public wt 50 ... aliases *** bob=user-2719963b00964c01b42b5d81c998fd05 *** fran=user-bca37695842f41e3b3bab9a2aa666c61 """ competition = Competition.load(org_setup) competition.validate() bob = "user-2719963b00964c01b42b5d81c998fd05" fran = "user-bca37695842f41e3b3bab9a2aa666c61" ali = "user-bc25a08ff757418aa37445f818d4c7ad" can_perform = competition.can_perform # Order isn't important so I'm using sets here. st = competition.slot_types_for(bob) self.assertEquals(set(st), set(["public", "private", "pypro"])) st = competition.slot_types_for(fran) self.assertEquals(set(st), set(["public", "pypro"])) st = competition.slot_types_for(ali) self.assertEquals(set(st), set(["public"])) # check bob can do what I expect: self.assertTrue(can_perform(bob, "create", "private")) self.assertTrue(can_perform(bob, "create", "pypro")) self.assertTrue(can_perform(bob, "create", "public")) self.assertTrue(can_perform(bob, "edit", "public")) self.assertTrue(can_perform(bob, "view", "public")) # check fran can do what I expect: self.assertFalse(can_perform(fran, "create", "private")) self.assertTrue(can_perform(fran, "create", "pypro")) self.assertFalse(can_perform(fran, "create", "public")) self.assertFalse(can_perform(fran, "edit", "public")) self.assertTrue(can_perform(fran, "view", "public")) # check ali can do anything except view public: self.assertFalse(can_perform(ali, "create", "private")) self.assertFalse(can_perform(ali, "create", "pypro")) self.assertFalse(can_perform(ali, "create", "public")) self.assertFalse(can_perform(ali, "edit", "public")) self.assertTrue(can_perform(ali, "view", "public"))