Example #1
0
    def test_delete(self):
        """."""
        from invenio_groups.models import Group, Membership
        from invenio_accounts.models import User

        g = Group.create(name="test")
        u = User(email="*****@*****.**", password="******")
        db.session.add(u)
        db.session.commit()

        Membership.create(g, u)
        self.assertEqual(Membership.query.count(), 1)
        Membership.delete(g, u)
        self.assertEqual(Membership.query.count(), 0)
        self.assertIsNone(Membership.delete(g, u))
Example #2
0
    def test_query_by_group(self):
        """."""
        from invenio_groups.models import Group, Membership, \
            MembershipState
        from invenio_accounts.models import User
        from flask.ext.sqlalchemy import BaseQuery

        g = Group.create(name="test")
        Group.create(name="test2")
        u = User(email="*****@*****.**", password="******")
        u2 = User(email="[email protected]", password="******")
        db.session.add(u)
        db.session.commit()

        Membership.create(g, u, MembershipState.ACTIVE)

        self.assertIsInstance(Membership.query_by_group(g), BaseQuery)
        self.assertEqual(Membership.query_by_group(g).count(), 1)
        self.assertEqual(Membership.query_by_group(u2).count(), 0)
Example #3
0
    def test_get(self):
        """."""
        from invenio_groups.models import Group, Membership
        from invenio_accounts.models import User

        g = Group.create(name="test")
        u = User(email="*****@*****.**", password="******")
        u2 = User(email="[email protected]", password="******")
        db.session.add(u)
        db.session.add(u2)
        db.session.commit()

        Membership.create(g, u)
        m = Membership.get(g, u)
        m2 = Membership.get(g, u2)

        self.assertEqual(m.group.id, g.id)
        self.assertEqual(m.user.id, u.id)
        self.assertIsNone(m2)
Example #4
0
def users():
    """Load default users and groups."""
    from invenio_groups.models import Group, Membership, \
        PrivacyPolicy, SubscriptionPolicy

    admin = accounts.datastore.create_user(
        email='*****@*****.**',
        password=encrypt_password('123456'),
        active=True,
    )
    reader = accounts.datastore.create_user(
        email='*****@*****.**',
        password=encrypt_password('123456'),
        active=True,
    )

    admins = Group.create(name='admins', admins=[admin])
    for i in range(10):
        Group.create(name='group-{0}'.format(i), admins=[admin])
    Membership.create(admins, reader)
    db.session.commit()
Example #5
0
    def test_query_invitations(self):
        """."""
        from invenio_groups.models import Group, Membership, \
            MembershipState
        from invenio_accounts.models import User
        from flask.ext.sqlalchemy import BaseQuery

        g = Group.create(name="test")
        u1 = User(email="*****@*****.**", password="******")
        u2 = User(email="[email protected]", password="******")
        u3 = User(email="[email protected]", password="******")
        db.session.add_all([u1, u2, u3])
        db.session.commit()
        Membership.create(g, u1, MembershipState.ACTIVE)
        Membership.create(g, u2, MembershipState.PENDING_USER)
        Membership.create(g, u3, MembershipState.PENDING_ADMIN)

        self.assertIsInstance(Membership.query_by_user(u1), BaseQuery)
        self.assertEqual(Membership.query_invitations(u1).count(), 0)
        self.assertEqual(Membership.query_invitations(u2).count(), 1)
        self.assertEqual(Membership.query_invitations(u3).count(), 0)
Example #6
0
    def test_accept(self):
        """."""
        from invenio_groups.models import Group, Membership, \
            MembershipState
        from invenio_accounts.models import User

        g = Group.create(name="test")
        u = User(email="*****@*****.**", password="******")
        db.session.add(u)
        db.session.commit()

        m = Membership.create(g, u, MembershipState.PENDING_ADMIN)
        m.accept()

        self.assertEqual(m.state, MembershipState.ACTIVE)
Example #7
0
    def test_create(self):
        """."""
        from invenio_groups.models import Group, Membership, \
            MembershipState
        from invenio_accounts.models import User

        g = Group.create(name="test")
        u = User(email="*****@*****.**", password="******")
        db.session.add(u)
        db.session.commit()

        m = Membership.create(g, u)
        self.assertEqual(m.state, MembershipState.ACTIVE)
        self.assertEqual(m.group.name, g.name)
        self.assertEqual(m.user.id, u.id)
        self.assertRaises(
            FlushError,
            Membership.create, g, u)
Example #8
0
    def test_query_requests(self):
        """."""
        from invenio_groups.models import Group, Membership, \
            MembershipState
        from invenio_accounts.models import User
        from flask.ext.sqlalchemy import BaseQuery

        a = User(email="*****@*****.**", password="******")
        u1 = User(email="*****@*****.**", password="******")
        u2 = User(email="[email protected]", password="******")
        db.session.add_all([a, u1, u2])
        db.session.commit()
        g = Group.create(name="test", admins=[a])
        Membership.create(g, u1, MembershipState.PENDING_ADMIN)
        Membership.create(g, u2, MembershipState.PENDING_USER)

        self.assertIsInstance(Membership.query_requests(u1), BaseQuery)
        self.assertEqual(Membership.query_requests(a).count(), 1)

        ad = Group.create(name="admin")
        g2 = Group.create(name="test2", admins=[ad])
        u3 = User(email="[email protected]", password="******")
        u4 = User(email="[email protected]", password="******")
        u5 = User(email="[email protected]", password="******")
        db.session.add_all([u3, u4, u5])
        db.session.commit()
        Membership.create(ad, u3, MembershipState.ACTIVE)
        Membership.create(g2, u4, MembershipState.PENDING_ADMIN)
        Membership.create(g2, u5, MembershipState.PENDING_USER)

        self.assertEqual(Membership.query_requests(u3).count(), 1)