@@ -364,3 +364,224 @@ func TestLogEventHandlerConf_Scan(t *testing.T) {
364364 assert .NoError (t , err )
365365 assert .Equal (t , expected , logEventConf )
366366}
367+
368+ func TestAPIDefinition_IsChildAPI (t * testing.T ) {
369+ tests := []struct {
370+ name string
371+ api APIDefinition
372+ expected bool
373+ }{
374+ {
375+ name : "child API - BaseID set and different from APIID" ,
376+ api : APIDefinition {
377+ APIID : "child-api-123" ,
378+ VersionDefinition : VersionDefinition {
379+ BaseID : "base-api-456" ,
380+ },
381+ },
382+ expected : true ,
383+ },
384+ {
385+ name : "not a child - BaseID empty" ,
386+ api : APIDefinition {
387+ APIID : "standalone-api-123" ,
388+ VersionDefinition : VersionDefinition {
389+ BaseID : "" ,
390+ },
391+ },
392+ expected : false ,
393+ },
394+ {
395+ name : "not a child - BaseID equals APIID (base API)" ,
396+ api : APIDefinition {
397+ APIID : "base-api-123" ,
398+ VersionDefinition : VersionDefinition {
399+ BaseID : "base-api-123" ,
400+ },
401+ },
402+ expected : false ,
403+ },
404+ {
405+ name : "not a child - no version definition" ,
406+ api : APIDefinition {
407+ APIID : "api-123" ,
408+ VersionDefinition : VersionDefinition {},
409+ },
410+ expected : false ,
411+ },
412+ }
413+
414+ for _ , tt := range tests {
415+ t .Run (tt .name , func (t * testing.T ) {
416+ result := tt .api .IsChildAPI ()
417+ assert .Equal (t , tt .expected , result )
418+ })
419+ }
420+ }
421+
422+ func TestAPIDefinition_IsBaseAPI (t * testing.T ) {
423+ tests := []struct {
424+ name string
425+ api APIDefinition
426+ expected bool
427+ }{
428+ {
429+ name : "base API - has versions and no BaseID" ,
430+ api : APIDefinition {
431+ APIID : "base-api-123" ,
432+ VersionDefinition : VersionDefinition {
433+ BaseID : "" ,
434+ Versions : map [string ]string {
435+ "v1" : "child-api-1" ,
436+ "v2" : "child-api-2" ,
437+ },
438+ },
439+ },
440+ expected : true ,
441+ },
442+ {
443+ name : "base API - has versions and BaseID equals APIID" ,
444+ api : APIDefinition {
445+ APIID : "base-api-123" ,
446+ VersionDefinition : VersionDefinition {
447+ BaseID : "base-api-123" ,
448+ Versions : map [string ]string {
449+ "v1" : "child-api-1" ,
450+ "v2" : "child-api-2" ,
451+ },
452+ },
453+ },
454+ expected : true ,
455+ },
456+ {
457+ name : "not a base API - no versions" ,
458+ api : APIDefinition {
459+ APIID : "api-123" ,
460+ VersionDefinition : VersionDefinition {
461+ BaseID : "" ,
462+ Versions : map [string ]string {},
463+ },
464+ },
465+ expected : false ,
466+ },
467+ {
468+ name : "not a base API - is a child (BaseID different from APIID)" ,
469+ api : APIDefinition {
470+ APIID : "child-api-123" ,
471+ VersionDefinition : VersionDefinition {
472+ BaseID : "base-api-456" ,
473+ Versions : map [string ]string {
474+ "v1" : "child-api-123" ,
475+ },
476+ },
477+ },
478+ expected : false ,
479+ },
480+ {
481+ name : "not a base API - nil versions" ,
482+ api : APIDefinition {
483+ APIID : "api-123" ,
484+ VersionDefinition : VersionDefinition {
485+ BaseID : "" ,
486+ Versions : nil ,
487+ },
488+ },
489+ expected : false ,
490+ },
491+ }
492+
493+ for _ , tt := range tests {
494+ t .Run (tt .name , func (t * testing.T ) {
495+ result := tt .api .IsBaseAPI ()
496+ assert .Equal (t , tt .expected , result )
497+ })
498+ }
499+ }
500+
501+ func TestAPIDefinition_IsBaseAPIWithVersioning (t * testing.T ) {
502+ tests := []struct {
503+ name string
504+ api APIDefinition
505+ expected bool
506+ }{
507+ {
508+ name : "base API with versioning - all conditions met" ,
509+ api : APIDefinition {
510+ APIID : "base-api-123" ,
511+ VersionDefinition : VersionDefinition {
512+ Enabled : true ,
513+ Name : "v1" ,
514+ BaseID : "" ,
515+ },
516+ },
517+ expected : true ,
518+ },
519+ {
520+ name : "base API with versioning - BaseID equals APIID" ,
521+ api : APIDefinition {
522+ APIID : "base-api-123" ,
523+ VersionDefinition : VersionDefinition {
524+ Enabled : true ,
525+ Name : "v1" ,
526+ BaseID : "base-api-123" ,
527+ },
528+ },
529+ expected : true ,
530+ },
531+ {
532+ name : "not versioned - Enabled is false" ,
533+ api : APIDefinition {
534+ APIID : "api-123" ,
535+ VersionDefinition : VersionDefinition {
536+ Enabled : false ,
537+ Name : "v1" ,
538+ BaseID : "" ,
539+ },
540+ },
541+ expected : false ,
542+ },
543+ {
544+ name : "not versioned - Name is empty" ,
545+ api : APIDefinition {
546+ APIID : "api-123" ,
547+ VersionDefinition : VersionDefinition {
548+ Enabled : true ,
549+ Name : "" ,
550+ BaseID : "" ,
551+ },
552+ },
553+ expected : false ,
554+ },
555+ {
556+ name : "is a child API - BaseID different from APIID" ,
557+ api : APIDefinition {
558+ APIID : "child-api-123" ,
559+ VersionDefinition : VersionDefinition {
560+ Enabled : true ,
561+ Name : "v2" ,
562+ BaseID : "base-api-456" ,
563+ },
564+ },
565+ expected : false ,
566+ },
567+ {
568+ name : "not versioned - all fields false/empty" ,
569+ api : APIDefinition {
570+ APIID : "api-123" ,
571+ VersionDefinition : VersionDefinition {
572+ Enabled : false ,
573+ Name : "" ,
574+ BaseID : "" ,
575+ },
576+ },
577+ expected : false ,
578+ },
579+ }
580+
581+ for _ , tt := range tests {
582+ t .Run (tt .name , func (t * testing.T ) {
583+ result := tt .api .IsBaseAPIWithVersioning ()
584+ assert .Equal (t , tt .expected , result )
585+ })
586+ }
587+ }
0 commit comments