def test_config_backend_sections(self, mock_init, mock_details, mock_services, mock_routes, mock_vhosts): haproxy = Haproxy() haproxy.specs = Specs() mock_details.return_value = {} mock_services.return_value = [] mock_routes.return_value = {} mock_vhosts.return_value = [] self.assertEqual({}, haproxy._config_backend_sections()) haproxy = Haproxy() haproxy.specs = Specs() mock_details.return_value = {'HW': {'balance': "source", 'virtual_host': "a.com", 'health_check': "check"}} mock_services.return_value = ["HW"] mock_routes.return_value = { 'HW': [{'container_name': 'HW_1', 'proto': 'http', 'port': '80', 'addr': '10.7.0.2'}, {'container_name': 'HW_2', 'proto': 'http', 'port': '80', 'addr': '10.7.0.3'}]} mock_vhosts.return_value = [ {'service_alias': 'HW', 'path': '', 'host': 'a.com', 'scheme': 'http', 'port': '80'}] self.assertEqual(OrderedDict([('backend SERVICE_HW', ['balance source', 'server HW_1 10.7.0.2:80 check', 'server HW_2 10.7.0.3:80 check'])]), haproxy._config_backend_sections()) haproxy = Haproxy() haproxy.specs = Specs() mock_details.return_value = {'HW': {'balance': "source", 'health_check': "check"}} mock_services.return_value = ["HW"] mock_routes.return_value = { 'HW': [{'container_name': 'HW_1', 'proto': 'http', 'port': '80', 'addr': '10.7.0.2'}, {'container_name': 'HW_2', 'proto': 'http', 'port': '80', 'addr': '10.7.0.3'}]} mock_vhosts.return_value = [] self.assertEqual({}, haproxy._config_backend_sections()) haproxy = Haproxy() haproxy.specs = Specs() haproxy.require_default_route = True mock_details.return_value = {'HW': {'balance': "source", 'health_check': "check"}} mock_services.return_value = ["HW"] mock_routes.return_value = { 'HW': [{'container_name': 'HW_1', 'proto': 'http', 'port': '80', 'addr': '10.7.0.2'}, {'container_name': 'HW_2', 'proto': 'http', 'port': '80', 'addr': '10.7.0.3'}]} mock_vhosts.return_value = [] self.assertEqual(OrderedDict([('backend default_service', ['balance source', 'server HW_1 10.7.0.2:80 check', 'server HW_2 10.7.0.3:80 check'])]), haproxy._config_backend_sections())
def test_config_frontend_sections(self, mock_init, mock_details, mock_services, mock_routes, mock_vhosts): haproxy = Haproxy() haproxy.specs = Specs() mock_details.return_value = {} mock_services.return_value = [] mock_routes.return_value = {} mock_vhosts.return_value = [] self.assertEqual({}, haproxy._config_frontend_sections()) haproxy = Haproxy() haproxy.specs = Specs() mock_details.return_value = {'HW': {'balance': "source", 'virtual_host': "a.com", 'health_check': "check"}} mock_services.return_value = ["HW"] mock_routes.return_value = { 'HW': [{'container_name': 'HW_1', 'proto': 'http', 'port': '80', 'addr': '10.7.0.2'}, {'container_name': 'HW_2', 'proto': 'http', 'port': '80', 'addr': '10.7.0.3'}]} mock_vhosts.return_value = [ {'service_alias': 'HW', 'path': '', 'host': 'a.com', 'scheme': 'http', 'port': '80'}] self.assertEqual(OrderedDict([('frontend port_80', ['bind :80', 'reqadd X-Forwarded-Proto:\\ http', 'maxconn 4096', 'acl is_websocket hdr(Upgrade) -i WebSocket', 'acl host_rule_1 hdr(host) -i a.com', 'acl host_rule_1_port hdr(host) -i a.com:80', 'use_backend SERVICE_HW if host_rule_1 or host_rule_1_port'])]), haproxy._config_frontend_sections()) haproxy = Haproxy() haproxy.specs = Specs() mock_details.return_value = {'HW': {'balance': "source", 'health_check': "check"}} mock_services.return_value = ["HW"] mock_routes.return_value = { 'HW': [{'container_name': 'HW_1', 'proto': 'http', 'port': '80', 'addr': '10.7.0.2'}, {'container_name': 'HW_2', 'proto': 'http', 'port': '80', 'addr': '10.7.0.3'}]} mock_vhosts.return_value = [] self.assertEqual(OrderedDict([('frontend default_port_80', ['bind :80', 'reqadd X-Forwarded-Proto:\\ http', 'maxconn 4096', 'default_backend default_service'])]), haproxy._config_frontend_sections())
def test_config_ssl_certs(self, mock_init, mock_get_extra_ssl_certs, mock_save): haproxy = Haproxy() haproxy.specs = Specs() self.assertEqual("", haproxy._config_ssl_certs()) haproxy = Haproxy() haproxy.specs = Specs() mock_get_extra_ssl_certs.return_value = ["cert"] Haproxy.cls_certs = [] self.assertEqual("ssl crt /certs/", haproxy._config_ssl_certs()) self.assertEqual(["cert"], Haproxy.cls_certs) self.assertTrue(haproxy.ssl_updated) haproxy = Haproxy() haproxy.specs = Specs() mock_get_extra_ssl_certs.return_value = ["cert"] Haproxy.cls_certs = ["cert"] self.assertEqual("ssl crt /certs/", haproxy._config_ssl_certs()) self.assertFalse(haproxy.ssl_updated)
def test_config_ssl_certs(self, mock_init, mock_save): haproxy = Haproxy() haproxy.specs = Specs() self.assertEqual("", haproxy._config_ssl_cacerts()) haproxy = Haproxy() haproxy.specs = Specs() haproxycfg.DEFAULT_CA_CERT = "cacert" Haproxy.cls_certs = [] self.assertEqual(" ca-file /cacerts/cert0.pem verify required", haproxy._config_ssl_cacerts()) self.assertEqual(["cacert"], Haproxy.cls_ca_certs) self.assertTrue(haproxy.ssl_updated) haproxy = Haproxy() haproxy.specs = Specs() haproxycfg.DEFAULT_CA_CERT = "cacert" Haproxy.cls_certs = ["cacert"] self.assertEqual(" ca-file /cacerts/cert0.pem verify required", haproxy._config_ssl_cacerts()) self.assertFalse(haproxy.ssl_updated) haproxycfg.DEFAULT_CA_CERT = config.DEFAULT_CA_CERT
def test_config_tcp_sections(self, mock_init, mock_details, mock_services, mock_routes): haproxy = Haproxy() haproxy.specs = Specs() mock_details.return_value = {} mock_services.return_value = [] mock_routes.return_value = {} self.assertEqual({}, haproxy._config_tcp_sections()) haproxy = Haproxy() haproxy.specs = Specs() mock_details.return_value = { 'HW': { 'tcp_ports': ['22'], 'health_check': 'check' } } mock_services.return_value = ["HW"] mock_routes.return_value = { 'HW': [{ 'container_name': 'HW_1', 'proto': 'tcp', 'port': '22', 'addr': '10.7.0.2' }, { 'container_name': 'HW_2', 'proto': 'tcp', 'port': '22', 'addr': '10.7.0.3' }, { 'container_name': 'HW_1', 'proto': 'tcp', 'port': '33', 'addr': '10.7.0.2' }, { 'container_name': 'HW_2', 'proto': 'tcp', 'port': '33', 'addr': '10.7.0.3' }] } self.assertEqual( OrderedDict([('listen port_22', [ 'bind :22', 'mode tcp', 'server HW_1 10.7.0.2:22 check', 'server HW_2 10.7.0.3:22 check' ])]), haproxy._config_tcp_sections()) haproxy = Haproxy() haproxy.specs = Specs() mock_details.return_value = { 'HW': { 'tcp_ports': ['22', '33'], 'health_check': 'check' } } mock_services.return_value = ["HW"] mock_routes.return_value = { 'HW': [{ 'container_name': 'HW_1', 'proto': 'tcp', 'port': '22', 'addr': '10.7.0.2' }, { 'container_name': 'HW_2', 'proto': 'tcp', 'port': '22', 'addr': '10.7.0.3' }, { 'container_name': 'HW_1', 'proto': 'tcp', 'port': '33', 'addr': '10.7.0.2' }, { 'container_name': 'HW_2', 'proto': 'tcp', 'port': '33', 'addr': '10.7.0.3' }] } self.assertEqual( OrderedDict([('listen port_33', [ 'bind :33', 'mode tcp', 'server HW_1 10.7.0.2:33 check', 'server HW_2 10.7.0.3:33 check' ]), ('listen port_22', [ 'bind :22', 'mode tcp', 'server HW_1 10.7.0.2:22 check', 'server HW_2 10.7.0.3:22 check' ])]), haproxy._config_tcp_sections()) haproxy = Haproxy() haproxy.specs = Specs() mock_details.return_value = { 'HW': { 'tcp_ports': ['22', '33'], 'health_check': 'check' }, 'WEB': { 'tcp_ports': ['22', '44'] } } mock_services.return_value = ["HW", "WEB"] mock_routes.return_value = { 'HW': [{ 'container_name': 'HW_1', 'proto': 'tcp', 'port': '22', 'addr': '10.7.0.2' }, { 'container_name': 'HW_2', 'proto': 'tcp', 'port': '22', 'addr': '10.7.0.3' }, { 'container_name': 'HW_1', 'proto': 'tcp', 'port': '33', 'addr': '10.7.0.2' }, { 'container_name': 'HW_2', 'proto': 'tcp', 'port': '33', 'addr': '10.7.0.3' }], 'WEB': [{ 'container_name': 'WEB_1', 'proto': 'tcp', 'port': '22', 'addr': '10.7.0.4' }, { 'container_name': 'WEB_2', 'proto': 'tcp', 'port': '22', 'addr': '10.7.0.5' }, { 'container_name': 'WEB_1', 'proto': 'tcp', 'port': '44', 'addr': '10.7.0.4' }, { 'container_name': 'WEB_2', 'proto': 'tcp', 'port': '44', 'addr': '10.7.0.5' }] } self.assertEqual( OrderedDict([ ('listen port_33', [ 'bind :33', 'mode tcp', 'server HW_1 10.7.0.2:33 check', 'server HW_2 10.7.0.3:33 check' ]), ('listen port_44', [ 'bind :44', 'mode tcp', 'server WEB_1 10.7.0.4:44 check inter 2000 rise 2 fall 3', 'server WEB_2 10.7.0.5:44 check inter 2000 rise 2 fall 3' ]), ('listen port_22', [ 'bind :22', 'mode tcp', 'server WEB_1 10.7.0.4:22 check inter 2000 rise 2 fall 3', 'server WEB_2 10.7.0.5:22 check inter 2000 rise 2 fall 3', 'server HW_1 10.7.0.2:22 check', 'server HW_2 10.7.0.3:22 check' ]) ]), haproxy._config_tcp_sections())