use of org.apache.knox.gateway.deploy.DeploymentContext in project knox by apache.
the class EncryptUriDeploymentContributorTest method testDeployment.
@Test
public void testDeployment() throws IOException {
WebArchive webArchive = ShrinkWrap.create(WebArchive.class, "test-acrhive");
Provider provider = new Provider();
provider.setEnabled(true);
provider.setName(EncryptUriDeploymentContributor.PROVIDER_ROLE_NAME);
Topology topology = new Topology();
topology.setName("Sample");
DeploymentContext context = EasyMock.createNiceMock(DeploymentContext.class);
EasyMock.expect(context.getWebArchive()).andReturn(webArchive).anyTimes();
EasyMock.expect(context.getTopology()).andReturn(topology).anyTimes();
EasyMock.replay(context);
AliasService as = EasyMock.createNiceMock(AliasService.class);
CryptoService cryptoService = new DefaultCryptoService();
((DefaultCryptoService) cryptoService).setAliasService(as);
GatewayServices gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
EasyMock.expect(gatewayServices.getService(GatewayServices.CRYPTO_SERVICE)).andReturn(cryptoService).anyTimes();
UrlRewriteEnvironment encEnvironment = EasyMock.createNiceMock(UrlRewriteEnvironment.class);
EasyMock.expect(encEnvironment.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE)).andReturn(gatewayServices).anyTimes();
EncryptUriDeploymentContributor contributor = new EncryptUriDeploymentContributor();
contributor.setAliasService(as);
assertThat(contributor.getRole(), is(EncryptUriDeploymentContributor.PROVIDER_ROLE_NAME));
assertThat(contributor.getName(), is(EncryptUriDeploymentContributor.PROVIDER_IMPL_NAME));
// Just make sure it doesn't blow up.
contributor.contributeFilter(null, null, null, null, null);
// Just make sure it doesn't blow up.
contributor.initializeContribution(context);
contributor.contributeProvider(context, provider);
// Just make sure it doesn't blow up.
contributor.finalizeContribution(context);
}
use of org.apache.knox.gateway.deploy.DeploymentContext in project knox by apache.
the class SecureQueryDeploymentContributorTest method testDeployment.
@Test
public void testDeployment() throws IOException {
WebArchive webArchive = ShrinkWrap.create(WebArchive.class, "test-acrhive");
// UrlRewriteRulesDescriptorImpl rewriteRules = new UrlRewriteRulesDescriptorImpl();
Map<String, String> providerParams = new HashMap<>();
// providerParams.put( "test-host-external", "test-host-internal" );
Provider provider = new Provider();
provider.setEnabled(true);
provider.setName("secure-query");
provider.setParams(providerParams);
Topology topology = new Topology();
topology.setName("Sample");
DeploymentContext context = EasyMock.createNiceMock(DeploymentContext.class);
// EasyMock.expect( context.getDescriptor( "rewrite" ) ).andReturn( rewriteRules ).anyTimes();
EasyMock.expect(context.getWebArchive()).andReturn(webArchive).anyTimes();
EasyMock.expect(context.getTopology()).andReturn(topology).anyTimes();
EasyMock.replay(context);
AliasService as = EasyMock.createNiceMock(AliasService.class);
CryptoService cryptoService = new DefaultCryptoService();
((DefaultCryptoService) cryptoService).setAliasService(as);
GatewayServices gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
EasyMock.expect(gatewayServices.getService(GatewayServices.CRYPTO_SERVICE)).andReturn(cryptoService).anyTimes();
UrlRewriteEnvironment encEnvironment = EasyMock.createNiceMock(UrlRewriteEnvironment.class);
EasyMock.expect(encEnvironment.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE)).andReturn(gatewayServices).anyTimes();
SecureQueryDeploymentContributor contributor = new SecureQueryDeploymentContributor();
contributor.setAliasService(as);
assertThat(contributor.getRole(), is("secure-query"));
assertThat(contributor.getName(), is("default"));
// Just make sure it doesn't blow up.
contributor.contributeFilter(null, null, null, null, null);
// Just make sure it doesn't blow up.
contributor.initializeContribution(context);
contributor.contributeProvider(context, provider);
// HostmapFunctionDescriptor funcDesc = rewriteRules.getFunction( "hostmap" );
// assertThat( funcDesc.config(), is( "/WEB-INF/hostmap.txt" ) );
//
// Node node = webArchive.get( "/WEB-INF/hostmap.txt" );
// String asset = IOUtils.toString( node.getAsset().openStream() );
// assertThat( asset, containsString( "test-host-external=test-host-internal" ) );
// Just make sure it doesn't blow up.
contributor.finalizeContribution(context);
}
use of org.apache.knox.gateway.deploy.DeploymentContext in project knox by apache.
the class ServiceDefinitionDeploymentContributorTest method testServiceAttributeUseTwoWaySSLParamOverride.
/**
* Test that service param useTwoWaySsl in topologies overrides the corresponding custom dispatch property.
*/
@Test
public void testServiceAttributeUseTwoWaySSLParamOverride() throws Exception {
final String TEST_SERVICE_ROLE = "Test";
final String USE_TWO_WAY_SSL_PARAM = "useTwoWaySsl";
UrlRewriteRulesDescriptor clusterRules = EasyMock.createNiceMock(UrlRewriteRulesDescriptor.class);
EasyMock.replay(clusterRules);
UrlRewriteRulesDescriptor svcRules = EasyMock.createNiceMock(UrlRewriteRulesDescriptor.class);
EasyMock.replay(svcRules);
ServiceDefinition svcDef = EasyMock.createNiceMock(ServiceDefinition.class);
EasyMock.expect(svcDef.getRole()).andReturn(TEST_SERVICE_ROLE).anyTimes();
List<Route> svcRoutes = new ArrayList<>();
Route route = EasyMock.createNiceMock(Route.class);
List<Rewrite> filters = new ArrayList<>();
EasyMock.expect(route.getRewrites()).andReturn(filters).anyTimes();
svcRoutes.add(route);
EasyMock.replay(route);
EasyMock.expect(svcDef.getRoutes()).andReturn(svcRoutes).anyTimes();
CustomDispatch cd = EasyMock.createNiceMock(CustomDispatch.class);
EasyMock.expect(cd.getClassName()).andReturn("TestDispatch").anyTimes();
EasyMock.expect(cd.getHaClassName()).andReturn("TestHADispatch").anyTimes();
EasyMock.expect(cd.getHaContributorName()).andReturn(null).anyTimes();
// Let useTwoWaySsl be FALSE by default
EasyMock.expect(cd.getUseTwoWaySsl()).andReturn(false).anyTimes();
EasyMock.replay(cd);
EasyMock.expect(svcDef.getDispatch()).andReturn(cd).anyTimes();
EasyMock.replay(svcDef);
ServiceDefinitionDeploymentContributor sddc = new ServiceDefinitionDeploymentContributor(svcDef, svcRules);
DeploymentContext context = EasyMock.createNiceMock(DeploymentContext.class);
EasyMock.expect(context.getDescriptor("rewrite")).andReturn(clusterRules).anyTimes();
GatewayConfig gc = EasyMock.createNiceMock(GatewayConfig.class);
EasyMock.expect(gc.isXForwardedEnabled()).andReturn(false).anyTimes();
EasyMock.expect(gc.isCookieScopingToPathEnabled()).andReturn(false).anyTimes();
EasyMock.replay(gc);
EasyMock.expect(context.getGatewayConfig()).andReturn(gc).anyTimes();
// Configure the HaProvider
Topology topology = EasyMock.createNiceMock(Topology.class);
List<Provider> providers = new ArrayList<>();
Provider haProvider = EasyMock.createNiceMock(Provider.class);
EasyMock.expect(haProvider.getRole()).andReturn("ha").anyTimes();
EasyMock.expect(haProvider.isEnabled()).andReturn(true).anyTimes();
Map<String, String> providerParams = new HashMap<>();
providerParams.put(TEST_SERVICE_ROLE, "whatever");
EasyMock.expect(haProvider.getParams()).andReturn(providerParams).anyTimes();
EasyMock.replay(haProvider);
providers.add(haProvider);
EasyMock.expect(topology.getProviders()).andReturn(providers).anyTimes();
EasyMock.replay(topology);
EasyMock.expect(context.getTopology()).andReturn(topology).anyTimes();
TestGatewayDescriptor gd = new TestGatewayDescriptor();
EasyMock.expect(context.getGatewayDescriptor()).andReturn(gd).anyTimes();
EasyMock.replay(context);
// Configure the service with the useTwoWaySsl param to OVERRIDE the value in the service definition
Service service = EasyMock.createNiceMock(Service.class);
Map<String, String> svcParams = new HashMap<>();
svcParams.put(USE_TWO_WAY_SSL_PARAM, "true");
EasyMock.expect(service.getParams()).andReturn(svcParams).anyTimes();
EasyMock.replay(service);
sddc.contributeService(context, service);
List<ResourceDescriptor> resources = gd.resources();
assertEquals(1, gd.resources().size());
ResourceDescriptor res = gd.resources().get(0);
assertNotNull(res);
List<FilterDescriptor> filterList = res.filters();
assertEquals(1, filterList.size());
FilterDescriptor f = filterList.get(0);
assertNotNull(f);
assertEquals("dispatch", f.role());
List<FilterParamDescriptor> fParams = f.params();
assertNotNull(fParams);
// Collect the values of filter params named useTwoWaySsl
List<String> useTwoWaySslFilterParamValues = new ArrayList<>();
for (FilterParamDescriptor param : fParams) {
if (param.name().equals(USE_TWO_WAY_SSL_PARAM)) {
useTwoWaySslFilterParamValues.add(param.value());
}
}
assertEquals("Expected only a single filter param named " + USE_TWO_WAY_SSL_PARAM, 1, useTwoWaySslFilterParamValues.size());
assertEquals("Expected the service param to override the service definition value for " + USE_TWO_WAY_SSL_PARAM, "true", useTwoWaySslFilterParamValues.get(0));
}
use of org.apache.knox.gateway.deploy.DeploymentContext in project knox by apache.
the class HaProviderDeploymentContributorTest method testServiceLevelParamOverrides_SubsetProviderParams.
/**
* Verify a mixture of provider-level params and service-level params.
*/
@Test
public void testServiceLevelParamOverrides_SubsetProviderParams() throws Exception {
// Define some provider params
Map<String, String> providerParams = new HashMap<>();
// Specify all the possible params at the HaProvider level for TestRoleTwo
providerParams.put("TestRoleOne", "enabled=false;" + "maxRetryAttempts=5;" + "maxFailoverAttempts=4;" + "failoverSleep=40");
Provider haProvider = createHaProvider(providerParams);
// Define the topology content (e.g., services)
Collection<Service> topologyServices = new HashSet<>();
// Specify all the possible params in the TestRoleOne service level
Map<String, String> testRoleOneParams = new HashMap<>();
testRoleOneParams.put("enabled", "true");
testRoleOneParams.put("retrySleep", "60");
testRoleOneParams.put("zookeeperNamespace", "testRoleOneOverride");
testRoleOneParams.put("zookeeperEnsemble", "http://host3:2181,http://host4:2181");
// A service with all the params overriden
Service testRoleOneService = EasyMock.createNiceMock(Service.class);
EasyMock.expect(testRoleOneService.getRole()).andReturn("TestRoleOne").anyTimes();
EasyMock.expect(testRoleOneService.getName()).andReturn("TestRoleOneService").anyTimes();
EasyMock.expect(testRoleOneService.getParams()).andReturn(testRoleOneParams).anyTimes();
EasyMock.replay(testRoleOneService);
topologyServices.add(testRoleOneService);
Topology topology = EasyMock.createNiceMock(Topology.class);
EasyMock.expect(topology.getServices()).andReturn(topologyServices).anyTimes();
EasyMock.replay(topology);
WebArchive war = EasyMock.createNiceMock(WebArchive.class);
EasyMock.replay(war);
DeploymentContext context = new DescriptorCaptureDeploymentContext(topology, war);
// Invoke the contributor
HaProviderDeploymentContributor haPDC = new HaProviderDeploymentContributor();
haPDC.contributeProvider(context, haProvider);
HaDescriptor descriptor = context.getDescriptor("ha.provider.descriptor");
assertNotNull(descriptor);
assertEquals(1, descriptor.getServiceConfigs().size());
validateServiceHaConfig(descriptor.getServiceConfig("TestRoleOne"), true, 40, 4, 60, 5, "testRoleOneOverride", "http://host3:2181,http://host4:2181");
}
use of org.apache.knox.gateway.deploy.DeploymentContext in project knox by apache.
the class HaProviderDeploymentContributorTest method testProviderLevelParams.
/**
* Basically, a backward-compatibility test to ensure that HaProvider service params specified ONLY at the provider
* level still work.
*/
@Test
public void testProviderLevelParams() throws Exception {
// Define some provider params
Map<String, String> providerParams = new HashMap<>();
// Specify all the possible params at the HaProvider level for TestRoleTwo
providerParams.put("TestRoleOne", "enabled=false;" + "maxRetryAttempts=5;" + "retrySleep=50;" + "maxFailoverAttempts=4;" + "failoverSleep=40;" + "zookeeperNamespace=testRoleOne;" + "zookeeperEnsemble=http://host1:2181,http://host2:2181");
Provider haProvider = createHaProvider(providerParams);
// Define the topology content (e.g., services)
Collection<Service> topologyServices = new HashSet<>();
// A service with no param overrides
Service testRoleOneService = EasyMock.createNiceMock(Service.class);
EasyMock.expect(testRoleOneService.getRole()).andReturn("TestRoleOne").anyTimes();
EasyMock.expect(testRoleOneService.getName()).andReturn("TestRoleOneService").anyTimes();
EasyMock.expect(testRoleOneService.getParams()).andReturn(Collections.emptyMap()).anyTimes();
EasyMock.replay(testRoleOneService);
topologyServices.add(testRoleOneService);
Topology topology = EasyMock.createNiceMock(Topology.class);
EasyMock.expect(topology.getServices()).andReturn(topologyServices).anyTimes();
EasyMock.replay(topology);
WebArchive war = EasyMock.createNiceMock(WebArchive.class);
EasyMock.replay(war);
DeploymentContext context = new DescriptorCaptureDeploymentContext(topology, war);
// Invoke the contributor
HaProviderDeploymentContributor haPDC = new HaProviderDeploymentContributor();
haPDC.contributeProvider(context, haProvider);
HaDescriptor descriptor = context.getDescriptor("ha.provider.descriptor");
assertNotNull(descriptor);
assertEquals(1, descriptor.getServiceConfigs().size());
validateServiceHaConfig(descriptor.getServiceConfig("TestRoleOne"), false, 40, 4, 50, 5, "testRoleOne", "http://host1:2181,http://host2:2181");
}
Aggregations