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"))
Пример #2
0
    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"))