test_labels.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import pytest
  2. from render import Render
  3. @pytest.fixture
  4. def mock_values():
  5. return {
  6. "images": {
  7. "test_image": {
  8. "repository": "nginx",
  9. "tag": "latest",
  10. }
  11. },
  12. }
  13. def test_add_disallowed_label(mock_values):
  14. render = Render(mock_values)
  15. c1 = render.add_container("test_container", "test_image")
  16. c1.healthcheck.disable()
  17. with pytest.raises(Exception):
  18. c1.labels.add_label("com.docker.compose.service", "test_service")
  19. def test_add_duplicate_label(mock_values):
  20. render = Render(mock_values)
  21. c1 = render.add_container("test_container", "test_image")
  22. c1.healthcheck.disable()
  23. c1.labels.add_label("my.custom.label", "test_value")
  24. with pytest.raises(Exception):
  25. c1.labels.add_label("my.custom.label", "test_value1")
  26. def test_add_label_on_non_existing_container(mock_values):
  27. mock_values["labels"] = [
  28. {
  29. "key": "my.custom.label1",
  30. "value": "test_value1",
  31. "containers": ["test_container", "test_container2"],
  32. },
  33. ]
  34. render = Render(mock_values)
  35. c1 = render.add_container("test_container", "test_image")
  36. c1.healthcheck.disable()
  37. with pytest.raises(Exception):
  38. render.render()
  39. def test_add_label(mock_values):
  40. render = Render(mock_values)
  41. c1 = render.add_container("test_container", "test_image")
  42. c1.healthcheck.disable()
  43. c1.labels.add_label("my.custom.label1", "test_value1")
  44. c1.labels.add_label("my.custom.label2", "test_value2")
  45. output = render.render()
  46. assert output["services"]["test_container"]["labels"] == {
  47. "my.custom.label1": "test_value1",
  48. "my.custom.label2": "test_value2",
  49. }
  50. def test_auto_add_labels(mock_values):
  51. mock_values["labels"] = [
  52. {
  53. "key": "my.custom.label1",
  54. "value": "test_value1",
  55. "containers": ["test_container", "test_container2"],
  56. },
  57. {
  58. "key": "my.custom.label2",
  59. "value": "test_value2",
  60. "containers": ["test_container"],
  61. },
  62. ]
  63. render = Render(mock_values)
  64. c1 = render.add_container("test_container", "test_image")
  65. c2 = render.add_container("test_container2", "test_image")
  66. c1.healthcheck.disable()
  67. c2.healthcheck.disable()
  68. output = render.render()
  69. assert output["services"]["test_container"]["labels"] == {
  70. "my.custom.label1": "test_value1",
  71. "my.custom.label2": "test_value2",
  72. }
  73. assert output["services"]["test_container2"]["labels"] == {
  74. "my.custom.label1": "test_value1",
  75. }