# Path: data_catalog/configuration.py
# class DCConfig(object):
# 
#     """
#     Contains a configuration of the Data Catalog.
#     No fields should  be written to be the user.
#     """
# 
#     def __init__(self):
#         """
#         Reads the configuration from environment variables set by Cloud Foundry (CF)
#         or by the developer when running locally.
#         Normally, CF sets the full configuration in environment variables,
#         e.g. VCAP_SERVICES (which is most important for us).
#         When working on a local machine, VCAP_SERVICES also needs to be set and contain some values.
#         Without them, the app couldn't work.
#         Most of configuration values have some defaults that will be set when they aren't configured
#         in the environment, but some of them, like the address of the authorization server can't
#         have a default. They need to be set manually by the developer to enable local work.
#         """
#         self._fail_if_no_configuration()
# 
#         self.app_base_path = '/rest/datasets'
# 
#         # if values aren't found we set defaults that are meant for local operations
#         self.app_port = int(os.getenv(VCAP_APP_PORT, '5000'))
#         self.log_level = os.getenv(LOG_LEVEL, 'DEBUG')
# 
#         services_config = json.loads(os.environ[VCAP_SERVICES])
#         self.elastic = ElasticConfig(services_config)
#         self.services_url = ServiceUrlsConfig(services_config)
# 
#     @staticmethod
#     def _fail_if_no_configuration():
#         """
#         Checks the environment variables to decide if the app can run.
#         :rtype: None
#         :raises NoConfigEnvError: When VCAP_SERVICES is not present and the app can't run.
#         """
#         if not VCAP_SERVICES in os.environ:
#             raise NoConfigEnvError(
#                 'VCAP_SERVICES environment variable needs to be set to run Data Catalog.')
# 
# VCAP_APP_PORT = 'VCAP_APP_PORT'
# 
# VCAP_SERVICES = 'VCAP_SERVICES'
# 
# VCAP_APPLICATION = 'VCAP_APPLICATION'
# 
# LOG_LEVEL = 'LOG_LEVEL'


import os
import pytest
import data_catalog.app
from contextlib import contextmanager
from mock import MagicMock
from data_catalog.configuration import (DCConfig, VCAP_APP_PORT, VCAP_SERVICES, VCAP_APPLICATION,
                                        LOG_LEVEL)
                "tags": []
            },
            {
                "credentials": {
                    "url": "http://downloader-broker.apps.example.com"
                },
                "label": "user-provided",
                "name": "downloader",
                "syslog_drain_url": "",
                "tags": []
            },
            {
                "credentials": {
                    "host": "http://user-management.apps.example.com"
                },
                "label": "user-provided",
                "name": "user-management",
                "syslog_drain_url": "",
                "tags": []
            }
        ]
    }'''
    os.environ[VCAP_APP_PORT] = '5555'
    os.environ[LOG_LEVEL] = 'INFO'
    os.environ[VCAP_APPLICATION] = "this is set just so the config doesn't try to set local values"


def clean_fake_env():
    os.environ.pop(VCAP_SERVICES, None)
    os.environ.pop(VCAP_APP_PORT, None)

# Path: data_catalog/configuration.py
# class DCConfig(object):
# 
#     """
#     Contains a configuration of the Data Catalog.
#     No fields should  be written to be the user.
#     """
# 
#     def __init__(self):
#         """
#         Reads the configuration from environment variables set by Cloud Foundry (CF)
#         or by the developer when running locally.
#         Normally, CF sets the full configuration in environment variables,
#         e.g. VCAP_SERVICES (which is most important for us).
#         When working on a local machine, VCAP_SERVICES also needs to be set and contain some values.
#         Without them, the app couldn't work.
#         Most of configuration values have some defaults that will be set when they aren't configured
#         in the environment, but some of them, like the address of the authorization server can't
#         have a default. They need to be set manually by the developer to enable local work.
#         """
#         self._fail_if_no_configuration()
# 
#         self.app_base_path = '/rest/datasets'
# 
#         # if values aren't found we set defaults that are meant for local operations
#         self.app_port = int(os.getenv(VCAP_APP_PORT, '5000'))
#         self.log_level = os.getenv(LOG_LEVEL, 'DEBUG')
# 
#         services_config = json.loads(os.environ[VCAP_SERVICES])
#         self.elastic = ElasticConfig(services_config)
#         self.services_url = ServiceUrlsConfig(services_config)
# 
#     @staticmethod
#     def _fail_if_no_configuration():
#         """
#         Checks the environment variables to decide if the app can run.
#         :rtype: None
#         :raises NoConfigEnvError: When VCAP_SERVICES is not present and the app can't run.
#         """
#         if not VCAP_SERVICES in os.environ:
#             raise NoConfigEnvError(
#                 'VCAP_SERVICES environment variable needs to be set to run Data Catalog.')
# 
# VCAP_APP_PORT = 'VCAP_APP_PORT'
# 
# VCAP_SERVICES = 'VCAP_SERVICES'
# 
# VCAP_APPLICATION = 'VCAP_APPLICATION'
# 
# LOG_LEVEL = 'LOG_LEVEL'


# Path: tests/conftest.py
import os
import pytest
import data_catalog.app
from contextlib import contextmanager
from mock import MagicMock
from data_catalog.configuration import (DCConfig, VCAP_APP_PORT, VCAP_SERVICES, VCAP_APPLICATION,
                                        LOG_LEVEL)

                "tags": []
            },
            {
                "credentials": {
                    "url": "http://downloader-broker.apps.example.com"
                },
                "label": "user-provided",
                "name": "downloader",
                "syslog_drain_url": "",
                "tags": []
            },
            {
                "credentials": {
                    "host": "http://user-management.apps.example.com"
                },
                "label": "user-provided",
                "name": "user-management",
                "syslog_drain_url": "",
                "tags": []
            }
        ]
    }'''
    os.environ[VCAP_APP_PORT] = '5555'
    os.environ[LOG_LEVEL] = 'INFO'
    os.environ[VCAP_APPLICATION] = "this is set just so the config doesn't try to set local values"


def clean_fake_env():
    os.environ.pop(VCAP_SERVICES, None)
    os.environ.pop(VCAP_APP_PORT, None)

    os.environ.pop(LOG_LEVEL, None)