From 81aa81856b7766705c3827171d4f0c9400ad53ab Mon Sep 17 00:00:00 2001 From: asherbar Date: Wed, 23 Jan 2019 13:35:27 +0200 Subject: [PATCH 1/3] Added named_services to AppEnv --- cfenv/__init__.py | 5 ++++- tests/test_cfenv.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/cfenv/__init__.py b/cfenv/__init__.py index dac8f8c..dcc2750 100644 --- a/cfenv/__init__.py +++ b/cfenv/__init__.py @@ -14,9 +14,12 @@ class AppEnv(object): def __init__(self): self.app = json.loads(os.getenv('VCAP_APPLICATION', '{}')) + env_services = json.loads(os.getenv('VCAP_SERVICES', '{}')) + self.named_services = {service_name: list(map(Service, services_list)) for service_name, services_list in + env_services.items()} self.services = [ Service(each) - for services in json.loads(os.getenv('VCAP_SERVICES', '{}')).values() + for services in env_services.values() for each in services ] diff --git a/tests/test_cfenv.py b/tests/test_cfenv.py index f49d609..0f6eb96 100644 --- a/tests/test_cfenv.py +++ b/tests/test_cfenv.py @@ -43,6 +43,16 @@ def services(monkeypatch): 'username': 'user', 'password': 'pass', }, + }, + { + 'name': 'test-database2', + 'label': 'webscaledb2', + 'plan': 'free', + 'credentials': { + 'url': 'https://test-service2.com/', + 'username': 'user2', + 'password': 'pass2', + }, } ], } @@ -84,6 +94,12 @@ def test_get_credential_default(self, env): assert env.get_credential('missing') is None assert env.get_credential('missing', 'default') == 'default' + def test_named_services(self, env): + assert len(env.named_services['test-credentials']) == 1 + assert len(env.named_services['test-database']) == 2 + assert env.named_services['test-database'][0].name == 'test-database' + assert env.named_services['test-database'][1].name == 'test-database2' + class TestService: def test_name(self, env): From 66dc770714758a9f4603ca02b08441a2336a3af7 Mon Sep 17 00:00:00 2001 From: asherbar Date: Wed, 23 Jan 2019 13:52:04 +0200 Subject: [PATCH 2/3] Update __init__.py --- cfenv/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cfenv/__init__.py b/cfenv/__init__.py index dcc2750..1c28310 100644 --- a/cfenv/__init__.py +++ b/cfenv/__init__.py @@ -15,8 +15,8 @@ class AppEnv(object): def __init__(self): self.app = json.loads(os.getenv('VCAP_APPLICATION', '{}')) env_services = json.loads(os.getenv('VCAP_SERVICES', '{}')) - self.named_services = {service_name: list(map(Service, services_list)) for service_name, services_list in - env_services.items()} + self.named_services = {service_name: list(map(Service, services_list)) + for service_name, services_list in env_services.items()} self.services = [ Service(each) for services in env_services.values() From 309bd00963f92978766238629f5c1b9fef0037b1 Mon Sep 17 00:00:00 2001 From: asherbar Date: Wed, 23 Jan 2019 14:08:36 +0200 Subject: [PATCH 3/3] Update __init__.py --- cfenv/__init__.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/cfenv/__init__.py b/cfenv/__init__.py index 1c28310..0a1b380 100644 --- a/cfenv/__init__.py +++ b/cfenv/__init__.py @@ -38,12 +38,11 @@ def index(self): @property def port(self): - port = ( - os.getenv('PORT') or - os.getenv('CF_INSTANCE_PORT') or - os.getenv('VCAP_APP_PORT') - ) - return int(port) if port else None + for key in('PORT', 'CF_INSTANCE_PORT', 'VCAP_APP_PORT'): + port = os.getenv(key) + if port: + return int(port) + return None @property def bind(self):