@@ -181,6 +181,19 @@ public function testClearUriPrefixedUuid(): void
181181 return implode ('- ' , $ words );
182182 };
183183
184+ // Gera IDs do tipo ECOSYSTEM
185+ $ generateEcosystemId = function (): string {
186+ $ prefixes = ['ECOSYSTEM ' , 'PLATFORM ' , 'SERVICE ' , 'MODULE ' ];
187+ $ codes = ['EPF ' , 'ABC ' , 'XYZ ' , 'DEF ' , 'GHI ' ];
188+
189+ $ prefix = $ prefixes [array_rand ($ prefixes )];
190+ $ code = $ codes [array_rand ($ codes )];
191+ $ number = str_pad ((string )rand (1000000000 , 9999999999 ), 10 , '0 ' , STR_PAD_LEFT );
192+ $ sequence = str_pad ((string )rand (1 , 999 ), 3 , '0 ' , STR_PAD_LEFT );
193+
194+ return "{$ prefix }- {$ code }- {$ number }_ {$ sequence }" ;
195+ };
196+
184197 $ randomPrefix = $ generateRandomPrefix ();
185198
186199 // Gera UUIDs aleatórios (incluindo caracteres não-hexadecimais para testar a regex)
@@ -201,6 +214,12 @@ public function testClearUriPrefixedUuid(): void
201214 $ userUuid = 'USER-abc1234d-e56f-78g9-h012-345678901234 ' ;
202215 $ companyUuid = 'COMPANY-ADMIN-456e7890-f12a-34b5-c678-901234567890 ' ;
203216
217+ // IDs do tipo ECOSYSTEM (estáticos e aleatórios)
218+ $ ecosystemId = 'ECOSYSTEM-EPF-0100290422_001 ' ;
219+ $ ecosystemId2 = 'PLATFORM-ABC-1234567890_999 ' ;
220+ $ randomEcosystemId = $ generateEcosystemId ();
221+ $ randomEcosystemId2 = $ generateEcosystemId ();
222+
204223 // Gera mais alguns prefixos aleatórios para testes variados
205224 $ randomPrefix2 = $ generateRandomPrefix ();
206225 $ randomUuid2 = sprintf (
@@ -216,44 +235,39 @@ public function testClearUriPrefixedUuid(): void
216235 // Testes básicos
217236 self ::assertSame ('/v1/test ' , Uri::sanitize ('/v1/test ' ));
218237
219- // Testes com prefixos randômicos
220- self ::assertSame ('/v2/test/<PREFIXED-UUID> ' , Uri::sanitize ("/v2/test/ {$ prefixedUuid }" ));
221- self ::assertSame ('/v3/test/<PREFIXED-UUID>/bar ' , Uri::sanitize ("/v3/test/ {$ prefixedUuid }/bar " ));
222- self ::assertSame ('/v4/test/<PREFIXED-UUID>/bar/<PREFIXED-UUID>/ ' , Uri::sanitize ("/v4/test/ {$ prefixedUuid }/bar/ {$ prefixedUuid }/ " ));
223-
224- // Testes com casos estáticos conhecidos
225- self ::assertSame ('/v2/test/<PREFIXED-UUID> ' , Uri::sanitize ("/v2/test/ {$ billUuid }" ));
226- self ::assertSame ('/v3/test/<PREFIXED-UUID>/bar ' , Uri::sanitize ("/v3/test/ {$ billUuid }/bar " ));
227- self ::assertSame ('/v4/test/<PREFIXED-UUID>/bar/<PREFIXED-UUID>/ ' , Uri::sanitize ("/v4/test/ {$ billUuid }/bar/ {$ billUuid }/ " ));
238+ // Testes com UUIDs prefixados randômicos
239+ self ::assertSame ('/v2/test/<PREFIXED-ID> ' , Uri::sanitize ("/v2/test/ {$ prefixedUuid }" ));
240+ self ::assertSame ('/v3/test/<PREFIXED-ID>/bar ' , Uri::sanitize ("/v3/test/ {$ prefixedUuid }/bar " ));
241+ self ::assertSame ('/v4/test/<PREFIXED-ID>/bar/<PREFIXED-ID>/ ' , Uri::sanitize ("/v4/test/ {$ prefixedUuid }/bar/ {$ prefixedUuid }/ " ));
228242
229- // Testes com UUID não-hexadecimal
230- self ::assertSame ('/v2/test/<PREFIXED-UUID> ' , Uri::sanitize ("/v2/test/ {$ userUuid }" ));
231- self ::assertSame ('/v3/test/<PREFIXED-UUID>/bar ' , Uri::sanitize ("/v3/test/ {$ userUuid }/bar " ));
243+ // Testes com UUIDs prefixados estáticos
244+ self ::assertSame ('/v2/test/<PREFIXED-ID> ' , Uri::sanitize ("/v2/test/ {$ billUuid }" ));
245+ self ::assertSame ('/v3/test/<PREFIXED-ID>/bar ' , Uri::sanitize ("/v3/test/ {$ billUuid }/bar " ));
246+ self ::assertSame ('/v4/test/<PREFIXED-ID>/bar/<PREFIXED-ID>/ ' , Uri::sanitize ("/v4/test/ {$ billUuid }/bar/ {$ billUuid }/ " ));
232247
233- // Testes com prefixo composto
234- self ::assertSame ('/v2/test/<PREFIXED-UUID> ' , Uri::sanitize ("/v2/test/ {$ companyUuid }" ));
235- self ::assertSame ('/v3/test/<PREFIXED-UUID>/bar ' , Uri::sanitize ("/v3/test/ {$ companyUuid }/bar " ));
248+ // Testes com IDs ECOSYSTEM estáticos
249+ self ::assertSame ('/v5/test/<PREFIXED-ID> ' , Uri::sanitize ("/v5/test/ {$ ecosystemId }" ));
250+ self ::assertSame ('/v6/test/<PREFIXED-ID>/details ' , Uri::sanitize ("/v6/test/ {$ ecosystemId }/details " ));
251+ self ::assertSame ('/v7/test/<PREFIXED-ID>/<PREFIXED-ID> ' , Uri::sanitize ("/v7/test/ {$ ecosystemId }/ {$ ecosystemId2 }" ));
236252
237- // Testes com múltiplos UUIDs (randômicos + estáticos)
238- self ::assertSame ('/v5/test/<PREFIXED-UUID>/<PREFIXED-UUID> ' , Uri::sanitize ("/v5/test/ {$ prefixedUuid }/ {$ billUuid }" ));
239- self ::assertSame ('/v6/test/<PREFIXED-UUID>/<PREFIXED-UUID>/ ' , Uri::sanitize ("/v6/test/ {$ billUuid }/ {$ prefixedUuid }/ " ));
240- self ::assertSame ('/v7/test/<PREFIXED-UUID>/<PREFIXED-UUID>/<PREFIXED-UUID> ' , Uri::sanitize ("/v7/test/ {$ prefixedUuid }/ {$ billUuid }/ {$ userUuid }" ));
241- self ::assertSame ('/v8/test/<PREFIXED-UUID>/<PREFIXED-UUID>/<PREFIXED-UUID>/ ' , Uri::sanitize ("/v8/test/ {$ billUuid }/ {$ userUuid }/ {$ prefixedUuid }/ " ));
253+ // Testes com IDs ECOSYSTEM aleatórios
254+ self ::assertSame ('/v8/test/<PREFIXED-ID> ' , Uri::sanitize ("/v8/test/ {$ randomEcosystemId }" ));
255+ self ::assertSame ('/v9/test/<PREFIXED-ID>/config ' , Uri::sanitize ("/v9/test/ {$ randomEcosystemId }/config " ));
256+ self ::assertSame ('/v10/test/<PREFIXED-ID>/<PREFIXED-ID> ' , Uri::sanitize ("/v10/test/ {$ randomEcosystemId }/ {$ randomEcosystemId2 }" ));
242257
243- // Testes com dois prefixos aleatórios diferentes
244- self ::assertSame ('/v9/test/<PREFIXED-UUID>/<PREFIXED-UUID> ' , Uri::sanitize ("/v9/test/ {$ prefixedUuid }/ {$ prefixedUuid2 }" ));
245- self ::assertSame ('/v10/test/<PREFIXED-UUID>/<PREFIXED-UUID>/<PREFIXED-UUID>/ ' , Uri::sanitize ("/v10/test/ {$ prefixedUuid }/ {$ prefixedUuid2 }/ {$ companyUuid }/ " ));
258+ // Testes mistos: UUIDs prefixados + IDs ECOSYSTEM
259+ self ::assertSame ('/v11/test/<PREFIXED-ID>/<PREFIXED-ID> ' , Uri::sanitize ("/v11/test/ {$ prefixedUuid }/ {$ ecosystemId }" ));
260+ self ::assertSame ('/v12/test/<PREFIXED-ID>/<PREFIXED-ID>/<PREFIXED-ID> ' , Uri::sanitize ("/v12/test/ {$ billUuid }/ {$ randomEcosystemId }/ {$ userUuid }" ));
261+ self ::assertSame ('/v13/test/<PREFIXED-ID>/<PREFIXED-ID>/<PREFIXED-ID>/ ' , Uri::sanitize ("/v13/test/ {$ ecosystemId }/ {$ prefixedUuid2 }/ {$ randomEcosystemId2 }/ " ));
246262
247263 // Casos edge: diferentes contextos de API
248- self ::assertSame ('/users/<PREFIXED-UUID>/profile ' , Uri::sanitize ("/users/ {$ prefixedUuid }/profile " ));
249- self ::assertSame ('/api/v1/bills/<PREFIXED-UUID>/details ' , Uri::sanitize ("/api/v1/bills/ {$ billUuid }/details " ));
250- self ::assertSame ('/companies/<PREFIXED-UUID>/admin/<PREFIXED-UUID>/settings ' , Uri::sanitize ("/companies/ {$ prefixedUuid2 }/admin/ {$ prefixedUuid }/settings " ));
264+ self ::assertSame ('/users/<PREFIXED-ID>/profile ' , Uri::sanitize ("/users/ {$ prefixedUuid }/profile " ));
265+ self ::assertSame ('/api/v1/bills/<PREFIXED-ID>/details ' , Uri::sanitize ("/api/v1/bills/ {$ billUuid }/details " ));
266+ self ::assertSame ('/ecosystems/<PREFIXED-ID>/platform/<PREFIXED-ID> ' , Uri::sanitize ("/ecosystems/ {$ randomEcosystemId }/platform/ {$ randomEcosystemId2 }" ));
267+ self ::assertSame ('/companies/<PREFIXED-ID>/admin/<PREFIXED-ID>/settings ' , Uri::sanitize ("/companies/ {$ prefixedUuid2 }/admin/ {$ ecosystemId }/settings " ));
251268
252269 // Teste sem barra final
253- self ::assertSame ('/test/<PREFIXED-UUID> ' , Uri::sanitize ("/test/ {$ prefixedUuid }" ));
254-
255- // Testes com prefixos de diferentes tamanhos
256- self ::assertSame ('/short/<PREFIXED-UUID> ' , Uri::sanitize ("/short/ {$ prefixedUuid }" ));
257- self ::assertSame ('/long/<PREFIXED-UUID>/path ' , Uri::sanitize ("/long/ {$ prefixedUuid2 }/path " ));
270+ self ::assertSame ('/test/<PREFIXED-ID> ' , Uri::sanitize ("/test/ {$ prefixedUuid }" ));
271+ self ::assertSame ('/ecosystem/<PREFIXED-ID> ' , Uri::sanitize ("/ecosystem/ {$ randomEcosystemId }" ));
258272 }
259273}
0 commit comments