mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-16 02:02:13 -05:00
By replacing user-provided services with manifest environment variables we avoid the need to set the application environment variables from the service data. Most of the variable names already match the service JSON keys, but we need to rename the ones that don't (eg MMG and Firetext `api_key`) this is done in a separate credentials PR.
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import os
|
|
import json
|
|
|
|
import pytest
|
|
|
|
from app.cloudfoundry_config import extract_cloudfoundry_config, set_config_env_vars
|
|
|
|
|
|
@pytest.fixture
|
|
def postgres_config():
|
|
return [
|
|
{
|
|
'credentials': {
|
|
'uri': 'postgres uri'
|
|
}
|
|
}
|
|
]
|
|
|
|
|
|
@pytest.fixture
|
|
def cloudfoundry_config(postgres_config):
|
|
return {
|
|
'postgres': postgres_config,
|
|
'user-provided': []
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def cloudfoundry_environ(monkeypatch, cloudfoundry_config):
|
|
monkeypatch.setenv('VCAP_SERVICES', json.dumps(cloudfoundry_config))
|
|
monkeypatch.setenv('VCAP_APPLICATION', '{"space_name": "🚀🌌"}')
|
|
|
|
|
|
@pytest.mark.usefixtures('os_environ', 'cloudfoundry_environ')
|
|
def test_extract_cloudfoundry_config_populates_other_vars():
|
|
extract_cloudfoundry_config()
|
|
|
|
assert os.environ['SQLALCHEMY_DATABASE_URI'] == 'postgres uri'
|
|
assert os.environ['NOTIFY_ENVIRONMENT'] == '🚀🌌'
|
|
assert os.environ['NOTIFY_LOG_PATH'] == '/home/vcap/logs/app.log'
|
|
|
|
|
|
@pytest.mark.usefixtures('os_environ', 'cloudfoundry_environ')
|
|
def test_set_config_env_vars_ignores_unknown_configs(cloudfoundry_config):
|
|
cloudfoundry_config['foo'] = {'credentials': {'foo': 'foo'}}
|
|
cloudfoundry_config['user-provided'].append({
|
|
'name': 'bar', 'credentials': {'bar': 'bar'}
|
|
})
|
|
|
|
set_config_env_vars(cloudfoundry_config)
|
|
|
|
assert 'foo' not in os.environ
|
|
assert 'bar' not in os.environ
|