Esempio n. 1
0
def test_get_permissions_as_seen_by(collection, user, superuser):
    """Test getting viewable permissions as 'user'."""
    # If there are no permissions, we se no permissions.
    assert collection.get_permissions_as_seen_by(user) == []

    # If 'user' is not cataloging admin, they don't see regular user permissions on a collection.
    other_user = UserFactory()
    others_non_cataloging_admin_permission = Permission(user=other_user, collection=collection,
                                                        cataloging_admin=False).save_as(superuser)
    assert others_non_cataloging_admin_permission not in \
        collection.get_permissions_as_seen_by(user)

    # 'user' sees own and cataloging admin permissions on a collection.
    users_own_permission = Permission(user=user, collection=collection,
                                      cataloging_admin=False).save_as(superuser)
    third_user = UserFactory()
    thirds_cataloging_admin_permission = Permission(user=third_user, collection=collection,
                                                    cataloging_admin=True).save_as(superuser)
    assert len(collection.get_permissions_as_seen_by(user)) == 2
    assert users_own_permission in collection.get_permissions_as_seen_by(user)
    assert thirds_cataloging_admin_permission in collection.get_permissions_as_seen_by(user)

    # When 'user' becomes a cataloging admin on a collection, they sees all permissions.
    users_own_permission.cataloging_admin = True
    users_own_permission.save()
    assert len(collection.get_permissions_as_seen_by(user)) == 3
    assert others_non_cataloging_admin_permission in collection.get_permissions_as_seen_by(user)
    assert users_own_permission in collection.get_permissions_as_seen_by(user)
    assert thirds_cataloging_admin_permission in collection.get_permissions_as_seen_by(user)

    # As a system admin, you see all permissions on a collection.
    assert len(superuser.permissions) == 0
    assert len(collection.get_permissions_as_seen_by(superuser)) == 3
Esempio n. 2
0
def test_has_any_permission_for(user, collection, superuser):
    """Test has_any_permission_for return value."""
    other_collection = CollectionFactory()
    regular_permission = Permission(user=user, collection=other_collection,
                                    cataloging_admin=False).save_as(superuser)
    assert user.has_any_permission_for(collection) is False
    regular_permission.collection = collection
    regular_permission.save()
    assert user.has_any_permission_for(collection) is True
Esempio n. 3
0
def test_modified_at_defaults_to_current_datetime(superuser, user, collection):
    """Test modified date."""
    permission = Permission(user=user, collection=collection)
    permission.save_as(superuser)
    first_modified_at = permission.modified_at

    assert abs((first_modified_at - permission.created_at).total_seconds()) < 10

    permission.registrant = not permission.registrant
    permission.save()

    assert first_modified_at != permission.modified_at
Esempio n. 4
0
def test_is_cataloging_admin_for(user, collection, superuser):
    """Test is_cataloging_admin_for return value."""
    other_collection = CollectionFactory()
    not_admin_permission = Permission(user=user, collection=collection,
                                      cataloging_admin=False).save_as(superuser)
    admin_permission = Permission(user=user, collection=other_collection,
                                  cataloging_admin=True).save_as(superuser)

    assert user.is_cataloging_admin_for(not_admin_permission.collection) is False
    assert user.is_cataloging_admin_for(admin_permission.collection) is True

    assert user.is_cataloging_admin_for(admin_permission.collection,
                                        not_admin_permission.collection) is False
    not_admin_permission.cataloging_admin = True
    now_also_admin_permission = not_admin_permission.save()
    assert user.is_cataloging_admin_for(admin_permission.collection,
                                        now_also_admin_permission.collection) is True