use of org.jboss.shrinkwrap.api.spec.EnterpriseArchive in project knox by apache.
the class DeploymentFactoryFuncTest method testDeploymentWithApplication.
@Test(timeout = MEDIUM_TIMEOUT)
public void testDeploymentWithApplication() throws Exception {
LOG_ENTER();
GatewayConfig config = new GatewayTestConfig();
File targetDir = new File(System.getProperty("user.dir"), "target");
File gatewayDir = new File(targetDir, "gateway-home-" + UUID.randomUUID());
gatewayDir.mkdirs();
((GatewayTestConfig) config).setGatewayHomeDir(gatewayDir.getAbsolutePath());
File deployDir = new File(config.getGatewayDeploymentDir());
deployDir.mkdirs();
URL serviceUrl = TestUtils.getResourceUrl(DeploymentFactoryFuncTest.class, "test-apps/minimal-test-app/service.xml");
File serviceFile = new File(serviceUrl.toURI());
File appsDir = serviceFile.getParentFile().getParentFile();
((GatewayTestConfig) config).setGatewayApplicationsDir(appsDir.getAbsolutePath());
DefaultGatewayServices srvcs = new DefaultGatewayServices();
Map<String, String> options = new HashMap<>();
options.put("persist-master", "false");
options.put("master", "password");
try {
DeploymentFactory.setGatewayServices(srvcs);
srvcs.init(config, options);
} catch (ServiceLifecycleException e) {
// I18N not required.
e.printStackTrace();
}
Topology topology = new Topology();
topology.setName("test-topology");
Application app;
app = new Application();
app.setName("minimal-test-app");
app.addUrl("/minimal-test-app-path");
topology.addApplication(app);
EnterpriseArchive archive = DeploymentFactory.createDeployment(config, topology);
assertThat(archive, notNullValue());
Document doc;
doc = XmlUtils.readXml(archive.get("META-INF/topology.xml").getAsset().openStream());
assertThat(doc, notNullValue());
doc = XmlUtils.readXml(archive.get("%2Fminimal-test-app-path/WEB-INF/gateway.xml").getAsset().openStream());
assertThat(doc, notNullValue());
// dump( doc );
assertThat(doc, hasXPath("/gateway/resource/pattern", equalTo("/**?**")));
assertThat(doc, hasXPath("/gateway/resource/filter[1]/role", equalTo("xforwardedheaders")));
assertThat(doc, hasXPath("/gateway/resource/filter[1]/name", equalTo("XForwardedHeaderFilter")));
assertThat(doc, hasXPath("/gateway/resource/filter[1]/class", equalTo(XForwardedHeaderFilter.class.getName())));
assertThat(doc, hasXPath("/gateway/resource/filter[2]/role", equalTo("rewrite")));
assertThat(doc, hasXPath("/gateway/resource/filter[2]/name", equalTo("url-rewrite")));
assertThat(doc, hasXPath("/gateway/resource/filter[2]/class", equalTo(UrlRewriteServletFilter.class.getName())));
LOG_EXIT();
}
use of org.jboss.shrinkwrap.api.spec.EnterpriseArchive in project knox by apache.
the class DeploymentFactoryFuncTest method testDeploymentWithServiceParams.
@Test(timeout = LONG_TIMEOUT)
public void testDeploymentWithServiceParams() throws Exception {
LOG_ENTER();
GatewayConfig config = new GatewayTestConfig();
File targetDir = new File(System.getProperty("user.dir"), "target");
File gatewayDir = new File(targetDir, "gateway-home-" + UUID.randomUUID());
gatewayDir.mkdirs();
((GatewayTestConfig) config).setGatewayHomeDir(gatewayDir.getAbsolutePath());
File deployDir = new File(config.getGatewayDeploymentDir());
deployDir.mkdirs();
DefaultGatewayServices srvcs = new DefaultGatewayServices();
Map<String, String> options = new HashMap<>();
options.put("persist-master", "false");
options.put("master", "password");
try {
DeploymentFactory.setGatewayServices(srvcs);
srvcs.init(config, options);
} catch (ServiceLifecycleException e) {
// I18N not required.
e.printStackTrace();
}
Service service;
Param param;
Topology topology = new Topology();
topology.setName("test-cluster");
service = new Service();
service.setRole("HIVE");
service.setUrls(Arrays.asList(new String[] { "http://hive-host:50001/" }));
param = new Param();
param.setName("someparam");
param.setValue("somevalue");
service.addParam(param);
topology.addService(service);
service = new Service();
service.setRole("WEBHBASE");
service.setUrls(Arrays.asList(new String[] { "http://hbase-host:50002/" }));
param = new Param();
param.setName("replayBufferSize");
param.setValue("33");
service.addParam(param);
topology.addService(service);
service = new Service();
service.setRole("OOZIE");
service.setUrls(Arrays.asList(new String[] { "http://hbase-host:50003/" }));
param = new Param();
param.setName("otherparam");
param.setValue("65");
service.addParam(param);
topology.addService(service);
EnterpriseArchive war = DeploymentFactory.createDeployment(config, topology);
Document doc = XmlUtils.readXml(war.get("%2F/WEB-INF/gateway.xml").getAsset().openStream());
// dump( doc );
Node resourceNode, filterNode, paramNode;
String value;
resourceNode = node(doc, "gateway/resource[role/text()='HIVE']");
assertThat(resourceNode, is(not(nullValue())));
filterNode = node(resourceNode, "filter[role/text()='dispatch']");
assertThat(filterNode, is(not(nullValue())));
paramNode = node(filterNode, "param[name/text()='someparam']");
value = value(paramNode, "value/text()");
assertThat(value, is("somevalue"));
resourceNode = node(doc, "gateway/resource[role/text()='WEBHBASE']");
assertThat(resourceNode, is(not(nullValue())));
filterNode = node(resourceNode, "filter[role/text()='dispatch']");
assertThat(filterNode, is(not(nullValue())));
paramNode = node(filterNode, "param[name/text()='replayBufferSize']");
value = value(paramNode, "value/text()");
assertThat(value, is("33"));
resourceNode = node(doc, "gateway/resource[role/text()='OOZIE']");
assertThat(resourceNode, is(not(nullValue())));
filterNode = node(resourceNode, "filter[role/text()='dispatch']");
assertThat(filterNode, is(not(nullValue())));
paramNode = node(filterNode, "param[name/text()='otherparam']");
value = value(paramNode, "value/text()");
assertThat(value, is("65"));
FileUtils.deleteQuietly(deployDir);
LOG_EXIT();
}
use of org.jboss.shrinkwrap.api.spec.EnterpriseArchive in project knox by apache.
the class DeploymentFactoryFuncTest method testServiceAnonAuth.
/**
* Test the case where topology has federation provider configured
* and service uses anonymous authentication in which case we should
* add AnonymousFilter to the filter chain.
* @since 1.1.0
* @throws IOException
* @throws SAXException
* @throws ParserConfigurationException
* @throws URISyntaxException
* @throws TransformerException
*/
@Test(timeout = MEDIUM_TIMEOUT)
public void testServiceAnonAuth() throws IOException, SAXException, ParserConfigurationException, URISyntaxException, TransformerException {
LOG_ENTER();
final GatewayConfig config = new GatewayTestConfig();
((GatewayTestConfig) config).setXForwardedEnabled(false);
final File targetDir = new File(System.getProperty("user.dir"), "target");
final File gatewayDir = new File(targetDir, "gateway-home-" + UUID.randomUUID());
gatewayDir.mkdirs();
((GatewayTestConfig) config).setGatewayHomeDir(gatewayDir.getAbsolutePath());
final File deployDir = new File(config.getGatewayDeploymentDir());
deployDir.mkdirs();
final DefaultGatewayServices srvcs = new DefaultGatewayServices();
final Map<String, String> options = new HashMap<>();
options.put("persist-master", "false");
options.put("master", "password");
try {
DeploymentFactory.setGatewayServices(srvcs);
srvcs.init(config, options);
} catch (ServiceLifecycleException e) {
// I18N not required.
e.printStackTrace();
}
final Topology federationTopology = new Topology();
final Topology authenticationTopology = new Topology();
federationTopology.setName("test-cluster");
authenticationTopology.setName("test-cluster");
final Service service = new Service();
service.setRole("RANGER");
service.addUrl("http://localhost:50070/");
federationTopology.addService(service);
authenticationTopology.addService(service);
/* Add federation provider to first topology */
final Provider provider = new Provider();
provider.setRole("federation");
provider.setName("SSOCookieProvider");
provider.setEnabled(true);
Param param = new Param();
param.setName("sso.authentication.provider.url");
param.setValue("https://www.local.com:8443/gateway/knoxsso/api/v1/websso");
provider.addParam(param);
federationTopology.addProvider(provider);
/* Add authentication provider to second topology */
final Provider provider2 = new Provider();
provider2.setRole("authentication");
provider2.setName("ShiroProvider");
provider2.setEnabled(true);
Param param2 = new Param();
param2.setName("contextConfigLocation");
param2.setValue("classpath:app-context-security.xml");
provider2.addParam(param2);
authenticationTopology.addProvider(provider2);
final Provider asserter = new Provider();
asserter.setRole("identity-assertion");
asserter.setName("Default");
asserter.setEnabled(true);
federationTopology.addProvider(asserter);
Provider authorizer = new Provider();
authorizer.setRole("authorization");
authorizer.setName("AclsAuthz");
authorizer.setEnabled(true);
federationTopology.addProvider(authorizer);
authenticationTopology.addProvider(authorizer);
final EnterpriseArchive war = DeploymentFactory.createDeployment(config, federationTopology);
final EnterpriseArchive war2 = DeploymentFactory.createDeployment(config, federationTopology);
final Document web = XmlUtils.readXml(war.get("%2F/WEB-INF/web.xml").getAsset().openStream());
final Document web2 = XmlUtils.readXml(war2.get("%2F/WEB-INF/web.xml").getAsset().openStream());
/* Make sure AnonymousAuthFilter is added to the chain */
final Document gateway = XmlUtils.readXml(war.get("%2F/WEB-INF/gateway.xml").getAsset().openStream());
assertThat(gateway, hasXPath("/gateway/resource[1]/pattern", equalTo("/ranger/service/public/**")));
assertThat(gateway, hasXPath("/gateway/resource[1]/filter[1]/role", equalTo("authentication")));
assertThat(gateway, hasXPath("/gateway/resource[1]/filter[1]/class", equalTo("org.apache.knox.gateway.filter.AnonymousAuthFilter")));
assertThat(gateway, hasXPath("/gateway/resource[1]/filter[2]/role", equalTo("rewrite")));
assertThat(gateway, hasXPath("/gateway/resource[1]/filter[2]/class", equalTo("org.apache.knox.gateway.filter.rewrite.api.UrlRewriteServletFilter")));
assertThat(gateway, hasXPath("/gateway/resource[1]/filter[3]/role", equalTo("authorization")));
assertThat(gateway, hasXPath("/gateway/resource[1]/filter[3]/class", equalTo("org.apache.knox.gateway.filter.AclsAuthorizationFilter")));
assertThat(gateway, hasXPath("/gateway/resource[1]/filter[4]/role", equalTo("dispatch")));
assertThat(gateway, hasXPath("/gateway/resource[1]/filter[4]/class", equalTo("org.apache.knox.gateway.dispatch.GatewayDispatchFilter")));
final Document gateway2 = XmlUtils.readXml(war.get("%2F/WEB-INF/gateway.xml").getAsset().openStream());
assertThat(gateway2, hasXPath("/gateway/resource[1]/pattern", equalTo("/ranger/service/public/**")));
assertThat(gateway2, hasXPath("/gateway/resource[1]/filter[1]/role", equalTo("authentication")));
assertThat(gateway2, hasXPath("/gateway/resource[1]/filter[1]/class", equalTo("org.apache.knox.gateway.filter.AnonymousAuthFilter")));
assertThat(gateway2, hasXPath("/gateway/resource[1]/filter[2]/role", equalTo("rewrite")));
assertThat(gateway2, hasXPath("/gateway/resource[1]/filter[2]/class", equalTo("org.apache.knox.gateway.filter.rewrite.api.UrlRewriteServletFilter")));
assertThat(gateway2, hasXPath("/gateway/resource[1]/filter[3]/role", equalTo("authorization")));
assertThat(gateway2, hasXPath("/gateway/resource[1]/filter[3]/class", equalTo("org.apache.knox.gateway.filter.AclsAuthorizationFilter")));
assertThat(gateway2, hasXPath("/gateway/resource[1]/filter[4]/role", equalTo("dispatch")));
assertThat(gateway2, hasXPath("/gateway/resource[1]/filter[4]/class", equalTo("org.apache.knox.gateway.dispatch.GatewayDispatchFilter")));
LOG_EXIT();
}
use of org.jboss.shrinkwrap.api.spec.EnterpriseArchive in project knox by apache.
the class DeploymentFactoryFuncTest method createAndTestDeployment.
private void createAndTestDeployment(GatewayConfig config, Topology topology) throws IOException, SAXException, ParserConfigurationException {
EnterpriseArchive war = DeploymentFactory.createDeployment(config, topology);
// File dir = new File( System.getProperty( "user.dir" ) );
// File file = war.as( ExplodedExporter.class ).exportExploded( dir, "test-cluster.war" );
Document web = XmlUtils.readXml(war.get("%2F/WEB-INF/web.xml").getAsset().openStream());
assertThat(web, hasXPath("/web-app/servlet/servlet-class", equalTo("org.apache.knox.gateway.GatewayServlet")));
assertThat(web, hasXPath("/web-app/servlet/init-param/param-name", equalTo("gatewayDescriptorLocation")));
assertThat(web, hasXPath("/web-app/servlet/init-param/param-value", equalTo("/WEB-INF/gateway.xml")));
assertThat(web, hasXPath("/web-app/servlet-mapping/servlet-name", equalTo("test-cluster-knox-gateway-servlet")));
assertThat(web, hasXPath("/web-app/servlet-mapping/url-pattern", equalTo("/*")));
// testing the order of listener classes generated
assertThat(web, hasXPath("/web-app/listener[2]/listener-class", equalTo("org.apache.knox.gateway.services.GatewayServicesContextListener")));
assertThat(web, hasXPath("/web-app/listener[3]/listener-class", equalTo("org.apache.knox.gateway.services.GatewayMetricsServletContextListener")));
assertThat(web, hasXPath("/web-app/listener[4]/listener-class", equalTo("org.apache.knox.gateway.ha.provider" + ".HaServletContextListener")));
assertThat(web, hasXPath("/web-app/listener[5]/listener-class", equalTo("org.apache.knox.gateway.filter" + ".rewrite.api.UrlRewriteServletContextListener")));
}
use of org.jboss.shrinkwrap.api.spec.EnterpriseArchive in project core by weld.
the class EnterpriseBeanLifecycleRemoteTest method deploy.
@Deployment(testable = false)
public static Archive<?> deploy() {
EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, Utils.getDeploymentNameAsHash(EnterpriseBeanLifecycleRemoteTest.class, Utils.ARCHIVE_TYPE.EAR));
ear.addAsModule(ShrinkWrap.create(WebArchive.class, "test.war").addClass(RemoteClient.class).addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml").setManifest(new StringAsset("Manifest-Version: 1.0\nClass-Path: test-archive.jar\n")));
ear.addAsModule(ShrinkWrap.create(BeanArchive.class, "test-archive.jar").addClasses(KleinStadt.class, Kassel.class, GrossStadt.class, FrankfurtAmMain.class, SchoeneStadt.class).addClasses(Utils.class, Assert.class, Description.class, SelfDescribing.class, ComparisonFailure.class).addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"));
return ear;
}
Aggregations