Esempio n. 1
0
    def test_0010_active_instance_property(self):
        group = property.TrafficGroup.q.filter_by(name=TrafficGroupData.group1.name).one()
        p1 = property.Membership(user=self.user, group=group)
        self.assertTrue(p1.active)
        session.session.add(p1)
        session.session.commit()

        p1 = property.Membership.q.filter(property.Membership.user==self.user).filter(property.Membership.group==group).one()
        self.assertTrue(p1.active)

        p1.disable()
        session.session.commit()

        p1 = property.Membership.q.filter(property.Membership.user==self.user).filter(property.Membership.group==group).one()
        self.assertFalse(p1.active)

        p1.end_date = None
        session.session.commit()

        p1 = property.Membership.q.filter(property.Membership.user==self.user).filter(property.Membership.group==group).one()
        self.assertTrue(p1.active)

        session.session.delete(p1)
        session.session.commit()

        p1 = property.Membership(user=self.user, group=group)
        session.session.add(p1)
        session.session.commit()

        p1 = property.Membership.q.filter(property.Membership.user==self.user).filter(property.Membership.group==group).one()
        self.assertTrue(p1.active)

        p1.start_date = datetime.now() + timedelta(days=2)
        session.session.commit()

        p1 = property.Membership.q.filter(property.Membership.user==self.user).filter(property.Membership.group==group).one()
        self.assertFalse(p1.active)

        p1.disable()
        session.session.commit()

        p1 = property.Membership.q.filter(property.Membership.user==self.user).filter(property.Membership.group==group).one()
        self.assertFalse(p1.active)

        p1.end_date = p1.start_date + timedelta(days=1)
        session.session.commit()

        p1 = property.Membership.q.filter(property.Membership.user==self.user).filter(property.Membership.group==group).one()
        self.assertFalse(p1.active)

        p1.start_date = datetime.now() - timedelta(days=1)
        session.session.commit()

        p1 = property.Membership.q.filter(property.Membership.user==self.user).filter(property.Membership.group==group).one()
        self.assertTrue(p1.active)
Esempio n. 2
0
    def test_0020_add_membership(self):
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()

        # add membership to group1
        membership = property.Membership(start_date=datetime.now(), user=self.user, group=group)
        session.session.add(membership)
        session.session.commit()

        self.assertTrue(self.user.has_property(PropertyData.prop_test1.name))
        self.assertFalse(self.user.has_property(PropertyData.prop_test2.name))

        # add membership to group2
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group2.name).one()

        membership = property.Membership(start_date=datetime.now(), user=self.user, group=group)
        session.session.add(membership)
        session.session.commit()

        self.assertTrue(self.user.has_property(PropertyData.prop_test1.name))
        self.assertTrue(self.user.has_property(PropertyData.prop_test2.name))
Esempio n. 3
0
    def test_0010_start_date_default(self):
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()

        # add membership to group1
        p1 = property.Membership(user=self.user, group=group)
        session.session.add(p1)
        session.session.commit()

        p = property.Membership.q.first()
        self.assertIsNotNone(p)
        self.assertIsNotNone(p.start_date)
        self.assertIsNone(p.end_date)
Esempio n. 4
0
    def test_0020_end_date_before_start(self):
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()

        # add membership to group1
        p1 = property.Membership(user=self.user, group=group)
        p1.start_date = datetime.now()

        def set_old_date():
            """ Set end_date before start_date
            """
            p1.end_date = datetime.now() - timedelta(hours=2)

        self.assertRaisesRegexp(AssertionError, "you set end date before start date!", set_old_date)
Esempio n. 5
0
    def test_0030_add_timed_membership(self):
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()

        # add membership to group1
        membership = property.Membership(start_date=datetime.now(), user=self.user, group=group)
        membership.end_date = membership.start_date + timedelta(days=3)
        session.session.add(membership)
        session.session.commit()

        self.assertTrue(self.user.has_property(PropertyData.prop_test1.name))
        self.assertFalse(self.user.has_property(PropertyData.prop_test2.name))

        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group2.name).one()

        # add expired membership to group2
        membership = property.Membership(user=self.user, group=group)
        membership.start_date = datetime.now() - timedelta(days=3)
        membership.end_date = membership.start_date + timedelta(hours=1)
        session.session.add(membership)
        session.session.commit()

        self.assertTrue(self.user.has_property(PropertyData.prop_test1.name))
        self.assertFalse(self.user.has_property(PropertyData.prop_test2.name))
Esempio n. 6
0
    def test_0030_start_date_after_end(self):
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()

        # add membership to group1
        p1 = property.Membership(user=self.user, group=group)
        p1.end_date = p1.start_date
        self.assertEqual(p1.end_date, p1.start_date)

        def set_new_start():
            """ Set start_date after end_date
            """
            p1.start_date = datetime.now() + timedelta(hours=2)

        self.assertRaisesRegexp(AssertionError, "you set start date behind end date!", set_new_start)
Esempio n. 7
0
    def test_0040_disable_membership(self):
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()

        # add membership to group1
        membership = property.Membership(start_date=datetime.now(), user=self.user, group=group)
        session.session.add(membership)
        session.session.commit()

        self.assertTrue(self.user.has_property(PropertyData.prop_test1.name))
        membership.disable()
        session.session.commit()
        self.assertNotIn(group,self.user.active_property_groups)
        self.assertFalse(self.user.has_property(PropertyData.prop_test1.name))

        # add membership to group1
        membership = property.Membership(start_date=datetime.now(), user=self.user, group=group)
        session.session.add(membership)
        session.session.commit()

        self.assertTrue(self.user.has_property(PropertyData.prop_test1.name))

        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group2.name).one()

        # add membership to group2
        membership = property.Membership(start_date=datetime.now(), user=self.user, group=group)
        session.session.add(membership)
        session.session.commit()

        self.assertTrue(self.user.has_property(PropertyData.prop_test1.name))
        self.assertTrue(self.user.has_property(PropertyData.prop_test2.name))

        # disables membership in group2
        membership.disable()
        session.session.commit()
        self.assertTrue(self.user.has_property(PropertyData.prop_test1.name))
        self.assertFalse(self.user.has_property(PropertyData.prop_test2.name))
Esempio n. 8
0
    def test_0040_set_correct_dates(self):
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()

        # add membership to group1
        p1 = property.Membership(user=self.user, group=group)
        p1.start_date = datetime.now()
        p1.end_date = datetime.now()

        session.session.add(p1)
        session.session.commit()

        p1.start_date = datetime.now() - timedelta(days=3)
        p1.end_date = datetime.now() + timedelta(days=3)

        session.session.commit()
Esempio n. 9
0
    def test_0010_group_users(self):
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()
        self.assertEqual(len(group.users), 0)
        self.assertEqual(len(group.active_users), 0)

        # add membership to group1
        p1 = property.Membership(user=self.user, group=group)
        session.session.add(p1)
        session.session.commit()

        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()
        self.assertEqual(len(group.users), 1)
        self.assertEqual(len(group.active_users), 1)

        p1.disable()
        session.session.commit()
        self.assertEqual(len(group.users), 1)
        self.assertEqual(len(group.active_users), 0)
Esempio n. 10
0
    def test_0050_clear_end_date(self):
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()

        # add membership to group1
        p1 = property.Membership(user=self.user, group=group)
        p1.start_date = datetime.now()
        p1.end_date = datetime.now()
        session.session.add(p1)
        session.session.commit()

        # test if membership in database
        p1 = property.Membership.q.filter(property.Membership.user==self.user).filter(property.Membership.group==group).one()
        self.assertIsNotNone(p1.end_date)

        # clear end_date
        p1.end_date = None
        session.session.commit()

        p1 = property.Membership.q.filter(property.Membership.user==self.user).filter(property.Membership.group==group).one()
        self.assertIsNone(p1.end_date)
Esempio n. 11
0
    def test_0030_user_property_groups(self):
        # first have no property group
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()
        self.assertEqual(len(self.user.property_groups), 0)
        self.assertEqual(len(self.user.active_property_groups), 0)

        # add one active property group
        p1 = property.Membership(user=self.user, group=group)
        session.session.add(p1)
        session.session.commit()
        f = property.Membership.q.first()
        self.assertTrue(f.active)
        self.assertEqual(len(self.user.property_groups), 1)
        self.assertEqual(len(self.user.active_property_groups), 1)

        # adding a traffic group should not affect the property_group
        group = property.TrafficGroup.q.filter_by(name=TrafficGroupData.group2.name).one()
        p1 = property.Membership(user=self.user, group=group)
        session.session.add(p1)
        session.session.commit()
        self.assertEqual(len(self.user.property_groups), 1)
        self.assertEqual(len(self.user.active_property_groups), 1)

        # add a second active property group - count should be 2
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group2.name).one()
        p1 = property.Membership(user=self.user, group=group)
        session.session.add(p1)
        session.session.commit()
        self.assertEqual(len(self.user.property_groups), 2)
        self.assertEqual(len(self.user.active_property_groups), 2)

        # disable the second group. active should be one, all 2
        p1.disable()
        session.session.commit()
        self.assertEqual(len(self.user.property_groups), 2)
        self.assertEqual(len(self.user.active_property_groups), 1)

        # test a join
        res = session.session.query(user.User, property.PropertyGroup.id).join(user.User.active_property_groups).filter(user.User.id==self.user.id).distinct().count()
        self.assertEqual(res, 1)
        res = session.session.query(user.User, property.PropertyGroup.id).join(user.User.property_groups).filter(user.User.id==self.user.id).distinct().count()
        self.assertEqual(res, 2)

        # reenable it - but with a deadline - both counts should be 2
        p1.end_date = datetime.now() + timedelta(days=1)
        session.session.commit()
        self.assertEqual(len(self.user.property_groups), 2)
        self.assertEqual(len(self.user.active_property_groups), 2)

        # Add a second membership to the first group - should not affect the count
        group = property.PropertyGroup.q.filter_by(name=PropertyGroupData.group1.name).one()
        p1 = property.Membership(user=self.user, group=group)
        session.session.add(p1)
        session.session.commit()
        self.assertEqual(len(self.user.property_groups), 2)
        self.assertEqual(len(self.user.active_property_groups), 2)

        # disabling the new one should also not affect.
        p1.disable()
        session.session.commit()
        self.assertEqual(len(self.user.property_groups), 2)
        self.assertEqual(len(self.user.active_property_groups), 2)

        # test a join
        res = session.session.query(user.User, property.PropertyGroup).join(user.User.active_property_groups).filter(user.User.id==self.user.id).distinct().count()
        self.assertEqual(res, 2)
        res = session.session.query(user.User, property.PropertyGroup).join(user.User.property_groups).filter(user.User.id==self.user.id).distinct().count()
        self.assertEqual(res, 2)