Example #1
0
def test_integers_are_converted_to_strings():
    staging = WarehouseProfile(name="staging")
    staging.username = 5555
    assert staging.to_envvars() == {
        "WAREHOUSE_STAGING_HOST": "localhost",
        "WAREHOUSE_STAGING_USERNAME": "******",
    }
Example #2
0
def test_const_values_set_on_live_profile_instance_override_envvars(
        profile_name, monkeypatch):
    wp = WarehouseProfile(
        name=profile_name,
        profile_is_live=True,
        values={
            "host": "localhost.test",
            "username": "******"
        },
    )

    assert wp.profile_is_live
    assert wp.host == "localhost.test"
    assert wp.username == "test"
    assert wp.to_dict() == {
        "host": "localhost.test",
        "username": "******",
        "password": None,
    }

    monkeypatch.setenv(WarehouseProfile.host.get_envvar(wp), "ignored-host")
    monkeypatch.setenv(WarehouseProfile.password.get_envvar(wp),
                       "not-ignored-password")

    assert wp.host == "localhost.test"
    assert wp.password == "not-ignored-password"
Example #3
0
def test_concrete_frozen_profile(monkeypatch):
    monkeypatch.setenv("WAREHOUSE_PROFILE", "something_else")  # ignored
    monkeypatch.setenv("WAREHOUSE_STAGING_PARENT_PROFILE",
                       "not_production")  # ignored
    monkeypatch.setenv("WAREHOUSE_STAGING_USERNAME", "staging-username")
    monkeypatch.setenv("WAREHOUSE_PRODUCTION_PASSWORD", "production-password")

    live = WarehouseProfile(name="staging",
                            parent_name="production",
                            profile_is_live=True)
    frozen = WarehouseProfile(name="staging",
                              parent_name="production",
                              profile_is_live=False)

    assert live.username == "staging-username"
    assert frozen.username is None

    assert live.password == "production-password"
    assert frozen.password is None

    assert live.host == "localhost"
    assert frozen.host == "localhost"

    frozen._do_load()

    assert live.host == frozen.host
    assert live.username == frozen.username
    assert live.password == frozen.password
Example #4
0
def test_activates_live_profile(profile_name):
    wp = WarehouseProfile()

    instance = WarehouseProfile(name=profile_name)
    instance.activate()

    assert wp._active_profile_name == profile_name
    assert instance.profile_is_active
Example #5
0
def test_sets_profile_property_value(name, profile_is_live):
    profile = WarehouseProfile(name=name, profile_is_live=profile_is_live)

    assert profile.username is None

    profile.username = "******"
    assert profile.username == "the-new-username"

    assert "username" not in profile.__dict__
Example #6
0
def test_to_envvars_includes_parent_profile_setting(profile_is_live):
    staging = WarehouseProfile(
        name="staging",
        parent_name="production",
        profile_is_live=profile_is_live,
        values={"username": "******"},
    )

    assert staging.to_envvars() == {
        "WAREHOUSE_STAGING_PARENT_PROFILE": "production",
        "WAREHOUSE_STAGING_HOST": "localhost",
        "WAREHOUSE_STAGING_USERNAME": "******",
    }
Example #7
0
def test_profile_delegate_as_property(monkeypatch):
    the_profile = WarehouseProfile(name="p1")

    class WarehouseConfig(WarehouseProfile):
        @property
        def profile_delegate(self):
            return the_profile

        # NB! In this case when the profile object is available at class declaration time
        # the above could also be expressed with just:
        # profile_delegate = the_profile

        @property
        def profile(self):
            return the_profile

        @property
        def username(self):
            return self.profile.username or "root"

    config = WarehouseConfig()
    assert config.profile_name == "p1"
    assert config.username == "root"
    assert config.host == "localhost"

    monkeypatch.setenv("WAREHOUSE_P1_HOST", "p1.host")
    assert config.host == "p1.host"
    assert config["host"] == "p1.host"
Example #8
0
def test_frozen_profile_with_defaults(monkeypatch):
    wp = WarehouseProfile.load(
        name="staging",
        defaults={
            "host": "default-host",
            "username": "******"
        },
    )

    assert wp._const_defaults == {
        "host": "default-host",
        "username": "******",
    }

    assert wp._const_values == {}

    assert wp.host == "default-host"
    assert wp.username == "default-username"

    monkeypatch.setenv("WAREHOUSE_STAGING_HOST", "custom-host")
    assert wp.host == "default-host"
    assert wp.username == "default-username"

    wp._do_load()
    assert wp.host == "custom-host"
    assert wp.username == "default-username"
Example #9
0
def test_create_environment_with_and_without_activation():
    wp: Union[WarehouseProfile,
              EnvvarProfile] = WarehouseProfile(name='for_this_test')

    original_values = wp.to_dict()

    env_with_activation = wp.create_env(username='******',
                                        password=None)

    assert env_with_activation == {
        'WAREHOUSE_PROFILE': 'for_this_test',
        'WAREHOUSE_FOR_THIS_TEST_HOST': 'localhost',
        'WAREHOUSE_FOR_THIS_TEST_USERNAME': '******',
        'WAREHOUSE_FOR_THIS_TEST_PASSWORD': None,
    }

    env_without_activation = wp.create_env(username='******',
                                           password=None,
                                           include_activation=False)
    assert env_without_activation == {
        'WAREHOUSE_FOR_THIS_TEST_HOST': 'localhost',
        'WAREHOUSE_FOR_THIS_TEST_USERNAME': '******',
        'WAREHOUSE_FOR_THIS_TEST_PASSWORD': None,
    }

    # The profile remains unchanged
    assert original_values == wp.to_dict()
Example #10
0
def test_activates_named_profile():
    wp = WarehouseProfile()

    wp.activate("staging")
    assert wp._active_profile_name == "staging"

    wp.activate("production")
    assert wp._active_profile_name == "production"

    wp.activate(None)
    assert wp._active_profile_name is None
Example #11
0
def test_custom_profile_is_frozen_but_could_be_active(monkeypatch):
    monkeypatch.setenv("WAREHOUSE_PROFILE", "staging")

    profile = WarehouseProfile.load("staging")
    assert profile.profile_name == "staging"
    assert profile.profile_is_active

    monkeypatch.setenv("WAREHOUSE_PROFILE", "")
    assert not profile.profile_is_active

    monkeypatch.setenv("WAREHOUSE_PROFILE", "staging")
    assert profile.profile_is_active
Example #12
0
def test_environment_content_is_determined_at_creation_time():
    wp: Union[WarehouseProfile,
              EnvvarProfile] = WarehouseProfile(name='creation')

    first = wp.create_env(username='******')
    second = wp.create_env(password='******')

    assert first['WAREHOUSE_CREATION_USERNAME'] == 'first_username'
    assert second['WAREHOUSE_CREATION_USERNAME'] is None

    assert first['WAREHOUSE_CREATION_PASSWORD'] is None
    assert second['WAREHOUSE_CREATION_PASSWORD'] == 'second_password'
Example #13
0
def test_ultimate_live_profile():
    profile = WarehouseProfile()
    assert profile.profile_root == "warehouse"

    assert profile._const_name is None
    assert profile._const_parent_name is None
    assert profile.profile_is_live is True

    assert not profile.profile_name
    assert not profile._profile_parent_name
    assert not profile._profile_parent

    assert profile.profile_is_active
Example #14
0
def test_const_values_set_on_frozen_profile_instance(profile_name,
                                                     monkeypatch):
    wp = WarehouseProfile.load(name=profile_name,
                               values={
                                   "host": "localhost.test",
                                   "username": "******"
                               })

    assert not wp.profile_is_live
    assert wp.host == "localhost.test"
    assert wp.username == "test"
    assert wp.to_dict() == {
        "host": "localhost.test",
        "username": "******",
        "password": None,
    }
Example #15
0
def test_environment_applied(monkeypatch):
    wp: Union[WarehouseProfile,
              EnvvarProfile] = WarehouseProfile(name='env_test')

    outer_env = wp.create_env(username='******', password=None)

    # Environment content is determined at the time of the creation.
    inner_env = wp.create_env(password='******')

    assert wp.host == 'localhost'
    assert wp.username is None
    assert wp.password is None

    with outer_env.applied(monkeypatch):
        assert os.environ['WAREHOUSE_ENV_TEST_HOST'] == 'localhost'
        assert os.environ['WAREHOUSE_ENV_TEST_USERNAME'] == 'outer_username'
        assert 'WAREHOUSE_ENV_TEST_PASSWORD' not in os.environ

        assert wp.host == 'localhost'
        assert wp.username == 'outer_username'
        assert wp.password is None

        with inner_env.applied(monkeypatch):
            assert os.environ['WAREHOUSE_ENV_TEST_HOST'] == 'localhost'
            assert 'WAREHOUSE_ENV_TEST_USERNAME' not in os.environ
            assert os.environ[
                'WAREHOUSE_ENV_TEST_PASSWORD'] == 'inner_password'

            assert wp.host == 'localhost'
            assert wp.username is None
            assert wp.password == 'inner_password'

        assert wp.host == 'localhost'
        assert wp.username == 'outer_username'
        assert wp.password is None

    assert wp.host == 'localhost'
    assert wp.username is None
    assert wp.password is None
Example #16
0
def test_default_profile_is_active_and_live():
    profile = WarehouseProfile()
    assert profile.profile_name is None
    assert profile.profile_is_active
    assert profile.profile_is_live