Skip to content

Commit

Permalink
fix: fix plan mapping
Browse files Browse the repository at this point in the history
**Issue** [APIM-8360](https://gravitee.atlassian.net/browse/APIM-8360)

## Description

I apply it only for 4.6 because [another PR to master](#10413)
will completly rework it
  • Loading branch information
michel-barret committed Jan 17, 2025
1 parent 694b0e6 commit 99027dc
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@
package io.gravitee.apim.infra.adapter;

import io.gravitee.apim.core.api.model.import_definition.GraviteeDefinition;
import io.gravitee.apim.core.api.model.import_definition.PlanExport;
import io.gravitee.rest.api.model.v4.api.ExportApiEntity;
import io.gravitee.rest.api.model.v4.plan.BasePlanEntity;
import io.gravitee.rest.api.model.v4.plan.GenericPlanEntity;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
Expand All @@ -30,4 +33,7 @@ public interface GraviteeDefinitionAdapter {

@Mapping(target = "api", source = "apiEntity")
GraviteeDefinition map(ExportApiEntity source);

@Mapping(target = "type", source = "planType")
PlanExport genericPlanMap(GenericPlanEntity source);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import io.gravitee.apim.core.audit.model.AuditInfo;
import io.gravitee.apim.infra.adapter.GraviteeDefinitionAdapter;
import io.gravitee.rest.api.model.v4.api.ApiEntity;
import io.gravitee.rest.api.model.v4.plan.BasePlanEntity;
import io.gravitee.rest.api.service.common.ExecutionContext;
import io.gravitee.rest.api.service.v4.ApiImportExportService;
import java.util.Set;
Expand All @@ -40,6 +41,18 @@ public GraviteeDefinition export(String apiId, AuditInfo auditInfo) {
if (exportEntity.getApiEntity() instanceof ApiEntity v4) {
graviteeDefinition.getApi().setType(v4.getType());
}
if (exportEntity.getPlans() != null) {
for (var source : exportEntity.getPlans()) {
if (source instanceof BasePlanEntity v4Plan) {
graviteeDefinition
.getPlans()
.stream()
.filter(p -> p.getId().equals(v4Plan.getId()))
.findFirst()
.ifPresent(target -> target.setSecurity(v4Plan.getSecurity()));
}
}
}
return graviteeDefinition;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,17 @@
import static org.mockito.Mockito.when;

import io.gravitee.apim.core.api.model.import_definition.GraviteeDefinition;
import io.gravitee.apim.core.api.model.import_definition.PlanExport;
import io.gravitee.apim.core.audit.model.AuditInfo;
import io.gravitee.apim.core.plan.model.Plan;
import io.gravitee.definition.model.v4.ApiType;
import io.gravitee.definition.model.v4.plan.PlanSecurity;
import io.gravitee.rest.api.model.v4.api.ApiEntity;
import io.gravitee.rest.api.model.v4.api.ExportApiEntity;
import io.gravitee.rest.api.model.v4.plan.BasePlanEntity;
import io.gravitee.rest.api.model.v4.plan.PlanType;
import io.gravitee.rest.api.service.v4.ApiImportExportService;
import java.util.Set;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
Expand All @@ -47,12 +53,19 @@ void exportServiceMustMapTypeWhenExportV4() {
String apiId = UUID.randomUUID().toString();
ApiEntity api = new ApiEntity();
api.setType(ApiType.PROXY);
when(exportService.exportApi(any(), any(), any(), any())).thenReturn(new ExportApiEntity(api, null, null, null, null, null));
BasePlanEntity plan = new BasePlanEntity();
plan.setId(UUID.randomUUID().toString());
plan.setSecurity(new PlanSecurity());
plan.setType(PlanType.API);
when(exportService.exportApi(any(), any(), any(), any()))
.thenReturn(new ExportApiEntity(api, null, null, null, Set.of(plan), null));

// When
GraviteeDefinition export = sut.export(apiId, AuditInfo.builder().build());

// Then
assertThat(export.getApi().getType()).isEqualTo(ApiType.PROXY);
assertThat(export.getPlans()).map(PlanExport::getType).first().isEqualTo(Plan.PlanType.API);
assertThat(export.getPlans()).map(PlanExport::getSecurity).first().isNotNull();
}
}

0 comments on commit 99027dc

Please sign in to comment.