From 0a0f5170e54389f396a0055b569c3fa1bb66cac9 Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Tue, 20 Jun 2023 18:35:44 +0200 Subject: [PATCH] fix(api): validate variants on multi --- api/chalicelib/core/feature_flags.py | 3 +++ api/schemas.py | 8 -------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/api/chalicelib/core/feature_flags.py b/api/chalicelib/core/feature_flags.py index 88194a019..89f656dca 100644 --- a/api/chalicelib/core/feature_flags.py +++ b/api/chalicelib/core/feature_flags.py @@ -93,6 +93,9 @@ def prepare_constraints_params_to_search(data, project_id, user_id): def create_feature_flag(project_id: int, user_id: int, feature_flag_data: schemas.FeatureFlagSchema) -> Optional[int]: + if feature_flag_data.flag_type == schemas.FeatureFlagType.multi_variant and len(feature_flag_data.variants) == 0: + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Variants are required for multi variant flag") + validate_unique_flag_key(feature_flag_data, project_id) validate_multi_variant_flag(feature_flag_data) diff --git a/api/schemas.py b/api/schemas.py index 9aed71f50..9153d78ab 100644 --- a/api/schemas.py +++ b/api/schemas.py @@ -1429,13 +1429,5 @@ class FeatureFlagSchema(BaseModel): conditions: List[FeatureFlagCondition] = Field(default=[], min_items=1) variants: List[FeatureFlagVariant] = Field(default=[]) - @root_validator() - def validate_variants(cls, values): - flag_type = values.get('flag_type', FeatureFlagType.single_variant) - variants = values.get('variants', []) - if flag_type == 'multi' and len(variants) == 0: - raise ValueError('Variants should have at least one item for flag_type "multi"') - return values - class Config: alias_generator = attribute_to_camel_case