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)),
# 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),
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()
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 {
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([
# 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):