Exemple #1
0
def test_permission_of_models_in_rules_patterns(model_item):

    create_perms_post_migrate(model_item._meta.app_config)
    permissions = map_rules.__base__ + list(
        filter(
            lambda perm: not perm.startswith('detail_') and not perm.
            startswith('list_'),
            map(lambda x: x[0], model_item._meta.permissions)))

    __fp__ = __fp__in__test_permission_of_models_in_rules_patterns
    for perm in permissions:
        if perm in __fp__ and model_item in __fp__[perm]:
            continue

        test = False
        for rules_group in map_rules.rules_patterns:
            rules_model = rules_group['rules']
            for rm in rules_model:
                model = rm[0]
                rules = rm[1]
                if model == model_item:
                    if perm in rules:
                        test = True
                        break

        assert test, _('A permissão (%s) do model (%s) não foi adicionado em '
                       'nenhum grupo padrão para regras de acesso.') % (
                           perm, str(model_item))
Exemple #2
0
def test_permission_of_rules_exists(model_item):

    print(model_item)
    create_perms_post_migrate(model_item._meta.app_config)

    for rules_group in map_rules.rules_patterns:
        rules_model = rules_group['rules']
        for rm in rules_model:
            model = rm[0]
            rules = rm[1]

            if model != model_item:
                continue

            for r in rules:
                content_type = ContentType.objects.get_by_natural_key(
                    app_label=model._meta.app_label,
                    model=model._meta.model_name)

                codename = (r[1:] + model._meta.model_name)\
                    if r[0] == '.' and r[-1] == '_' else r
                p = Permission.objects.filter(content_type=content_type,
                                              codename=codename).exists()

                assert p, _(
                    'Permissão (%s) associada ao model (%s) '
                    'não está em _meta.permissions.') % (codename, model_item)
Exemple #3
0
def test_permission_of_models_in_rules_patterns(model_item):

    create_perms_post_migrate(model_item._meta.app_config)
    permissions = map_rules.__base__ + list(
        filter(
            lambda perm: not perm.startswith(
                'detail_') and not perm.startswith('list_'),
            map(lambda x: x[0],
                model_item._meta.permissions))
    )

    __fp__ = __fp__in__test_permission_of_models_in_rules_patterns
    for perm in permissions:
        if perm in __fp__ and model_item in __fp__[perm]:
            continue

        test = False
        for rules_group in map_rules.rules_patterns:
            rules_model = rules_group['rules']
            for rm in rules_model:
                model = rm[0]
                rules = rm[1]
                if model == model_item:
                    if perm in rules:
                        test = True
                        break

        assert test, _('A permissão (%s) do model (%s) não foi adicionado em '
                       'nenhum grupo padrão para regras de acesso.') % (
                           perm,
                           str(model_item))
Exemple #4
0
def test_permission_of_rules_exists(model_item):

    print(model_item)
    create_perms_post_migrate(model_item._meta.app_config)

    for rules_group in map_rules.rules_patterns:
        rules_model = rules_group['rules']
        for rm in rules_model:
            model = rm[0]
            rules = rm[1]

            if model != model_item:
                continue

            for r in rules:
                content_type = ContentType.objects.get_by_natural_key(
                    app_label=model._meta.app_label,
                    model=model._meta.model_name)

                codename = (r[1:] + model._meta.model_name)\
                    if r[0] == '.' and r[-1] == '_' else r
                p = Permission.objects.filter(
                    content_type=content_type,
                    codename=codename).exists()

                assert p, _('Permissão (%s) associada ao model (%s) '
                            'não está em _meta.permissions.') % (
                    codename,
                    model_item)
Exemple #5
0
def test_permission_required_of_decorators(permission):
    """
    testa se, nos decorators permission_required com ou sem method_decorator
    as permissões fixas escritas manualmente realmente exitem em Permission
    """

    for app in sapl_appconfs:
        # readequa permissões dos models adicionando
        # list e detail permissions
        create_perms_post_migrate(app)

    codename = permission[0].split('.')
    p = Permission.objects.filter(content_type__app_label=codename[0],
                                  codename=codename[1]).exists()

    assert p, _('Permissão (%s) na view (%s) não existe.') % (permission[0],
                                                              permission[1])
Exemple #6
0
def test_permission_required_of_decorators(permission):
    """
    testa se, nos decorators permission_required com ou sem method_decorator
    as permissões fixas escritas manualmente realmente exitem em Permission
    """

    for app in sapl_appconfs:
        # readequa permissões dos models adicionando
        # list e detail permissions
        create_perms_post_migrate(app)

    codename = permission[0].split('.')
    p = Permission.objects.filter(
        content_type__app_label=codename[0],
        codename=codename[1]).exists()

    assert p, _('Permissão (%s) na view (%s) não existe.') % (
        permission[0],
        permission[1])
Exemple #7
0
def test_permission_required_of_views_exists(url_item):
    """
    testa se, nas views que possuem atributo permission_required,
    as permissões fixas escritas manualmente realmente exitem em Permission

    Obs: isso não testa permissões escritas em anotações de método ou classe
    """

    for app in sapl_appconfs:
        # readequa permissões dos models adicionando
        # list e detail permissions
        create_perms_post_migrate(app)

    key, url, var, app_name = url_item
    url = '/' + (url % {v: 1 for v in var})

    assert '\n' not in url, """
        A url (%s) da app (%s) está mal formada.
    """ % (app_name, url)

    view = None
    if hasattr(key, 'view_class'):
        view = key.view_class

        if hasattr(view, 'permission_required'):
            if isinstance(view.permission_required, six.string_types):
                perms = (view.permission_required, )
            else:
                perms = view.permission_required

            if not perms:
                return

            for perm in perms:
                if perm[0] == '.' and perm[-1] == '_':
                    model = None
                    if hasattr(view, 'model') and view.model:
                        model = view.model
                    elif hasattr(view, 'filterset_class'):
                        model = view.fielterset_class._meta.model
                    elif hasattr(view, 'form_class'):
                        model = view.form_class._meta.model

                    assert model, _('model %s não localizado em %s') % (model,
                                                                        view)

                    codename = perm[1:] + view.model._meta.model_name
                else:
                    codename = perm

                codename = codename.split('.')

                if len(codename) == 1:
                    content_type = ContentType.objects.get_by_natural_key(
                        app_label=model._meta.app_label,
                        model=model._meta.model_name)
                    p = Permission.objects.filter(
                        content_type=content_type,
                        codename=codename[0]).exists()
                elif len(codename) == 2:
                    p = Permission.objects.filter(
                        content_type__app_label=codename[0],
                        codename=codename[1]).exists()

                assert p, _('Permissão (%s) na view (%s) não existe.') % (
                    codename, view)
Exemple #8
0
def test_permission_required_of_views_exists(url_item):
    """
    testa se, nas views que possuem atributo permission_required,
    as permissões fixas escritas manualmente realmente exitem em Permission

    Obs: isso não testa permissões escritas em anotações de método ou classe
    """

    for app in sapl_appconfs:
        # readequa permissões dos models adicionando
        # list e detail permissions
        create_perms_post_migrate(app)

    key, url, var, app_name = url_item
    url = '/' + (url % {v: 1 for v in var})

    assert '\n' not in url, """
        A url (%s) da app (%s) está mal formada.
    """ % (app_name, url)

    view = None
    if hasattr(key, 'view_class'):
        view = key.view_class

        if hasattr(view, 'permission_required'):
            if isinstance(view.permission_required, six.string_types):
                perms = (view.permission_required, )
            else:
                perms = view.permission_required

            if not perms:
                return

            for perm in perms:
                if perm[0] == '.' and perm[-1] == '_':
                    model = None
                    if hasattr(view, 'model') and view.model:
                        model = view.model
                    elif hasattr(view, 'filterset_class'):
                        model = view.fielterset_class._meta.model
                    elif hasattr(view, 'form_class'):
                        model = view.form_class._meta.model

                    assert model, _('model %s não localizado em %s'
                                    ) % (model, view)

                    codename = perm[1:] + view.model._meta.model_name
                else:
                    codename = perm

                codename = codename.split('.')

                if len(codename) == 1:
                    content_type = ContentType.objects.get_by_natural_key(
                        app_label=model._meta.app_label,
                        model=model._meta.model_name)
                    p = Permission.objects.filter(
                        content_type=content_type,
                        codename=codename[0]).exists()
                elif len(codename) == 2:
                    p = Permission.objects.filter(
                        content_type__app_label=codename[0],
                        codename=codename[1]).exists()

                assert p, _('Permissão (%s) na view (%s) não existe.') % (
                    codename,
                    view)