diff --git a/tests/test_misc.py b/tests/test_misc.py index 0da3bffd7b48cd7840ee106954489befe210eb15..477ef4427fc68fba5cd370f9f421abf3e133b7d6 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -34,6 +34,7 @@ import caosdb as db from caosdb import (Container, Info, Property, Record, RecordType, execute_query) from pytest import raises +from pytest import mark def setup(): @@ -581,3 +582,12 @@ def test_cache_performance(): t2 = t.time() - t1 print("Time [s]: " + str(t2)) n += 10 + + +@mark.xfail(reason="Waits for MR https://gitlab.indiscale.com/caosdb/src/caosdb-pylib/-/merge_requests/15") +def test_role_after_retrieve(): + rt = db.RecordType("TestRT").insert() + entity = db.Entity(id=rt.id) + assert entity.role is None + entity.retrieve() + assert entity.role == rt.role diff --git a/tests/test_server_side_scripting.py b/tests/test_server_side_scripting.py index d3ce2e7145976c386accdd744b436f6b2d83a154..c181041343aaee76bd417f8750427e4817852857 100644 --- a/tests/test_server_side_scripting.py +++ b/tests/test_server_side_scripting.py @@ -26,20 +26,22 @@ Integration tests for the implementation of the server-side-scripting api. """ from __future__ import print_function, unicode_literals + +import json import os +import ssl import tempfile -from pytest import raises, mark -import json -from lxml import etree from http.client import HTTPSConnection -import ssl -from caosdb import get_connection, get_config, Info, execute_query, RecordType -from caosdb.exceptions import (HTTPClientError, - HTTPResourceNotFoundError) + +from caosdb import Info, RecordType +from caosdb import administration as admin +from caosdb import execute_query, get_config, get_connection from caosdb.connection.encode import MultipartParam, multipart_encode from caosdb.connection.utils import urlencode, urlparse -from caosdb import administration as admin +from caosdb.exceptions import HTTPClientError, HTTPResourceNotFoundError from caosdb.utils.server_side_scripting import run_server_side_script +from lxml import etree +from pytest import mark, raises _TEST_SCRIPTS = ["not_executable", "ok", "err", "ok_anonymous"] @@ -63,6 +65,7 @@ _ORIGINAL_SERVER_SCRIPTING_BIN_DIR = "" def clean_database(): admin._set_permissions("anonymous", []) d = execute_query("FIND ENTITY WITH ID > 99") + if len(d) > 0: d.delete() @@ -84,15 +87,17 @@ def setup_module(): clean_database() from os import makedirs - from os.path import join, isdir, exists + from os.path import exists, isdir, join from shutil import copyfile, copymode print("bin dir (local): " + str(_SERVER_SIDE_SCRIPTING_BIN_DIR_LOCAL)) print("bin dir (server): " + str(_SERVER_SIDE_SCRIPTING_BIN_DIR_SERVER)) print("tests scripts: " + str(_TEST_SCRIPTS)) + if not exists(_SERVER_SIDE_SCRIPTING_BIN_DIR_LOCAL): makedirs(_SERVER_SIDE_SCRIPTING_BIN_DIR_LOCAL) _REMOVE_FILES_AFTERWARDS.append(_SERVER_SIDE_SCRIPTING_BIN_DIR_LOCAL) assert isdir(_SERVER_SIDE_SCRIPTING_BIN_DIR_LOCAL) + for script_file in _TEST_SCRIPTS: target = join(_SERVER_SIDE_SCRIPTING_BIN_DIR_LOCAL, script_file) src = join(_TEST_SCRIPTS_DIR, script_file) @@ -105,6 +110,7 @@ def teardown_module(): from os import remove from os.path import exists, isdir from shutil import rmtree + for obsolete in _REMOVE_FILES_AFTERWARDS: if exists(obsolete): if isdir(obsolete): @@ -160,6 +166,7 @@ def test_call_err(): assert xml.xpath("/Response/script/stderr")[0].text == "err" +@mark.xfail(reason=("package incompatibility: pandas and numexpr")) def test_run_server_side_script_with_file_as_positional_param(): RecordType("TestRT").insert() _REMOVE_FILES_AFTERWARDS.append("test_file.txt") @@ -185,6 +192,7 @@ def test_run_server_side_script_with_file_as_positional_param(): assert "./.upload_files/test_file.txt" in json_data["files"] +@mark.xfail(reason=("package incompatibility: pandas and numexpr")) def test_run_server_side_script_with_additional_file(): RecordType("TestRT").insert() _REMOVE_FILES_AFTERWARDS.append("test_file.txt") @@ -208,6 +216,7 @@ def test_run_server_side_script_with_additional_file(): assert "./.upload_files/test_file.txt" in json_data["files"] +@mark.xfail(reason=("package incompatibility: pandas and numexpr")) def test_diagnostics_basic(): RecordType("TestRT").insert() @@ -246,6 +255,7 @@ def test_diagnostics_basic(): assert xml.xpath("/Response/script/stderr")[0].text is None +@mark.xfail(reason=("package incompatibility: pandas and numexpr")) def test_diagnostics_with_file_upload(): RecordType("TestRT").insert() _REMOVE_FILES_AFTERWARDS.append("test_file.txt") @@ -330,6 +340,7 @@ def request(method, headers, path, body=None): """ context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) context.verify_mode = ssl.CERT_REQUIRED + if hasattr(context, "check_hostname"): context.check_hostname = True context.load_verify_locations(get_config().get("Connection", "cacert")) @@ -341,6 +352,7 @@ def request(method, headers, path, body=None): str(fullurl.netloc), timeout=200, context=context) http_con.request(method=method, headers=headers, url=str(fullurl.path) + path, body=body) + return http_con.getresponse() @@ -364,7 +376,7 @@ def test_anonymous_script_calling_not_permitted(): assert response.getheader("Set-Cookie") is None # no auth token returned -@mark.local_server +@ mark.local_server def test_anonymous_script_calling_success(): admin.set_server_property("SERVER_SIDE_SCRIPTING_BIN_DIRS", _SERVER_SIDE_SCRIPTING_BIN_DIR_SERVER) @@ -398,6 +410,7 @@ def test_anonymous_script_calling_success(): @mark.local_server def test_evil_path(): subdir = os.path.join(_SERVER_SIDE_SCRIPTING_BIN_DIR_LOCAL, "subdir") + if not os.path.exists(subdir): os.makedirs(subdir) _REMOVE_FILES_AFTERWARDS.append(subdir)