def test_apply_l4_esd_fallback_persist_profile_nopersist(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_fallback_persist="hash")

        vip = dict(profiles=[])

        adapter._apply_fastl4_esd(vip, esd)

        assert "policies" not in vip
        assert "persist" not in vip
        assert "fallbackPersistence" not in vip
    def test_apply_l4_esd_fallback_persist_profile_nopersist(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_fallback_persist="hash")

        vip = dict(profiles=[])

        adapter._apply_fastl4_esd(vip, esd)

        assert "policies" not in vip
        assert "persist" not in vip
        assert "fallbackPersistence" not in vip
    def test_apply_l4_esd_irules_empty(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_irule=[])

        vip = dict(profiles=[])

        adapter._apply_fastl4_esd(vip, esd)

        assert "policies" not in vip
        assert "persist" not in vip
        assert "fallbackPersistence" not in vip
        assert not vip['rules']
    def test_apply_l4_esd_persist_profile_collision(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_persist="hash")
        vip = dict(profiles=[], persist=[dict(name='sourceip')])

        adapter._apply_fastl4_esd(vip, esd)

        assert "fallbackPersistence" not in vip
        assert "policies" not in vip

        assert vip['persist'] == [dict(name="hash")]
        assert vip['profiles'] == ["/Common/http", "/Common/fastL4"]
    def test_apply_l4_esd_policy(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_policy=["demo_policy"])
        vip = dict(profiles=[])

        adapter._apply_fastl4_esd(vip, esd)

        assert "persist" not in vip
        assert "fallbackPersistence" not in vip
        assert vip['rules'] == []
        assert vip['policies'] == [dict(name='demo_policy',
                                        partition="Common")]
    def test_apply_l4_esd_irules_empty(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_irule=[])

        vip = dict(profiles=[])

        adapter._apply_fastl4_esd(vip, esd)

        assert "policies" not in vip
        assert "persist" not in vip
        assert "fallbackPersistence" not in vip
        assert not vip['rules']
    def test_apply_l4_esd_persist_profile_collision(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_persist="hash")
        vip = dict(profiles=[], persist=[dict(name='sourceip')])

        adapter._apply_fastl4_esd(vip, esd)

        assert "fallbackPersistence" not in vip
        assert "policies" not in vip

        assert vip['persist'] == [dict(name="hash")]
        assert vip['profiles'] == ["/Common/http", "/Common/fastL4"]
    def test_apply_l4_esd_policy(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_policy=["demo_policy"])
        vip = dict(profiles=[])

        adapter._apply_fastl4_esd(vip, esd)

        assert "persist" not in vip
        assert "fallbackPersistence" not in vip
        assert vip['rules'] == []
        assert vip['policies'] == [dict(name='demo_policy',
                                        partition="Common")]
    def test_apply_l4_esd_http_profile(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_http_profile="http_profile")

        vip = dict(profiles=[])

        adapter._apply_fastl4_esd(vip, esd)

        assert "policies" not in vip
        assert "persist" not in vip
        assert "fallbackPersistence" not in vip

        assert vip['profiles'] == ["/Common/http_profile", "/Common/fastL4"]
    def test_apply_l4_esd_irules(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_irule=[
            "_sys_https_redirect", "_sys_APM_ExchangeSupport_helper"
        ])
        vip = dict(profiles=[])

        adapter._apply_fastl4_esd(vip, esd)

        assert "policies" not in vip
        assert "persist" not in vip
        assert "fallbackPersistence" not in vip
        assert vip['rules'] == [
            "/Common/_sys_https_redirect",
            "/Common/_sys_APM_ExchangeSupport_helper"
        ]
    def test_apply_l4_esd_irules(adapter):
        adapter = ServiceModelAdapter(mock.MagicMock())
        esd = dict(lbaas_irule=[
            "_sys_https_redirect",
            "_sys_APM_ExchangeSupport_helper"
        ])
        vip = dict(profiles=[])

        adapter._apply_fastl4_esd(vip, esd)

        assert "policies" not in vip
        assert "persist" not in vip
        assert "fallbackPersistence" not in vip
        assert vip['rules'] == [
            "/Common/_sys_https_redirect",
            "/Common/_sys_APM_ExchangeSupport_helper"]