test_killswitches.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. from __future__ import annotations
  2. import pytest
  3. from sentry.killswitches import _value_matches, normalize_value
  4. def test_normalize_value():
  5. assert normalize_value("store.load-shed-group-creation-projects", [1, 2, 3]) == [
  6. {"project_id": "1", "platform": None},
  7. {"project_id": "2", "platform": None},
  8. {"project_id": "3", "platform": None},
  9. ]
  10. assert normalize_value("store.load-shed-group-creation-projects", [{"project_id": 123}]) == [
  11. {"project_id": "123", "platform": None}, # match any platform
  12. ]
  13. @pytest.mark.parametrize(
  14. ("cfg", "value"),
  15. (
  16. (
  17. [
  18. {"project_id": "1"},
  19. {"project_id": "2"},
  20. {"project_id": "3"},
  21. ],
  22. {"project_id": 2},
  23. ),
  24. (
  25. [
  26. {"project_id": 1},
  27. {"project_id": 2},
  28. {"project_id": 3},
  29. ],
  30. {"project_id": 2},
  31. ),
  32. (
  33. [{}], # [{}] corresponds to any([all([])]), which is True
  34. {"project_id": 3},
  35. ),
  36. (
  37. [{"project_id": None}],
  38. {"project_id": 3},
  39. ),
  40. (
  41. [{"project_id": None, "platform": None}],
  42. {"project_id": 3},
  43. ),
  44. (
  45. [{"project_id": 3, "platform": None, "event_type": None}],
  46. {"project_id": 3},
  47. ),
  48. (
  49. [{"project_id": 3, "platform": None}],
  50. {"project_id": 3},
  51. ),
  52. (
  53. [{"event_type": "transaction"}],
  54. {"project_id": 3, "event_type": "transaction"},
  55. ),
  56. ),
  57. )
  58. def test_value_matches_positive(cfg, value):
  59. assert _value_matches("store.load-shed-group-creation-projects", cfg, value)
  60. @pytest.mark.parametrize(
  61. ("cfg", "value"),
  62. (
  63. (
  64. [
  65. {"project_id": "1"},
  66. {"project_id": "2"},
  67. {"project_id": "3"},
  68. ],
  69. {"project_id": 4},
  70. ),
  71. (
  72. [],
  73. {"project_id": 4},
  74. ),
  75. (
  76. [{"project_id": 2, "platform": None}],
  77. {"project_id": 3},
  78. ),
  79. (
  80. [
  81. {"project_id": "1"},
  82. {"project_id": "2"},
  83. {"project_id": "3"},
  84. ],
  85. {},
  86. ),
  87. ),
  88. )
  89. def test_value_matches_negative(cfg, value):
  90. assert not _value_matches("store.load-shed-group-creation-projects", cfg, value)