def test_settings_constructs(app_settings: ApplicationSettings):
    assert "vcs_url" in app_settings.public_dict()
    assert (app_settings.public_dict()["vcs_url"] ==
            "[email protected]:ITISFoundation/osparc-simcore.git")

    assert "app_name" in app_settings.public_dict()
    assert "api_version" in app_settings.public_dict()
def test_settings_to_client_statics_plugins(mock_webserver_service_environment,
                                            monkeypatch):
    disable_plugins = {"WEBSERVER_EXPORTER", "WEBSERVER_SCICRUNCH"}
    for name in disable_plugins:
        monkeypatch.setenv(name, "null")

    monkeypatch.setenv("WEBSERVER_VERSION_CONTROL", "0")
    disable_plugins.add("WEBSERVER_VERSION_CONTROL")

    settings = ApplicationSettings()
    statics = settings.to_client_statics()

    print(json.dumps(statics, indent=1))

    assert set(statics["pluginsDisabled"]) == disable_plugins
def test_settings_to_client_statics(app_settings: ApplicationSettings):

    statics = app_settings.to_client_statics()
    # can jsonify
    print(json.dumps(statics, indent=1))

    # all key in camelcase
    assert all(
        key[0] == key[0].lower() and "_" not in key and key.lower() != key
        for key in statics.keys()), f"Got {list(statics.keys())}"

    # special alias
    assert statics["stackName"] == "master-simcore"
    assert not statics["pluginsDisabled"]
def test_settings_infered_from_default_tests_config(
        default_app_cfg: ConfigDict,
        monkeypatch_setenv_from_app_config: Callable):
    # TODO: use app_config_for_production_legacy
    envs = monkeypatch_setenv_from_app_config(default_app_cfg)
    assert envs == convert_to_environ_vars(default_app_cfg)

    settings = ApplicationSettings.create_from_envs()

    print("settings=\n", settings.json(indent=1, sort_keys=True))

    infered_config = convert_to_app_config(settings)

    assert default_app_cfg == infered_config
    assert set(default_app_cfg.keys()) == set(infered_config.keys())
def test_avoid_sensitive_info_in_public(app_settings: ApplicationSettings):
    # avoids display of sensitive info
    assert not any("pass" in key for key in app_settings.public_dict().keys())
    assert not any("token" in key for key in app_settings.public_dict().keys())
    assert not any("secret" in key
                   for key in app_settings.public_dict().keys())