コード例 #1
0
ファイル: test_groups.py プロジェクト: Boccca2014/CodeGra.de
import re
import uuid

import pytest
from werkzeug.local import LocalProxy

import psef
import psef.models as m
from helpers import (
    create_group, create_marker, create_group_set, create_submission,
    create_user_with_perms
)
from psef.permissions import CoursePermission as CPerm

# http_err = pytest.mark.http_err
perm_error = create_marker(pytest.mark.perm_error)
data_error = create_marker(pytest.mark.data_error)


@pytest.mark.parametrize(
    'user_with_perms', [
        [CPerm.can_edit_group_set],
        perm_error([]),
    ],
    indirect=True
)
@pytest.mark.parametrize(
    'min_size,max_size', [
        [1, 4],
        [100, 101],
        data_error((-1, 1)),
コード例 #2
0
# SPDX-License-Identifier: AGPL-3.0-only
import copy
import datetime

import pytest
import freezegun
from werkzeug.local import LocalProxy

import psef
import psef.models as m
from helpers import create_marker, create_user_with_perms
from psef.permissions import GlobalPermission

data_error = create_marker(pytest.mark.data_error)
perm_error = create_marker(pytest.mark.perm_error)
missing_error = create_marker(pytest.mark.missing_error)
password_error = create_marker(pytest.mark.password_error)
does_have_permission = create_marker(pytest.mark.does_have_permission)
needs_password = create_marker(pytest.mark.needs_password)


@pytest.mark.parametrize('active', [True, False])
@pytest.mark.parametrize('password', [
    data_error(None),
    data_error(5),
    'a',
    data_error(wrong=True)('b-the-wrong-password'),
])
@pytest.mark.parametrize('username', [
    data_error(None),
    data_error(5),
コード例 #3
0
import os
import copy
import time
import datetime
from random import shuffle

import pytest
from werkzeug.local import LocalProxy

import psef
import psef.models as m
import psef.features as feats
from helpers import create_marker
from psef.permissions import CoursePermission as CPerm

run_error = create_marker(pytest.mark.run_error)
perm_error = create_marker(pytest.mark.perm_error)
get_works = create_marker(pytest.mark.get_works)

ALL_LINTERS = sorted(
    ['Flake8', 'MixedWhitespace', 'Pylint', 'Checkstyle', 'PMD', 'ESLint'])

CHECKSTYLE_INVALID_EL = open(
    os.path.join(os.path.dirname(__file__), '..', 'test_data', 'test_linter',
                 'checkstyle_invalid_el.xml')).read()
CHECKSTYLE_INVALID_MODULE = open(
    os.path.join(os.path.dirname(__file__), '..', 'test_data', 'test_linter',
                 'checkstyle_invalid_module.xml')).read()
CHECKSTYLE_INVALID_PROP_WITH_CHILDREN = open(
    os.path.join(os.path.dirname(__file__), '..', 'test_data', 'test_linter',
                 'checkstyle_invalid_prop_with_children.xml')).read()
コード例 #4
0
ファイル: test_feedback.py プロジェクト: te5in/CodeGra.de
import re

import pytest
from freezegun import freeze_time

import psef
import helpers
import cg_dt_utils
import psef.models as m
from dotdict import dotdict
from helpers import get_id, dict_without, create_marker
from psef.permissions import CoursePermission as CPerm

perm_error = create_marker(pytest.mark.perm_error)
data_error = create_marker(pytest.mark.data_error)
late_error = create_marker(pytest.mark.late_error)
only_own = create_marker(pytest.mark.only_own)


@pytest.fixture
def make_add_reply(session, test_client, error_template, mail_functions):
    class Reply(dict):
        def get_url(self):
            return (f'/api/v1/comments/{self["comment_base_id"]}/'
                    f'replies/{self["id"]}')

        def delete(self):
            test_client.req('delete', self.get_url(), 204)

        def set_approval(self, approved: bool, *, err=False):
            result = error_template if err else {
コード例 #5
0
import json
import math
import random
import tempfile
import itertools
import contextlib
import subprocess

import pytest
from sqlalchemy import func

import psef
import psef.models as models
from helpers import create_marker

http_err = create_marker(pytest.mark.http_err)

original_popen = subprocess.Popen


def make_popen_stub(callback, crash=False):
    class PopenStub:
        @contextlib.contextmanager
        def __call__(self, call, **kwargs):
            self.data_dir = call[3]
            self.progress_prefix = call[call.index('-progress') + 1]
            # assert not kwargs['shell']
            callback(call, **kwargs)
            amount = len(os.listdir(self.data_dir))
            with tempfile.NamedTemporaryFile('w+') as f:
                f.write('\n'.join([
コード例 #6
0
# SPDX-License-Identifier: AGPL-3.0-only
import os
import sys
import json

import pytest

import helpers
import psef.auth as a
import psef.models as m
from helpers import create_marker
from psef.errors import APICodes, APIException
from psef.permissions import CoursePermission, GlobalPermission

should_raise = create_marker(pytest.mark.should_raise)


@pytest.mark.parametrize(
    'perm,vals',
    [
        # name, (bs_course (is ta), pse_course (is student), prolog (nothing))
        (CoursePermission.can_submit_own_work, (False, True, False)),
        (CoursePermission.can_see_others_work, (True, False, False)),
        (CoursePermission.can_see_assignments, (True, True, False)),
        should_raise(
            (GlobalPermission.can_add_users,
             (False, False, False)), )  # This is not a real permission
    ])
def test_course_permissions(ta_user, bs_course, pse_course, prolog_course,
                            perm, vals, logged_in, test_client, request,
                            error_template):