Make type required when creating an escalation policy step (#4356)

Related to https://github.com/grafana/oncall-private/issues/2689
This commit is contained in:
Matias Bordese 2024-05-20 10:49:19 -03:00 committed by GitHub
parent 55447695b7
commit 3c58c2f6f8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 22 additions and 39 deletions

View file

@ -41,7 +41,7 @@ class EscalationPolicySerializer(EagerLoadingMixin, OrderedModelSerializer):
escalation_chain_id = OrganizationFilteredPrimaryKeyRelatedField(
queryset=EscalationChain.objects, source="escalation_chain"
)
type = EscalationPolicyTypeField(source="step", allow_null=True)
type = EscalationPolicyTypeField(source="step")
duration = serializers.ChoiceField(required=False, source="wait_delay", choices=EscalationPolicy.DURATION_CHOICES)
persons_to_notify = UsersFilteredByOrganizationField(
queryset=User.objects,

View file

@ -148,6 +148,27 @@ def test_create_escalation_policy(
assert response.data == serializer.data
@pytest.mark.django_db
def test_create_empty_escalation_policy(
make_organization_and_user_with_token,
escalation_policies_setup,
):
organization, user, token = make_organization_and_user_with_token()
escalation_chain, _, _ = escalation_policies_setup(organization, user)
data_for_create = {
"escalation_chain_id": escalation_chain.public_primary_key,
"type": None,
}
client = APIClient()
url = reverse("api-public:escalation_policies-list")
response = client.post(url, data=data_for_create, format="json", HTTP_AUTHORIZATION=token)
assert response.status_code == status.HTTP_400_BAD_REQUEST
assert response.data["type"][0] == "This field may not be null."
@pytest.mark.django_db
def test_create_escalation_policy_manual_order_duplicated_position(
make_organization_and_user_with_token,

View file

@ -278,41 +278,3 @@ def test_get_notifiable_direct_paging_integrations(
make_channel_filter(arc, is_default=False)
notifiable_direct_paging_integrations = _assert(org, arc)
assert notifiable_direct_paging_integrations.count() == 1
@pytest.mark.parametrize(
"is_rbac_permissions_enabled_initially,rollout_percentage,expected",
[
# env var is not set, no orgs have is_rbac_permissions_enabled set
(False, 0.0, False),
# env var is not set but is_rbac_permissions_enabled is already set for all orgs
(True, 0.0, True),
# env var is set, only some orgs should be considered
(False, 0.5, "partial"),
(False, 1.0, True),
],
)
@pytest.mark.django_db
def test_should_be_considered_for_rbac_permissioning(
make_organization,
settings,
is_rbac_permissions_enabled_initially,
rollout_percentage,
expected,
):
NUM_ORGS = 5
settings.CLOUD_RBAC_ROLLOUT_PERCENTAGE = rollout_percentage
orgs = [
make_organization(is_rbac_permissions_enabled=is_rbac_permissions_enabled_initially) for _ in range(NUM_ORGS)
]
assert all(org.is_rbac_permissions_enabled is is_rbac_permissions_enabled_initially for org in orgs)
if expected == "partial":
assert all(
org.should_be_considered_for_rbac_permissioning() == (org.id <= NUM_ORGS * rollout_percentage)
for org in orgs
)
else:
assert all(org.should_be_considered_for_rbac_permissioning() is expected for org in orgs)