# coding: utf-8

"""
    Agilicus API

    Agilicus API endpoints  # noqa: E501

    The version of the OpenAPI document: 2021.04.08
    Contact: dev@agilicus.com
    Generated by: https://openapi-generator.tech
"""


from __future__ import absolute_import

import unittest
import datetime

import agilicus_api
from agilicus_api.models.list_agent_connector_response import ListAgentConnectorResponse  # noqa: E501
from agilicus_api.rest import ApiException

class TestListAgentConnectorResponse(unittest.TestCase):
    """ListAgentConnectorResponse unit test stubs"""

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def make_instance(self, include_optional):
        """Test ListAgentConnectorResponse
            include_option is a boolean, when False only required
            params are included, when True both required and
            optional params are included """
        # model = agilicus_api.models.list_agent_connector_response.ListAgentConnectorResponse()  # noqa: E501
        if include_optional :
            return ListAgentConnectorResponse(
                agent_connectors = [
                    agilicus_api.models.agent_connector.AgentConnector(
                        metadata = {"id":"ac233asaksjfF","created":"2017-07-07T15:49:51.230+00:00","updated":"2020-01-27T12:19:46.430+00:00"}, 
                        spec = agilicus_api.models.agent_connector_spec.AgentConnectorSpec(
                            name = '0', 
                            name_slug = 'a', 
                            org_id = '123', 
                            max_number_connections = 0, 
                            connection_uri = '0', 
                            service_account_required = True, 
                            local_authentication_enabled = False, ), 
                        status = agilicus_api.models.agent_connector_status.AgentConnectorStatus(
                            application_services = [
                                agilicus_api.models.application_service.ApplicationService(
                                    created = '2015-07-07T15:49:51.230+02:00', 
                                    id = '123', 
                                    name = '0', 
                                    org_id = '0', 
                                    hostname = 'db.example.com', 
                                    ipv4_addresses = [
                                        '192.0.2.1'
                                        ], 
                                    name_resolution = 'static', 
                                    port = 56, 
                                    protocol = 'tcp', 
                                    assignments = [
                                        agilicus_api.models.application_service_assignment.ApplicationServiceAssignment(
                                            app_id = '0', 
                                            environment_name = '0', 
                                            org_id = '0', )
                                        ], 
                                    updated = '2015-07-07T15:49:51.230+02:00', 
                                    service_type = 'vpn', 
                                    service_protocol_type = 'ip', 
                                    tls_enabled = True, 
                                    tls_verify = True, 
                                    connector_id = '123', 
                                    connection_uri = '0', )
                                ], 
                            service_account_id = '0', 
                            info = agilicus_api.models.agent_connector_info.AgentConnectorInfo(
                                local_authentication_enabled = False, 
                                connections_info = [
                                    agilicus_api.models.agent_connector_connection_info.AgentConnectorConnectionInfo(
                                        connection_uri = 'wss://my-app.example.com/.agilcus-agent', 
                                        connection_location = 'my-app.example.com', 
                                        connection_path = '/.agilicus-agent', 
                                        connection_org_id = 'asda93oidl2xZ6', 
                                        connection_app_name = 'my-app', 
                                        is_an_auth_service = True, 
                                        end_to_end_tls = True, 
                                        max_number_connections = 0, 
                                        ip_services = [
                                            agilicus_api.models.application_service.ApplicationService(
                                                created = '2015-07-07T15:49:51.230+02:00', 
                                                id = '123', 
                                                name = '0', 
                                                org_id = '0', 
                                                hostname = 'db.example.com', 
                                                name_resolution = 'static', 
                                                port = 56, 
                                                protocol = 'tcp', 
                                                updated = '2015-07-07T15:49:51.230+02:00', 
                                                service_type = 'vpn', 
                                                service_protocol_type = 'ip', 
                                                tls_enabled = True, 
                                                tls_verify = True, 
                                                connector_id = '123', 
                                                connection_uri = '0', )
                                            ], 
                                        file_share_services = [
                                            agilicus_api.models.file_share_service.FileShareService(
                                                spec = agilicus_api.models.file_share_service_spec.FileShareServiceSpec(
                                                    name = 'share1', 
                                                    share_name = 'share1', 
                                                    org_id = '123', 
                                                    local_path = '/home/agilicus/public/share1', 
                                                    connector_id = '123', 
                                                    share_index = 1, 
                                                    transport_end_to_end_tls = True, 
                                                    transport_base_domain = '0', ), )
                                            ], 
                                        application_config = agilicus_api.models.application_config.ApplicationConfig(
                                            authentication_config = agilicus_api.models.application_authentication_config.ApplicationAuthenticationConfig(
                                                application_handles_authentication = False, 
                                                session_secret = 'Gns5ZPCvXGjzrtB672HAxfoSQ0dmqriSgiQf6uEQSBU=', ), 
                                            oidc_config = agilicus_api.models.oidc_proxy_config.OIDCProxyConfig(
                                                headers = agilicus_api.models.oidc_proxy_header.OIDCProxyHeader(
                                                    domain_substitution = agilicus_api.models.oidc_proxy_domain_substitution.OIDCProxyDomainSubstitution(
                                                        standard_headers = agilicus_api.models.oidc_proxy_standard_header.OIDCProxyStandardHeader(
                                                            location = True, 
                                                            origin = True, 
                                                            host = True, ), 
                                                        other_headers = [
                                                            agilicus_api.models.oidc_proxy_header_mapping.OIDCProxyHeaderMapping(
                                                                name = 'Accept-Encoding', 
                                                                value = '*', )
                                                            ], ), 
                                                    header_overrides = agilicus_api.models.oidc_proxy_header_override.OIDCProxyHeaderOverride(
                                                        request = agilicus_api.models.oidc_proxy_header_user_config.OIDCProxyHeaderUserConfig(
                                                            set = [
                                                                agilicus_api.models.oidc_proxy_header_mapping.OIDCProxyHeaderMapping(
                                                                    name = 'Accept-Encoding', 
                                                                    value = '*', )
                                                                ], 
                                                            add = [
                                                                agilicus_api.models.oidc_proxy_header_mapping.OIDCProxyHeaderMapping(
                                                                    name = 'Accept-Encoding', 
                                                                    value = '*', )
                                                                ], 
                                                            remove = [
                                                                agilicus_api.models.oidc_proxy_header_name.OIDCProxyHeaderName(
                                                                    name = '0', )
                                                                ], ), 
                                                        response = agilicus_api.models.oidc_proxy_header_user_config.OIDCProxyHeaderUserConfig(), ), ), 
                                                domain_mapping = agilicus_api.models.oidc_proxy_domain_mapping.OIDCProxyDomainMapping(
                                                    primary_external_name = 'app-1.cloud.egov.city', 
                                                    primary_internal_name = 'app-1.internal', 
                                                    other_mappings = [
                                                        agilicus_api.models.oidc_proxy_domain_name_mapping.OIDCProxyDomainNameMapping(
                                                            internal_name = 'local_test_app', 
                                                            external_name = 'app-1', )
                                                        ], ), 
                                                auth = agilicus_api.models.oidc_auth_config.OIDCAuthConfig(
                                                    auth_enabled = True, 
                                                    client_id = 'admin-portal', 
                                                    issuer = 'https://auth.cloud.egov.city', 
                                                    logout_url = '/login/logout.cfm', 
                                                    scopes = [
                                                        agilicus_api.models.oidc_proxy_scope.OIDCProxyScope(
                                                            name = 'urn:agilicus:app:app-1:owner', )
                                                        ], 
                                                    path_config = agilicus_api.models.oidc_auth_path_config.OIDCAuthPathConfig(
                                                        included_paths = [{"path":"/login"}], 
                                                        excluded_paths = [{"path":"/logout"}], ), ), 
                                                content_manipulation = agilicus_api.models.oidc_proxy_content_manipulation.OIDCProxyContentManipulation(
                                                    media_types = [
                                                        agilicus_api.models.oidc_content_type.OIDCContentType(
                                                            name = 'text/css', )
                                                        ], ), 
                                                upstream_config = agilicus_api.models.oidc_proxy_upstream_config.OIDCProxyUpstreamConfig(
                                                    scheme = 'https', 
                                                    hostname = 'httpbin.org', ), ), ), )
                                    ], 
                                allow_list = {
                                    'key' : [
                                        agilicus_api.models.allow_rule_compiled.AllowRuleCompiled(
                                            paths = [
                                                '/.*'
                                                ], 
                                            methods = ["get"], 
                                            any_auth_user = True, )
                                        ]
                                    }, 
                                authz_public_key = 'apublickey', 
                                application_service_uri = '0', 
                                tunnel_uri = 'wss://agent-server.ca-1.agilicus.ca/.agilicus-agent/control', 
                                service_forwarders = [
                                    agilicus_api.models.service_forwarder.ServiceForwarder(
                                        spec = agilicus_api.models.service_forwarder_spec.ServiceForwarderSpec(
                                            name = '0', 
                                            org_id = '0', 
                                            bind_address = 'localhost', 
                                            port = 56, 
                                            protocol = 'tcp', 
                                            application_service_id = '0', 
                                            connector_id = '123', ), )
                                    ], 
                                from_service_forwarders = [
                                    agilicus_api.models.service_forwarder.ServiceForwarder(
                                        spec = agilicus_api.models.service_forwarder_spec.ServiceForwarderSpec(
                                            name = '0', 
                                            org_id = '0', 
                                            bind_address = 'localhost', 
                                            port = 56, 
                                            protocol = 'tcp', 
                                            application_service_id = '0', 
                                            connector_id = '123', ), )
                                    ], ), 
                            stats = {"metadata":{"creation_time":"2020-07-07T15:40:46.010Z","collection_time":"2020-07-07T15:40:44.020Z","receipt_time":"2020-07-07T15:40:46.020Z"},"overall_status":"good","system":{"os_version":"5.4.0","os_uptime":15623,"agent_uptime":15000,"agent_version":"v0.29.5 8e4fe7281219aa02dcc088154b7e7e3fc279f259","agent_connector_id":"as3asldlt3a","agent_connector_org_id":"dO04ldlfwe9a3l"},"transport":{"active_connections":5,"target_number_connections":5,"connection_start_count":10,"connection_stop_count":5}}, 
                            local_authentication = agilicus_api.models.agent_local_auth_info.AgentLocalAuthInfo(
                                org_id = '123', 
                                local_authentication_public_key = '-----BEGIN PRIVATE KEY-----\nActualKeyContents\n-----END PRIVATE KEY-----\n', ), ), )
                    ], 
                limit = 56, 
                page_at_id = 'sd0X4asd3as'
            )
        else :
            return ListAgentConnectorResponse(
                agent_connectors = [
                    agilicus_api.models.agent_connector.AgentConnector(
                        metadata = {"id":"ac233asaksjfF","created":"2017-07-07T15:49:51.230+00:00","updated":"2020-01-27T12:19:46.430+00:00"}, 
                        spec = agilicus_api.models.agent_connector_spec.AgentConnectorSpec(
                            name = '0', 
                            name_slug = 'a', 
                            org_id = '123', 
                            max_number_connections = 0, 
                            connection_uri = '0', 
                            service_account_required = True, 
                            local_authentication_enabled = False, ), 
                        status = agilicus_api.models.agent_connector_status.AgentConnectorStatus(
                            application_services = [
                                agilicus_api.models.application_service.ApplicationService(
                                    created = '2015-07-07T15:49:51.230+02:00', 
                                    id = '123', 
                                    name = '0', 
                                    org_id = '0', 
                                    hostname = 'db.example.com', 
                                    ipv4_addresses = [
                                        '192.0.2.1'
                                        ], 
                                    name_resolution = 'static', 
                                    port = 56, 
                                    protocol = 'tcp', 
                                    assignments = [
                                        agilicus_api.models.application_service_assignment.ApplicationServiceAssignment(
                                            app_id = '0', 
                                            environment_name = '0', 
                                            org_id = '0', )
                                        ], 
                                    updated = '2015-07-07T15:49:51.230+02:00', 
                                    service_type = 'vpn', 
                                    service_protocol_type = 'ip', 
                                    tls_enabled = True, 
                                    tls_verify = True, 
                                    connector_id = '123', 
                                    connection_uri = '0', )
                                ], 
                            service_account_id = '0', 
                            info = agilicus_api.models.agent_connector_info.AgentConnectorInfo(
                                local_authentication_enabled = False, 
                                connections_info = [
                                    agilicus_api.models.agent_connector_connection_info.AgentConnectorConnectionInfo(
                                        connection_uri = 'wss://my-app.example.com/.agilcus-agent', 
                                        connection_location = 'my-app.example.com', 
                                        connection_path = '/.agilicus-agent', 
                                        connection_org_id = 'asda93oidl2xZ6', 
                                        connection_app_name = 'my-app', 
                                        is_an_auth_service = True, 
                                        end_to_end_tls = True, 
                                        max_number_connections = 0, 
                                        ip_services = [
                                            agilicus_api.models.application_service.ApplicationService(
                                                created = '2015-07-07T15:49:51.230+02:00', 
                                                id = '123', 
                                                name = '0', 
                                                org_id = '0', 
                                                hostname = 'db.example.com', 
                                                name_resolution = 'static', 
                                                port = 56, 
                                                protocol = 'tcp', 
                                                updated = '2015-07-07T15:49:51.230+02:00', 
                                                service_type = 'vpn', 
                                                service_protocol_type = 'ip', 
                                                tls_enabled = True, 
                                                tls_verify = True, 
                                                connector_id = '123', 
                                                connection_uri = '0', )
                                            ], 
                                        file_share_services = [
                                            agilicus_api.models.file_share_service.FileShareService(
                                                spec = agilicus_api.models.file_share_service_spec.FileShareServiceSpec(
                                                    name = 'share1', 
                                                    share_name = 'share1', 
                                                    org_id = '123', 
                                                    local_path = '/home/agilicus/public/share1', 
                                                    connector_id = '123', 
                                                    share_index = 1, 
                                                    transport_end_to_end_tls = True, 
                                                    transport_base_domain = '0', ), )
                                            ], 
                                        application_config = agilicus_api.models.application_config.ApplicationConfig(
                                            authentication_config = agilicus_api.models.application_authentication_config.ApplicationAuthenticationConfig(
                                                application_handles_authentication = False, 
                                                session_secret = 'Gns5ZPCvXGjzrtB672HAxfoSQ0dmqriSgiQf6uEQSBU=', ), 
                                            oidc_config = agilicus_api.models.oidc_proxy_config.OIDCProxyConfig(
                                                headers = agilicus_api.models.oidc_proxy_header.OIDCProxyHeader(
                                                    domain_substitution = agilicus_api.models.oidc_proxy_domain_substitution.OIDCProxyDomainSubstitution(
                                                        standard_headers = agilicus_api.models.oidc_proxy_standard_header.OIDCProxyStandardHeader(
                                                            location = True, 
                                                            origin = True, 
                                                            host = True, ), 
                                                        other_headers = [
                                                            agilicus_api.models.oidc_proxy_header_mapping.OIDCProxyHeaderMapping(
                                                                name = 'Accept-Encoding', 
                                                                value = '*', )
                                                            ], ), 
                                                    header_overrides = agilicus_api.models.oidc_proxy_header_override.OIDCProxyHeaderOverride(
                                                        request = agilicus_api.models.oidc_proxy_header_user_config.OIDCProxyHeaderUserConfig(
                                                            set = [
                                                                agilicus_api.models.oidc_proxy_header_mapping.OIDCProxyHeaderMapping(
                                                                    name = 'Accept-Encoding', 
                                                                    value = '*', )
                                                                ], 
                                                            add = [
                                                                agilicus_api.models.oidc_proxy_header_mapping.OIDCProxyHeaderMapping(
                                                                    name = 'Accept-Encoding', 
                                                                    value = '*', )
                                                                ], 
                                                            remove = [
                                                                agilicus_api.models.oidc_proxy_header_name.OIDCProxyHeaderName(
                                                                    name = '0', )
                                                                ], ), 
                                                        response = agilicus_api.models.oidc_proxy_header_user_config.OIDCProxyHeaderUserConfig(), ), ), 
                                                domain_mapping = agilicus_api.models.oidc_proxy_domain_mapping.OIDCProxyDomainMapping(
                                                    primary_external_name = 'app-1.cloud.egov.city', 
                                                    primary_internal_name = 'app-1.internal', 
                                                    other_mappings = [
                                                        agilicus_api.models.oidc_proxy_domain_name_mapping.OIDCProxyDomainNameMapping(
                                                            internal_name = 'local_test_app', 
                                                            external_name = 'app-1', )
                                                        ], ), 
                                                auth = agilicus_api.models.oidc_auth_config.OIDCAuthConfig(
                                                    auth_enabled = True, 
                                                    client_id = 'admin-portal', 
                                                    issuer = 'https://auth.cloud.egov.city', 
                                                    logout_url = '/login/logout.cfm', 
                                                    scopes = [
                                                        agilicus_api.models.oidc_proxy_scope.OIDCProxyScope(
                                                            name = 'urn:agilicus:app:app-1:owner', )
                                                        ], 
                                                    path_config = agilicus_api.models.oidc_auth_path_config.OIDCAuthPathConfig(
                                                        included_paths = [{"path":"/login"}], 
                                                        excluded_paths = [{"path":"/logout"}], ), ), 
                                                content_manipulation = agilicus_api.models.oidc_proxy_content_manipulation.OIDCProxyContentManipulation(
                                                    media_types = [
                                                        agilicus_api.models.oidc_content_type.OIDCContentType(
                                                            name = 'text/css', )
                                                        ], ), 
                                                upstream_config = agilicus_api.models.oidc_proxy_upstream_config.OIDCProxyUpstreamConfig(
                                                    scheme = 'https', 
                                                    hostname = 'httpbin.org', ), ), ), )
                                    ], 
                                allow_list = {
                                    'key' : [
                                        agilicus_api.models.allow_rule_compiled.AllowRuleCompiled(
                                            paths = [
                                                '/.*'
                                                ], 
                                            methods = ["get"], 
                                            any_auth_user = True, )
                                        ]
                                    }, 
                                authz_public_key = 'apublickey', 
                                application_service_uri = '0', 
                                tunnel_uri = 'wss://agent-server.ca-1.agilicus.ca/.agilicus-agent/control', 
                                service_forwarders = [
                                    agilicus_api.models.service_forwarder.ServiceForwarder(
                                        spec = agilicus_api.models.service_forwarder_spec.ServiceForwarderSpec(
                                            name = '0', 
                                            org_id = '0', 
                                            bind_address = 'localhost', 
                                            port = 56, 
                                            protocol = 'tcp', 
                                            application_service_id = '0', 
                                            connector_id = '123', ), )
                                    ], 
                                from_service_forwarders = [
                                    agilicus_api.models.service_forwarder.ServiceForwarder(
                                        spec = agilicus_api.models.service_forwarder_spec.ServiceForwarderSpec(
                                            name = '0', 
                                            org_id = '0', 
                                            bind_address = 'localhost', 
                                            port = 56, 
                                            protocol = 'tcp', 
                                            application_service_id = '0', 
                                            connector_id = '123', ), )
                                    ], ), 
                            stats = {"metadata":{"creation_time":"2020-07-07T15:40:46.010Z","collection_time":"2020-07-07T15:40:44.020Z","receipt_time":"2020-07-07T15:40:46.020Z"},"overall_status":"good","system":{"os_version":"5.4.0","os_uptime":15623,"agent_uptime":15000,"agent_version":"v0.29.5 8e4fe7281219aa02dcc088154b7e7e3fc279f259","agent_connector_id":"as3asldlt3a","agent_connector_org_id":"dO04ldlfwe9a3l"},"transport":{"active_connections":5,"target_number_connections":5,"connection_start_count":10,"connection_stop_count":5}}, 
                            local_authentication = agilicus_api.models.agent_local_auth_info.AgentLocalAuthInfo(
                                org_id = '123', 
                                local_authentication_public_key = '-----BEGIN PRIVATE KEY-----\nActualKeyContents\n-----END PRIVATE KEY-----\n', ), ), )
                    ],
                limit = 56,
        )

    def testListAgentConnectorResponse(self):
        """Test ListAgentConnectorResponse"""
        inst_req_only = self.make_instance(include_optional=False)
        inst_req_and_optional = self.make_instance(include_optional=True)


if __name__ == '__main__':
    unittest.main()
