123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import pytest
- from render import Render
- @pytest.fixture
- def mock_values():
- return {
- "images": {
- "test_image": {
- "repository": "nginx",
- "tag": "latest",
- }
- },
- }
- def test_no_portals(mock_values):
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- output = render.render()
- assert output["x-portals"] == []
- def test_add_portal_with_host_ips(mock_values):
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- port1 = {"bind_mode": "published", "port_number": 8080, "host_ips": ["1.2.3.4", "5.6.7.8"]}
- port2 = {"bind_mode": "published", "port_number": 8081, "host_ips": ["::", "0.0.0.0"]}
- port3 = {"bind_mode": "published", "port_number": 8081, "host_ips": ["1.2.3.4"]}
- port3 = {"bind_mode": "published", "port_number": 8081, "host_ips": ["1.2.3.4"]}
- port4 = {"bind_mode": "exposed", "port_number": 1234, "host_ips": ["1.2.3.4"]}
- render.portals.add(port1)
- render.portals.add(port1, {"name": "test1", "host": "my-host.com"})
- render.portals.add(port2, {"name": "test2"})
- render.portals.add(port3, {"name": "test3", "port": None})
- render.portals.add(port3, {"name": "test4", "port": 1234})
- render.portals.add(port4, {"name": "test5", "port": 1234})
- output = render.render()
- assert output["x-portals"] == [
- {"name": "Web UI", "scheme": "http", "host": "1.2.3.4", "port": 8080, "path": "/"},
- {"name": "test1", "scheme": "http", "host": "my-host.com", "port": 8080, "path": "/"},
- {"name": "test2", "scheme": "http", "host": "0.0.0.0", "port": 8081, "path": "/"},
- {"name": "test3", "scheme": "http", "host": "1.2.3.4", "port": 8081, "path": "/"},
- {"name": "test4", "scheme": "http", "host": "1.2.3.4", "port": 1234, "path": "/"},
- ]
- def test_add_duplicate_portal(mock_values):
- render = Render(mock_values)
- port = {"bind_mode": "published", "port_number": 8080, "host_ips": ["1.2.3.4", "5.6.7.8"]}
- render.portals.add(port)
- with pytest.raises(Exception):
- render.portals.add(port)
- def test_add_duplicate_portal_with_explicit_name(mock_values):
- render = Render(mock_values)
- port = {"bind_mode": "published", "port_number": 8080, "host_ips": ["1.2.3.4", "5.6.7.8"]}
- render.portals.add(port, {"name": "Some Portal"})
- with pytest.raises(Exception):
- render.portals.add(port, {"name": "Some Portal"})
- def test_add_portal_with_invalid_scheme(mock_values):
- render = Render(mock_values)
- port = {"bind_mode": "published", "port_number": 8080, "host_ips": ["1.2.3.4", "5.6.7.8"]}
- with pytest.raises(Exception):
- render.portals.add(port, {"scheme": "invalid_scheme"})
- def test_add_portal_with_invalid_path(mock_values):
- render = Render(mock_values)
- port = {"bind_mode": "published", "port_number": 8080, "host_ips": ["1.2.3.4", "5.6.7.8"]}
- with pytest.raises(Exception):
- render.portals.add(port, {"path": "invalid_path"})
- def test_add_portal_with_invalid_path_double_slash(mock_values):
- render = Render(mock_values)
- port = {"bind_mode": "published", "port_number": 8080, "host_ips": ["1.2.3.4", "5.6.7.8"]}
- with pytest.raises(Exception):
- render.portals.add(port, {"path": "/some//path"})
- def test_add_portal_with_invalid_port(mock_values):
- render = Render(mock_values)
- port = {"bind_mode": "published", "port_number": 8080, "host_ips": ["1.2.3.4", "5.6.7.8"]}
- with pytest.raises(Exception):
- render.portals.add(port, {"port": -1})
|