test_security_opts.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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_security_opt(mock_values):
  14. render = Render(mock_values)
  15. c1 = render.add_container("test_container", "test_image")
  16. c1.healthcheck.disable()
  17. c1.add_security_opt("apparmor", "unconfined")
  18. output = render.render()
  19. assert output["services"]["test_container"]["security_opt"] == ["apparmor=unconfined", "no-new-privileges=true"]
  20. def test_add_duplicate_security_opt(mock_values):
  21. render = Render(mock_values)
  22. c1 = render.add_container("test_container", "test_image")
  23. c1.healthcheck.disable()
  24. with pytest.raises(Exception):
  25. c1.add_security_opt("no-new-privileges", True)
  26. def test_add_empty_security_opt(mock_values):
  27. render = Render(mock_values)
  28. c1 = render.add_container("test_container", "test_image")
  29. c1.healthcheck.disable()
  30. with pytest.raises(Exception):
  31. c1.add_security_opt("", True)
  32. def test_remove_security_opt(mock_values):
  33. render = Render(mock_values)
  34. c1 = render.add_container("test_container", "test_image")
  35. c1.healthcheck.disable()
  36. c1.remove_security_opt("no-new-privileges")
  37. output = render.render()
  38. assert "security_opt" not in output["services"]["test_container"]
  39. def test_add_security_opt_boolean(mock_values):
  40. render = Render(mock_values)
  41. c1 = render.add_container("test_container", "test_image")
  42. c1.healthcheck.disable()
  43. c1.remove_security_opt("no-new-privileges")
  44. c1.add_security_opt("no-new-privileges", False)
  45. output = render.render()
  46. assert output["services"]["test_container"]["security_opt"] == ["no-new-privileges=false"]
  47. def test_add_security_opt_arg(mock_values):
  48. render = Render(mock_values)
  49. c1 = render.add_container("test_container", "test_image")
  50. c1.healthcheck.disable()
  51. c1.add_security_opt("label", "type", "svirt_apache_t")
  52. output = render.render()
  53. assert output["services"]["test_container"]["security_opt"] == [
  54. "label=type:svirt_apache_t",
  55. "no-new-privileges=true",
  56. ]
  57. def test_add_security_opt_with_invalid_opt(mock_values):
  58. render = Render(mock_values)
  59. c1 = render.add_container("test_container", "test_image")
  60. c1.healthcheck.disable()
  61. with pytest.raises(Exception):
  62. c1.add_security_opt("invalid")
  63. def test_add_security_opt_with_opt_containing_value(mock_values):
  64. render = Render(mock_values)
  65. c1 = render.add_container("test_container", "test_image")
  66. c1.healthcheck.disable()
  67. c1.remove_security_opt("no-new-privileges")
  68. with pytest.raises(Exception):
  69. c1.add_security_opt("no-new-privileges=true")
  70. with pytest.raises(Exception):
  71. c1.add_security_opt("apparmor:unconfined")