Skip to content
Snippets Groups Projects
Verified Commit be865c96 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

Merge branch 'dev' into f-fsm

parents 87a3104c 729fbdcc
No related branches found
No related tags found
1 merge request!3F fsm
Pipeline #6353 passed with warnings
This commit is part of merge request !3. Comments created here will be created in the context of that merge request.
...@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ...@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
`caosdb.State` class for more information. `caosdb.State` class for more information.
* `etag` property for the `caosdb.Query` class. The etag allows to debug the * `etag` property for the `caosdb.Query` class. The etag allows to debug the
caching and to decide whether the server has changed between queries. caching and to decide whether the server has changed between queries.
* function `_read_config_files` to read `pycaosdb.ini` files from different paths.
### Changed ### ### Changed ###
...@@ -21,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ...@@ -21,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Removed ### ### Removed ###
### Fixed ### ### Fixed ###
* #45 - test_config_ini_via_envvar
### Security ### ### Security ###
......
...@@ -46,15 +46,9 @@ from caosdb.common.models import (ACL, ALL, FIX, NONE, OBLIGATORY, RECOMMENDED, ...@@ -46,15 +46,9 @@ from caosdb.common.models import (ACL, ALL, FIX, NONE, OBLIGATORY, RECOMMENDED,
Query, QueryTemplate, Record, RecordType, Query, QueryTemplate, Record, RecordType,
delete, execute_query, get_global_acl, delete, execute_query, get_global_acl,
get_known_permissions, raise_errors) get_known_permissions, raise_errors)
from caosdb.configuration import configure, get_config from caosdb.configuration import _read_config_files, configure, get_config
from caosdb.connection.connection import configure_connection, get_connection from caosdb.connection.connection import configure_connection, get_connection
from caosdb.version import version as __version__
from caosdb.exceptions import * from caosdb.exceptions import *
from caosdb.version import version as __version__
# read configuration these files _read_config_files()
if "PYCAOSDBINI" in environ:
configure(expanduser(environ["PYCAOSDBINI"]))
else:
configure(expanduser('~/.pycaosdb.ini'))
configure(join(getcwd(), "pycaosdb.ini"))
...@@ -28,6 +28,9 @@ except ImportError: ...@@ -28,6 +28,9 @@ except ImportError:
# python3 # python3
from configparser import ConfigParser from configparser import ConfigParser
from os import environ, getcwd
from os.path import expanduser, join, isfile
def _reset_config(): def _reset_config():
global _pycaosdbconf global _pycaosdbconf
...@@ -49,3 +52,20 @@ def configure(inifile): ...@@ -49,3 +52,20 @@ def configure(inifile):
def get_config(): def get_config():
return _pycaosdbconf return _pycaosdbconf
def _read_config_files():
"""Function to read config files from different paths. Checks for path in $PYCAOSDBINI or home directory (.pycaosdb.ini) and in the current working directory (pycaosdb.ini).
Returns:
[list]: list with successfully parsed ini-files. Order: env_var or home directory, cwd. Used for testing the function.
"""
return_var = []
if "PYCAOSDBINI" in environ:
return_var.extend(configure(expanduser(environ["PYCAOSDBINI"])))
else:
return_var.extend(configure(expanduser('~/.pycaosdb.ini')))
if isfile(join(getcwd(), "pycaosdb.ini")):
return_var.extend(configure(join(getcwd(), "pycaosdb.ini")))
return return_var
...@@ -611,3 +611,12 @@ class _Connection(object): # pylint: disable=useless-object-inheritance ...@@ -611,3 +611,12 @@ class _Connection(object): # pylint: disable=useless-object-inheritance
_handle_response_status(http_response) _handle_response_status(http_response)
return http_response return http_response
def get_username(self):
"""
Return the username of the current connection.
Shortcut for: get_connection()._authenticator._credentials_provider.username
"""
return self._authenticator._credentials_provider.username
...@@ -22,19 +22,45 @@ ...@@ -22,19 +22,45 @@
# ** end header # ** end header
# #
import pytest
import caosdb as db import caosdb as db
from os import environ, getcwd, remove
from os.path import expanduser, isfile, join
from pytest import raises from pytest import raises
def test_config_ini_via_envvar(): @pytest.fixture
from os import environ def temp_ini_files():
from os.path import expanduser created_temp_ini_cwd = False
created_temp_ini_home = False
if not isfile(join(getcwd(), "pycaosdb.ini")):
open("pycaosdb.ini", 'a').close() # create temporary ini file
created_temp_ini_cwd = True
if not isfile(expanduser("~/.pycaosdb.ini")):
open(expanduser("~/.pycaosdb.ini"), 'a').close() # create temporary ini file in home directory
created_temp_ini_home = True
yield 0
if created_temp_ini_cwd:
remove("pycaosdb.ini")
if created_temp_ini_home:
remove(expanduser("~/.pycaosdb.ini"))
environ["PYCAOSDBINI"] = "~/.pycaosdb.ini"
def test_config_ini_via_envvar(temp_ini_files):
with raises(KeyError): with raises(KeyError):
environ["PYCAOSDBINI"] environ["PYCAOSDBINI"]
environ["PYCAOSDBINI"] = "bla bla" environ["PYCAOSDBINI"] = "bla bla"
assert environ["PYCAOSDBINI"] == "bla bla" assert environ["PYCAOSDBINI"] == "bla bla"
assert db.configuration.configure(environ["PYCAOSDBINI"]) == [] # test wrong configuration file in envvar
assert not expanduser(environ["PYCAOSDBINI"]) in db.configuration._read_config_files()
# test good configuration file in envvar
environ["PYCAOSDBINI"] = "~/.pycaosdb.ini" environ["PYCAOSDBINI"] = "~/.pycaosdb.ini"
assert db.configuration.configure(expanduser(environ["PYCAOSDBINI"])) == [expanduser("~/.pycaosdb.ini")] assert expanduser("~/.pycaosdb.ini") in db.configuration._read_config_files()
# test without envvar
environ.pop("PYCAOSDBINI")
assert expanduser("~/.pycaosdb.ini") in db.configuration._read_config_files()
# test configuration file in cwd
assert join(getcwd(), "pycaosdb.ini") in db.configuration._read_config_files()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment