def test_vs_https_profiles(self, service):
        adapter = ServiceModelAdapter(mock.MagicMock())
        adapter.esd = Mock()
        adapter.esd.get_esd.return_value = None

        # should have http and oneconnect but not fastL4
        service['listener']['protocol'] = 'HTTPS'
        vs = adapter.get_virtual(service)
        assert '/Common/fastL4' in vs['profiles']
    def test_get_listener_policies(self, basic_l7service):
        adapter = ServiceModelAdapter(mock.MagicMock())
        adapter.esd = Mock()
        adapter.esd.get_esd.return_value = None

        policies = adapter.get_listener_policies(basic_l7service)
        policy = policies[0]

        assert len(policy['rules']) == len(policy['l7policy_rules'])
        for rule in policy['l7policy_rules']:
            assert rule.get('provisioning_status', "") == "ACTIVE"
    def test_get_listener_policies(self, basic_l7service):
        adapter = ServiceModelAdapter(mock.MagicMock())
        adapter.esd = Mock()
        adapter.esd.get_esd.return_value = None

        policies = adapter.get_listener_policies(basic_l7service)
        policy = policies[0]

        assert len(policy['rules']) == len(policy['l7policy_rules'])
        for rule in policy['l7policy_rules']:
            assert rule.get('provisioning_status', "") == "ACTIVE"
    def test_vs_terminated_https_profiles(self, service):
        adapter = ServiceModelAdapter(mock.MagicMock())
        adapter.esd = Mock()
        adapter.esd.get_esd.return_value = None

        # should have http and oneconnect but not fastL4
        service['listener']['protocol'] = 'TERMINATED_HTTPS'
        vs = adapter.get_virtual(service)
        assert '/Common/http' in vs['profiles']
        assert '/Common/oneconnect' in vs['profiles']
        assert '/Common/fastL4' not in vs['profiles']
    def test_vs_tcp_profiles(self, service):
        adapter = ServiceModelAdapter(mock.MagicMock())
        adapter.esd = Mock()
        adapter.esd.get_esd.return_value = None

        service['listener']['protocol'] = 'TCP'
        vs = adapter.get_virtual(service)

        # should have fastL4 but not http and oneconnect
        assert '/Common/http' not in vs['profiles']
        assert '/Common/oneconnect' not in vs['profiles']
        assert '/Common/fastL4' in vs['profiles']
    def test_vs_tcp_profiles(self, service):
        adapter = ServiceModelAdapter(mock.MagicMock())
        adapter.esd = Mock()
        adapter.esd.get_esd.return_value = None

        service['listener']['protocol'] = 'TCP'
        vs = adapter.get_virtual(service)

        # should have fastL4 but not http and oneconnect
        assert '/Common/http' not in vs['profiles']
        assert '/Common/oneconnect' not in vs['profiles']
        assert '/Common/fastL4' in vs['profiles']
    def test_get_listener_policies_2_policies(self, basic_l7service_2policies):
        adapter = ServiceModelAdapter(mock.MagicMock())
        adapter.esd = Mock()
        adapter.esd.get_esd.return_value = None

        l7service = basic_l7service_2policies
        listener = l7service.get('listener', None)

        policies = adapter.get_listener_policies(l7service)

        assert len(policies) == 2
        for policy in policies:
            assert len(policy['rules']) == 2
            assert len(policy['l7policy_rules']) == 2
            assert policy['listener_id'] == listener['id']
    def test_get_listener_policies_pending_delete(self, basic_l7service):
        adapter = ServiceModelAdapter(mock.MagicMock())
        adapter.esd = Mock()
        adapter.esd.get_esd.return_value = None

        service_rules = basic_l7service['l7policy_rules']
        service_rules[2]['provisioning_status'] = "PENDING_DELETE"
        policies = adapter.get_listener_policies(basic_l7service)
        policy = policies[0]

        assert len(policy['rules']) == 5
        assert len(policy['l7policy_rules']) == 4

        for rule in policy['l7policy_rules']:
            assert rule.get('provisioning_status', "") == "ACTIVE"
    def test_get_listener_policies_2_policies(self, basic_l7service_2policies):
        adapter = ServiceModelAdapter(mock.MagicMock())
        adapter.esd = Mock()
        adapter.esd.get_esd.return_value = None

        l7service = basic_l7service_2policies
        listener = l7service.get('listener', None)

        policies = adapter.get_listener_policies(l7service)

        assert len(policies) == 2
        for policy in policies:
            assert len(policy['rules']) == 2
            assert len(policy['l7policy_rules']) == 2
            assert policy['listener_id'] == listener['id']
    def test_get_listener_policies_pending_delete(self, basic_l7service):
        adapter = ServiceModelAdapter(mock.MagicMock())
        adapter.esd = Mock()
        adapter.esd.get_esd.return_value = None

        service_rules = basic_l7service['l7policy_rules']
        service_rules[2]['provisioning_status'] = "PENDING_DELETE"
        policies = adapter.get_listener_policies(basic_l7service)
        policy = policies[0]

        assert len(policy['rules']) == 5
        assert len(policy['l7policy_rules']) == 4

        for rule in policy['l7policy_rules']:
            assert rule.get('provisioning_status', "") == "ACTIVE"