From 703a5c4fd5974aafc076c90aea68604728f226d0 Mon Sep 17 00:00:00 2001 From: Neda Moeini <neda.moeini@geant.org> Date: Wed, 26 Feb 2025 13:56:20 +0100 Subject: [PATCH] Update faker provider to make a unique random ids for GS and GA IDs --- test/conftest.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/test/conftest.py b/test/conftest.py index 38fa426f6..731e0a3c1 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -33,6 +33,7 @@ from starlette.testclient import TestClient from urllib3_mock import Responses from gso.services.partners import PartnerSchema, create_partner +from gso.services.subscriptions import is_resource_type_value_unique from gso.utils.types.interfaces import LAGMember, LAGMemberList from test.fixtures import * # noqa: F403 @@ -83,21 +84,25 @@ class FakerProvider(BaseProvider): return f"TT#{random_date}{random_int}" + def generate_unique_id(self, field_name: str, prefix: str, min_value: int = 50000, max_value: int = 99999) -> str: + """Generate a unique ID with a given prefix and ensure uniqueness in the database.""" + while True: + random_int = self.generator.random_int(min=min_value, max=max_value) + unique_id = f"{prefix}-{random_int}" + if is_resource_type_value_unique(field_name, unique_id): + return unique_id + def ga_id(self) -> str: - random_int = self.generator.random_int(min=50000, max=99999) - return f"GA-{random_int}" + return self.generate_unique_id("ga_id", "GA") def gs_id(self) -> str: - random_int = self.generator.random_int(min=50000, max=99999) - return f"GS-{random_int}" + return self.generate_unique_id("gs_id", "GS") def imported_ga_id(self) -> str: - random_int = self.generator.random_int(min=00000, max=50000) - return f"GA-{random_int}" + return self.generate_unique_id("ga_id", "GA", min_value=00000, max_value=50000) def imported_gs_id(self) -> str: - random_int = self.generator.random_int(min=00000, max=50000) - return f"GS-{random_int}" + return self.generate_unique_id("gs_id", "GS", min_value=00000, max_value=50000) def site_name(self) -> str: site_name = "".join(self.generator.random_letter().upper() for _ in range(3)) -- GitLab