From b465fe7d05ada782cc295cac7f1b40779a07fcef Mon Sep 17 00:00:00 2001 From: Gytis Trikleris Date: Wed, 23 Sep 2015 15:17:24 +0100 Subject: [PATCH] [WFLY-5518] Fix XTS tests to work with security manager --- testsuite/integration/xts/pom.xml | 23 ++++- .../client/CompensatableTestCase.java | 28 ++---- .../client/TransactionalTestCase.java | 29 +++--- .../CompensationScopedTestCase.java | 8 +- .../as/test/xts/util/DeploymentHelper.java | 92 +++++++++++++++++++ .../as/test/xts/wsat/client/ATTestCase.java | 13 +-- .../BACoordinatorCompletionTestCase.java | 14 +-- .../BAParticipantCompletionTestCase.java | 9 +- 8 files changed, 147 insertions(+), 69 deletions(-) create mode 100644 testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/util/DeploymentHelper.java diff --git a/testsuite/integration/xts/pom.xml b/testsuite/integration/xts/pom.xml index d179315cb389..5d9bda46c002 100644 --- a/testsuite/integration/xts/pom.xml +++ b/testsuite/integration/xts/pom.xml @@ -92,7 +92,28 @@ - + + ts.security.manager + + + security.manager + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + **/BAParticipantCompletionTestCase.java + + + + + + diff --git a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/client/CompensatableTestCase.java b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/client/CompensatableTestCase.java index a73458f134ef..2c166fdefae5 100644 --- a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/client/CompensatableTestCase.java +++ b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/client/CompensatableTestCase.java @@ -24,14 +24,10 @@ import com.arjuna.mw.wst11.UserBusinessActivity; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; -import org.jboss.arquillian.test.api.ArquillianResource; -import org.jboss.as.arquillian.container.ManagementClient; +import org.jboss.as.test.shared.TestSuiteEnvironment; import org.jboss.as.test.xts.annotation.service.CompensatableService; import org.jboss.as.test.xts.annotation.service.CompensatableServiceImpl; -import org.jboss.shrinkwrap.api.ArchivePaths; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; -import org.jboss.shrinkwrap.api.asset.StringAsset; +import org.jboss.as.test.xts.util.DeploymentHelper; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Assert; import org.junit.Test; @@ -45,23 +41,25 @@ public class CompensatableTestCase { private static final String DEPLOYMENT_NAME = "compensatable-test"; - @ArquillianResource - private ManagementClient managementClient; + private static final String SERVER_HOST_PORT = TestSuiteEnvironment.getServerAddress() + ":" + + TestSuiteEnvironment.getHttpPort(); + + private static final String DEPLOYMENT_URL = "http://" + SERVER_HOST_PORT + "/" + DEPLOYMENT_NAME; @Deployment public static WebArchive getDeployment() { - final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, DEPLOYMENT_NAME + ".war") + final WebArchive webArchive = DeploymentHelper.getInstance().getWebArchiveWithPermissions(DEPLOYMENT_NAME) .addClass(CompensatableClient.class) .addClass(CompensatableService.class) .addClass(CompensatableServiceImpl.class) - .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")); + .addClass(TestSuiteEnvironment.class); return webArchive; } @Test public void testNoTransaction() throws Exception { - final String deploymentUrl = getDeploymentUrl(); + final String deploymentUrl = DEPLOYMENT_URL; final CompensatableService compensatableService = CompensatableClient.newInstance(deploymentUrl); final boolean isTransactionActive = compensatableService.isTransactionActive(); @@ -71,7 +69,7 @@ public void testNoTransaction() throws Exception { @Test public void testActiveTransaction() throws Exception { - final String deploymentUrl = getDeploymentUrl(); + final String deploymentUrl = DEPLOYMENT_URL; final CompensatableService compensatableService = CompensatableClient.newInstance(deploymentUrl); final UserBusinessActivity userBusinessActivity = UserBusinessActivity.getUserBusinessActivity(); @@ -83,10 +81,4 @@ public void testActiveTransaction() throws Exception { Assert.assertEquals(true, isTransactionActive); } - private String getDeploymentUrl() { - final String baseUrl = managementClient.getWebUri().toString(); - - return baseUrl + "/" + DEPLOYMENT_NAME; - } - } \ No newline at end of file diff --git a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/client/TransactionalTestCase.java b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/client/TransactionalTestCase.java index 1769ef992c90..83bf1d882c7d 100644 --- a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/client/TransactionalTestCase.java +++ b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/client/TransactionalTestCase.java @@ -24,13 +24,10 @@ import com.arjuna.mw.wst11.UserTransaction; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; -import org.jboss.arquillian.test.api.ArquillianResource; -import org.jboss.as.arquillian.container.ManagementClient; +import org.jboss.as.test.shared.TestSuiteEnvironment; import org.jboss.as.test.xts.annotation.service.TransactionalService; import org.jboss.as.test.xts.annotation.service.TransactionalServiceImpl; -import org.jboss.shrinkwrap.api.ArchivePaths; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; +import org.jboss.as.test.xts.util.DeploymentHelper; import org.jboss.shrinkwrap.api.asset.StringAsset; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Assert; @@ -45,24 +42,26 @@ public class TransactionalTestCase { private static final String DEPLOYMENT_NAME = "transactional-test"; - @ArquillianResource - private ManagementClient managementClient; + private static final String SERVER_HOST_PORT = TestSuiteEnvironment.getServerAddress() + ":" + + TestSuiteEnvironment.getHttpPort(); + + private static final String DEPLOYMENT_URL = "http://" + SERVER_HOST_PORT + "/" + DEPLOYMENT_NAME; @Deployment public static WebArchive getDeployment() { - final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, DEPLOYMENT_NAME + ".war") + final WebArchive webArchive = DeploymentHelper.getInstance().getWebArchiveWithPermissions(DEPLOYMENT_NAME) .addClass(TransactionalClient.class) .addClass(TransactionalService.class) .addClass(TransactionalServiceImpl.class) - .addAsManifestResource(new StringAsset("Dependencies: org.jboss.xts,org.jboss.jts\n"), "MANIFEST.MF") - .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")); + .addClass(TestSuiteEnvironment.class) + .addAsManifestResource(new StringAsset("Dependencies: org.jboss.xts,org.jboss.jts\n"), "MANIFEST.MF"); return webArchive; } @Test public void testNoTransaction() throws Exception { - final String deploymentUrl = getDeploymentUrl(); + final String deploymentUrl = DEPLOYMENT_URL; final TransactionalService transactionalService = TransactionalClient.newInstance(deploymentUrl); final boolean isTransactionActive = transactionalService.isTransactionActive(); @@ -72,7 +71,7 @@ public void testNoTransaction() throws Exception { @Test public void testActiveTransaction() throws Exception { - final String deploymentUrl = getDeploymentUrl(); + final String deploymentUrl = DEPLOYMENT_URL; final TransactionalService transactionalService = TransactionalClient.newInstance(deploymentUrl); final UserTransaction userTransaction = UserTransaction.getUserTransaction(); @@ -83,10 +82,4 @@ public void testActiveTransaction() throws Exception { Assert.assertEquals(true, isTransactionActive); } - private String getDeploymentUrl() { - final String baseUrl = managementClient.getWebUri().toString(); - - return baseUrl + "/" + DEPLOYMENT_NAME; - } - } diff --git a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/compensationScoped/CompensationScopedTestCase.java b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/compensationScoped/CompensationScopedTestCase.java index fa7b1845f4a0..4eda07a1b3c6 100644 --- a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/compensationScoped/CompensationScopedTestCase.java +++ b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/annotation/compensationScoped/CompensationScopedTestCase.java @@ -23,10 +23,9 @@ import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; +import org.jboss.as.test.xts.util.DeploymentHelper; import org.jboss.narayana.compensations.impl.BAControler; import org.jboss.narayana.compensations.impl.BAControllerFactory; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.After; import org.junit.Assert; @@ -49,9 +48,8 @@ public class CompensationScopedTestCase { @Deployment public static JavaArchive getDeployment() { - JavaArchive archive = ShrinkWrap.create(JavaArchive.class, "test.jar") - .addPackage(CompensationScopedTestCase.class.getPackage()) - .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); + final JavaArchive archive = DeploymentHelper.getInstance().getJavaArchive("test") + .addPackage(CompensationScopedTestCase.class.getPackage()); return archive; } diff --git a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/util/DeploymentHelper.java b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/util/DeploymentHelper.java new file mode 100644 index 000000000000..a78cbb1af244 --- /dev/null +++ b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/util/DeploymentHelper.java @@ -0,0 +1,92 @@ +/* + * JBoss, Home of Professional Open Source. + * Copyright 2015, Red Hat, Inc., and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.as.test.xts.util; + +import org.jboss.as.test.shared.TestSuiteEnvironment; +import org.jboss.as.test.shared.integration.ejb.security.PermissionUtils; +import org.jboss.shrinkwrap.api.ArchivePaths; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.asset.EmptyAsset; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.jboss.shrinkwrap.api.spec.WebArchive; + +import java.io.File; +import java.io.FilePermission; +import java.net.SocketPermission; +import java.util.PropertyPermission; + +/** + * @author Gytis Trikleris + */ +public class DeploymentHelper { + + private static final DeploymentHelper INSTANCE = new DeploymentHelper(); + + private DeploymentHelper() { + + } + + public static DeploymentHelper getInstance() { + return INSTANCE; + } + + public JavaArchive getJavaArchive(final String archiveName) { + final JavaArchive javaArchive = ShrinkWrap.create(JavaArchive.class, archiveName + ".jar") + .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); + + return javaArchive; + } + + public WebArchive getWebArchive(final String archiveName) { + final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, archiveName + ".war") + .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")); + + return webArchive; + } + + public WebArchive getWebArchiveWithPermissions(final String archiveName) { + final String javaHome = TestSuiteEnvironment.getSystemProperty("java.home"); + final String serverHostPort = TestSuiteEnvironment.getServerAddress() + ":" + + TestSuiteEnvironment.getHttpPort(); + + final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, archiveName + ".war") + .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")) + .addAsManifestResource(PermissionUtils.createPermissionsXmlAsset( + // Permissions for port access + new PropertyPermission("management.address", "read"), + new PropertyPermission("node0", "read"), + new PropertyPermission("jboss.http.port", "read"), + new SocketPermission(serverHostPort, "connect,resolve"), + // Permissions for the new client creation + new RuntimePermission("getClassLoader"), + new FilePermission(javaHome + File.separator + "lib" + File.separator + "wsdl.properties", "read"), + new PropertyPermission("user.dir", "read"), + new RuntimePermission("org.apache.cxf.permission"), + new RuntimePermission("createClassLoader"), + new FilePermission(System.getProperty("basedir") + File.separator + "target" + File.separator + + "workdir" + File.separator + "xcatalog", "read") + ), "permissions.xml"); + + return webArchive; + } + +} diff --git a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsat/client/ATTestCase.java b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsat/client/ATTestCase.java index f3c0058f2ceb..df33f7100f6b 100644 --- a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsat/client/ATTestCase.java +++ b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsat/client/ATTestCase.java @@ -35,6 +35,7 @@ import org.jboss.as.test.xts.base.BaseFunctionalTest; import org.jboss.as.test.xts.base.TestApplicationException; +import org.jboss.as.test.xts.util.DeploymentHelper; import org.jboss.as.test.xts.util.EventLog; import org.jboss.as.test.xts.util.EventLogEvent; import org.jboss.as.test.xts.wsat.service.AT; @@ -45,9 +46,6 @@ import static org.jboss.as.test.xts.util.ServiceCommand.*; import static org.jboss.as.test.xts.util.EventLogEvent.*; -import org.jboss.shrinkwrap.api.ArchivePaths; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.asset.StringAsset; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.After; @@ -66,23 +64,20 @@ public class ATTestCase extends BaseFunctionalTest { private AT client1, client2, client3; public static final String ARCHIVE_NAME = "wsat-test"; - + @Inject EventLog eventLog; @Deployment public static WebArchive createTestArchive() { - WebArchive archive = ShrinkWrap.create(WebArchive.class, ARCHIVE_NAME + ".war") + final WebArchive archive = DeploymentHelper.getInstance().getWebArchiveWithPermissions(ARCHIVE_NAME) .addPackage(AT.class.getPackage()) .addPackage(ATClient.class.getPackage()) .addPackage(EventLog.class.getPackage()) .addPackage(BaseFunctionalTest.class.getPackage()) - // needed to setup the server-side handler chain .addAsResource("context-handlers.xml") - .addAsManifestResource(new StringAsset("Dependencies: org.jboss.xts,org.jboss.jts\n"), "MANIFEST.MF") - .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")); // beans.xml is put under web-inf for war deploy - + .addAsManifestResource(new StringAsset("Dependencies: org.jboss.xts,org.jboss.jts\n"), "MANIFEST.MF"); return archive; } diff --git a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsba/coordinatorcompletion/client/BACoordinatorCompletionTestCase.java b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsba/coordinatorcompletion/client/BACoordinatorCompletionTestCase.java index b0c7c008ce93..08eda9d1116f 100644 --- a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsba/coordinatorcompletion/client/BACoordinatorCompletionTestCase.java +++ b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsba/coordinatorcompletion/client/BACoordinatorCompletionTestCase.java @@ -22,8 +22,6 @@ package org.jboss.as.test.xts.wsba.coordinatorcompletion.client; -import java.io.File; - import javax.inject.Inject; import com.arjuna.mw.wst11.UserBusinessActivity; @@ -33,18 +31,14 @@ import org.jboss.arquillian.junit.Arquillian; import org.jboss.as.test.xts.base.BaseFunctionalTest; import org.jboss.as.test.xts.base.TestApplicationException; +import org.jboss.as.test.xts.util.DeploymentHelper; import org.jboss.as.test.xts.util.EventLog; import org.jboss.as.test.xts.util.EventLogEvent; import org.jboss.as.test.xts.wsba.coordinatorcompletion.service.BACoordinatorCompletion; import org.jboss.as.test.xts.wsba.coordinatorcompletion.service.BACoordinatorCompletionService1; import org.jboss.as.test.xts.wsba.coordinatorcompletion.service.BACoordinatorCompletionService2; import org.jboss.as.test.xts.wsba.coordinatorcompletion.service.BACoordinatorCompletionService3; -import org.jboss.shrinkwrap.api.Archive; -import org.jboss.shrinkwrap.api.ArchivePaths; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.asset.StringAsset; -import org.jboss.shrinkwrap.api.exporter.ZipExporter; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.After; import org.junit.Assert; @@ -69,15 +63,13 @@ public class BACoordinatorCompletionTestCase extends BaseFunctionalTest { public static final String ARCHIVE_NAME = "wsba-coordinatorcompletition-test"; @Deployment - public static Archive createTestArchive() { - Archive war = ShrinkWrap.create(WebArchive.class, ARCHIVE_NAME + ".war") + public static WebArchive createTestArchive() { + final WebArchive war = DeploymentHelper.getInstance().getWebArchiveWithPermissions(ARCHIVE_NAME) .addPackage(BACoordinatorCompletion.class.getPackage()) .addPackage(BACoordinatorCompletionClient.class.getPackage()) .addPackage(EventLog.class.getPackage()) .addPackage(BaseFunctionalTest.class.getPackage()) - .addAsResource("context-handlers.xml") - .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")) .addAsManifestResource(new StringAsset("Dependencies: org.jboss.xts,org.jboss.jts\n"), "MANIFEST.MF"); return war; } diff --git a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsba/participantcompletion/client/BAParticipantCompletionTestCase.java b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsba/participantcompletion/client/BAParticipantCompletionTestCase.java index bd10ead0a160..b12731e330de 100644 --- a/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsba/participantcompletion/client/BAParticipantCompletionTestCase.java +++ b/testsuite/integration/xts/src/test/java/org/jboss/as/test/xts/wsba/participantcompletion/client/BAParticipantCompletionTestCase.java @@ -32,6 +32,7 @@ import org.jboss.arquillian.junit.Arquillian; import org.jboss.as.test.xts.base.BaseFunctionalTest; import org.jboss.as.test.xts.base.TestApplicationException; +import org.jboss.as.test.xts.util.DeploymentHelper; import org.jboss.as.test.xts.util.EventLog; import org.jboss.as.test.xts.util.EventLogEvent; import org.jboss.as.test.xts.wsba.participantcompletion.service.BAParticipantCompletion; @@ -41,11 +42,7 @@ import org.jboss.jbossts.xts.bytemanSupport.BMScript; import org.jboss.jbossts.xts.bytemanSupport.participantCompletion.ParticipantCompletionCoordinatorRules; import org.jboss.shrinkwrap.api.Archive; -import org.jboss.shrinkwrap.api.ArchivePaths; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.asset.StringAsset; -import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; @@ -72,15 +69,13 @@ public class BAParticipantCompletionTestCase extends BaseFunctionalTest { @Deployment public static Archive createTestArchive() { - return ShrinkWrap.create(WebArchive.class, ARCHIVE_NAME + ".war") + return DeploymentHelper.getInstance().getWebArchive(ARCHIVE_NAME) .addPackage(BAParticipantCompletion.class.getPackage()) .addPackage(BAParticipantCompletionClient.class.getPackage()) .addPackage(EventLog.class.getPackage()) .addPackage(BaseFunctionalTest.class.getPackage()) .addClass(ParticipantCompletionCoordinatorRules.class) - .addAsResource("context-handlers.xml") - .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")) .addAsManifestResource(new StringAsset("Dependencies: org.jboss.xts,org.jboss.jts\n"), "MANIFEST.MF"); }