SecretServer init does not remove trailing slash from base_url
JostLuebbe opened this issue · 2 comments
Description of the issue
When passing a base_url ending in a slash ("/"), any attempts to get secrets will result in vague errors. We traced this back to to a bug in the __init__
method of the SecretServer
class. When declaring the self.api_url
class attribute the value used in the f-string is the function variable base_url
and NOT the intended self.base_url
which has been stripped of any trailing slashes.
Expected behavior
The following code should remove the trailing slash from any string passed into the function for the variable base_url, and then use that stripped value when declaring self.api_url
.
self.base_url = base_url.rstrip("/")
self.authorizer = authorizer
self.api_url = f"{base_url}/{api_path_uri.strip('/')}"
Actual behavior
The stripped self.base_url
is not used when declaring self.api_url
but instead the function argument base_url
is used directly in the f-string. This causes the code to not strip the trailing slash from the passed base_url.
Your environment
Debian OS
Python3.11
Latest library version
Steps to reproduce
from delinea.secrets.server import AccessTokenAuthorizer
from delinea.secrets.server import SecretServer
authorizer = AccessTokenAuthorizer(os.getenv("SECRET_SERVER_TOKEN"))
secret_server = SecretServer("https://example.url.com/", authorizer)
secret_server.get_secret(12345) # This will fail with very vague "delinea.secrets.server.SecretServerClientError"
secret_server = SecretServer("https://example.url.com", authorizer)
secret_server.get_secret(12345) # This will work
This will be resolved in #57
@JostLuebbe this should be resolved now in the 1.2.3 release.