Search in sources :

Example 6 with Plan

use of io.gravitee.gateway.handlers.api.definition.Plan in project gravitee-gateway by gravitee-io.

the class SyncManager method convert.

private Plan convert(io.gravitee.repository.management.model.Plan repoPlan) {
    Plan plan = new Plan();
    plan.setId(repoPlan.getId());
    plan.setName(repoPlan.getName());
    plan.setApis(repoPlan.getApis());
    plan.setSecurityDefinition(repoPlan.getSecurityDefinition());
    if (repoPlan.getSecurity() != null) {
        plan.setSecurity(repoPlan.getSecurity().name());
    } else {
        // TODO: must be handle by a migration script
        plan.setSecurity("api_key");
    }
    try {
        if (repoPlan.getDefinition() != null && !repoPlan.getDefinition().trim().isEmpty()) {
            HashMap<String, Path> paths = objectMapper.readValue(repoPlan.getDefinition(), new TypeReference<HashMap<String, Path>>() {
            });
            plan.setPaths(paths);
        }
    } catch (IOException ioe) {
        logger.error("Unexpected error while converting plan: {}", plan, ioe);
    }
    return plan;
}
Also used : Path(io.gravitee.definition.model.Path) IOException(java.io.IOException) Plan(io.gravitee.gateway.handlers.api.definition.Plan)

Example 7 with Plan

use of io.gravitee.gateway.handlers.api.definition.Plan in project gravitee-gateway by gravitee-io.

the class AbstractGatewayTest method before.

@Override
public void before(Api api) {
    // By default, add a keyless plan to the API
    Plan plan = new Plan();
    plan.setId("default_plan");
    plan.setName("Default plan");
    plan.setSecurity("key_less");
    api.setPlans(Collections.singletonList(plan));
}
Also used : Plan(io.gravitee.gateway.handlers.api.definition.Plan)

Example 8 with Plan

use of io.gravitee.gateway.handlers.api.definition.Plan in project gravitee-gateway by gravitee-io.

the class PlanBasedAuthenticationHandlerEnhancerTest method shouldResolveKeylessPolicy_becauseOnePlanKeyless.

@Test
public void shouldResolveKeylessPolicy_becauseOnePlanKeyless() {
    AuthenticationHandler authenticationHandler = mock(AuthenticationHandler.class);
    when(authenticationHandler.name()).thenReturn("keyless");
    Plan plan1 = new Plan();
    plan1.setSecurity("keyless");
    when(api.getPlans()).thenReturn(Collections.singletonList(plan1));
    List<AuthenticationHandler> SecurityProviders = authenticationHandlerEnhancer.filter(Collections.singletonList(authenticationHandler));
    assertNotNull(SecurityProviders);
    assertFalse(SecurityProviders.isEmpty());
    assertEquals("keyless", SecurityProviders.iterator().next().name());
}
Also used : AuthenticationHandler(io.gravitee.gateway.security.core.AuthenticationHandler) Plan(io.gravitee.gateway.handlers.api.definition.Plan) Test(org.junit.Test)

Example 9 with Plan

use of io.gravitee.gateway.handlers.api.definition.Plan in project gravitee-gateway by gravitee-io.

the class PlanBasedAuthenticationHandlerEnhancerTest method shouldNotResolveKeylessPolicy_becauseOnePlanApikey.

@Test
public void shouldNotResolveKeylessPolicy_becauseOnePlanApikey() {
    AuthenticationHandler authenticationHandler = mock(AuthenticationHandler.class);
    when(authenticationHandler.name()).thenReturn("keyless");
    Plan plan1 = new Plan();
    plan1.setSecurity("apikey");
    when(api.getPlans()).thenReturn(Collections.singletonList(plan1));
    List<AuthenticationHandler> SecurityProviders = authenticationHandlerEnhancer.filter(Collections.singletonList(authenticationHandler));
    assertNotNull(SecurityProviders);
    assertTrue(SecurityProviders.isEmpty());
}
Also used : AuthenticationHandler(io.gravitee.gateway.security.core.AuthenticationHandler) Plan(io.gravitee.gateway.handlers.api.definition.Plan) Test(org.junit.Test)

Example 10 with Plan

use of io.gravitee.gateway.handlers.api.definition.Plan in project gravitee-gateway by gravitee-io.

the class ApiManagerImpl method update.

@Override
public void update(Api api) {
    MDC.put("api", api.getId());
    logger.info("Updating {}", api);
    if (!api.getPlans().isEmpty()) {
        logger.info("Deploying {} plan(s) for API {}:", api.getPlans().size(), api.getId());
        for (Plan plan : api.getPlans()) {
            logger.info("\t- {}", plan.getName());
        }
        try {
            validator.validate(api);
            apis.put(api.getId(), api);
            eventManager.publishEvent(ReactorEvent.UPDATE, api);
        } catch (ValidationException ve) {
            logger.error("API {} can't be updated because of validation errors", api, ve);
        }
    } else {
        logger.warn("There is no published plan associated to this API, undeploy it...");
        undeploy(api.getId());
    }
    MDC.remove("api");
}
Also used : ValidationException(io.gravitee.gateway.handlers.api.validator.ValidationException) Plan(io.gravitee.gateway.handlers.api.definition.Plan)

Aggregations

Plan (io.gravitee.gateway.handlers.api.definition.Plan)13 Test (org.junit.Test)8 ApiKeyCriteria (io.gravitee.repository.management.api.search.ApiKeyCriteria)5 Path (io.gravitee.definition.model.Path)2 Api (io.gravitee.gateway.handlers.api.definition.Api)2 ValidationException (io.gravitee.gateway.handlers.api.validator.ValidationException)2 AuthenticationHandler (io.gravitee.gateway.security.core.AuthenticationHandler)2 ApiKey (io.gravitee.repository.management.model.ApiKey)2 Element (net.sf.ehcache.Element)2 HttpStatusCode (io.gravitee.common.http.HttpStatusCode)1 ExecutionContext (io.gravitee.gateway.api.ExecutionContext)1 Request (io.gravitee.gateway.api.Request)1 Response (io.gravitee.gateway.api.Response)1 ApiDefinitionBuilder (io.gravitee.gateway.handlers.api.builders.ApiDefinitionBuilder)1 ProxyDefinitionBuilder (io.gravitee.gateway.handlers.api.builders.ProxyDefinitionBuilder)1 io.gravitee.gateway.policy (io.gravitee.gateway.policy)1 PolicyChain (io.gravitee.gateway.policy.impl.PolicyChain)1 RequestPolicyChain (io.gravitee.gateway.policy.impl.RequestPolicyChain)1 ResponsePolicyChain (io.gravitee.gateway.policy.impl.ResponsePolicyChain)1 PolicyResult (io.gravitee.policy.api.PolicyResult)1