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
`caosdb.State` class for more information.
* `etag` property for the `caosdb.Query` class. The etag allows to debug the
caching and to decide whether the server has changed between queries.
* function `_read_config_files` to read `pycaosdb.ini` files from different paths.
### Changed ###
......@@ -21,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Removed ###
### Fixed ###
* #45 - test_config_ini_via_envvar
### Security ###
......
......@@ -46,15 +46,9 @@ from caosdb.common.models import (ACL, ALL, FIX, NONE, OBLIGATORY, RECOMMENDED,
Query, QueryTemplate, Record, RecordType,
delete, execute_query, get_global_acl,
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.version import version as __version__
from caosdb.exceptions import *
from caosdb.version import version as __version__
# read configuration these files
if "PYCAOSDBINI" in environ:
configure(expanduser(environ["PYCAOSDBINI"]))
else:
configure(expanduser('~/.pycaosdb.ini'))
configure(join(getcwd(), "pycaosdb.ini"))
_read_config_files()
......@@ -28,6 +28,9 @@ except ImportError:
# python3
from configparser import ConfigParser
from os import environ, getcwd
from os.path import expanduser, join, isfile
def _reset_config():
global _pycaosdbconf
......@@ -49,3 +52,20 @@ def configure(inifile):
def get_config():
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
_handle_response_status(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 @@
# ** end header
#
import pytest
import caosdb as db
from os import environ, getcwd, remove
from os.path import expanduser, isfile, join
from pytest import raises
def test_config_ini_via_envvar():
from os import environ
from os.path import expanduser
@pytest.fixture
def temp_ini_files():
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):
environ["PYCAOSDBINI"]
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"
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