diff --git a/README.md b/README.md index 8ba5ca8d295f6ee3e594f1faa130cdd25f65d5e2..92e4225585d0ea9ba5dd0b9e4ee1ac7571f4c287 100644 --- a/README.md +++ b/README.md @@ -17,13 +17,14 @@ CaosDB project. which points to the `resources` directory here in the pyinttest repository. You can create a symlink like that with the following command (adapt paths to match your setting): `custom$ ln -s ../../../../caosdb-pyinttest/resources debug-scripting-bin` -- Modify `pycaosdb.ini.template` and save it as `pycaosdb.ini`, taking care of the following points: - - Certificates must be valid and be specified in `pycaosdb.ini`. +- Modify `pylinkahead.ini.template` and save it as `pylinkahead.ini`, taking care of the following points: + - Certificates must be valid and be specified in `pylinkahead.ini`. - Server-side scripting paths must be given, otherwise server-side scripting will be omitted. - - The local path `test_server_side_scripting.bin_dir.local` should point to a - `linkahead-server/scripting/bin` somwhere. - - The remote path `test_server_side_scripting.bin_dir.server` should probably be something like - `/opt/caosdb/git/caosdb-server/scripting/bin-debug`. + - The *local* path `test_server_side_scripting.bin_dir.local` should point to the + `linkahead-server/scripting/bin` directory in linkahead-server sources. + - The *remote* path `test_server_side_scripting.bin_dir.server` should probably be something + like `/opt/caosdb/git/caosdb-server/scripting/bin-debug`. This is the path as seen by the + server (in most cases inside the docker container). - Paths for the file tests must exist, or be creatable by the testing script and the server. - Run the tests with `pytest` or `pytest-3` (depending on your system). - If you want to run just a single test, you can also select a single test file: diff --git a/tests/test_server_side_scripting.py b/tests/test_server_side_scripting.py index 1ad258ea335a1ab7a35d7ab2b1a5880bfb0c56de..e0f60b1f6dae66800adf7652dcd703293261226e 100644 --- a/tests/test_server_side_scripting.py +++ b/tests/test_server_side_scripting.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # ** header v3.0 -# This file is a part of the CaosDB Project. +# This file is a part of the LinkAhead Project. # # Copyright (C) 2018 Research Group Biomedical Physics, # Max-Planck-Institute for Dynamics and Self-Organization Göttingen @@ -33,13 +33,13 @@ import ssl import tempfile from http.client import HTTPSConnection -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.exceptions import HTTPClientError, HTTPResourceNotFoundError -from caosdb.utils.server_side_scripting import run_server_side_script +from linkahead import Info, RecordType +from linkahead import administration as admin +from linkahead import execute_query, get_config, get_connection +from linkahead.connection.encode import MultipartParam, multipart_encode +from linkahead.connection.utils import urlencode, urlparse +from linkahead.exceptions import HTTPClientError, HTTPResourceNotFoundError +from linkahead.utils.server_side_scripting import run_server_side_script from lxml import etree from pytest import mark, raises @@ -142,6 +142,29 @@ def teardown_module(): clean_database() +def request(method, headers, path, body=None): + """Connect without auth-token. + + This is clumsy because the pylib is not intended to be used as anonymous user. + """ + 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")) + + url = get_config().get("Connection", "url") + fullurl = urlparse(url) + + http_con = HTTPSConnection( + 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() + + def test_call_script_non_existing(): form = dict() form["call"] = "non_existing_script" @@ -355,28 +378,6 @@ def test_call_as_anonymous_with_administration_role(): assert "exception" not in diagnostics["caosdb"] -def request(method, headers, path, body=None): - """ Connect without auth-token. This is clumsy, bc the pylib is not - intended to be used as anonymous user. - """ - 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")) - - url = get_config().get("Connection", "url") - fullurl = urlparse(url) - - http_con = HTTPSConnection( - 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() - - def test_anonymous_script_calling_not_permitted(): form = dict() form["call"] = "ok"