CCM NG:
- Infrastructure for integration tests in ccm-shortcuts now works (may serve as an example of other modules) - Integration tests for ShortcutRepository and ShortcutManager - Fixed some bugs in the database migration scripts git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4148 8810af33-2d31-482b-a856-94f89814c4dfpull/2/head
parent
e4f8ca3b97
commit
e7f4e49a15
|
|
@ -130,14 +130,30 @@
|
|||
<build>
|
||||
<finalName>ccm-shortcuts</finalName>
|
||||
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<testResources>
|
||||
<testResource>
|
||||
<directory>src/test/resources</directory>
|
||||
</testResource>
|
||||
<testResource>
|
||||
<directory>${project.build.directory}/generated-resources</directory>
|
||||
</testResource>
|
||||
</testResources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.3</version>
|
||||
<configuration>
|
||||
<source>1.7</source>
|
||||
<target>1.7</target>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
<optimize>true</optimize>
|
||||
<debug>true</debug>
|
||||
<encoding>${project.build.sourceEncoding}</encoding>
|
||||
|
|
@ -219,13 +235,6 @@
|
|||
|
||||
</plugins>
|
||||
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
</build>
|
||||
|
||||
<reporting>
|
||||
|
|
@ -347,7 +356,7 @@
|
|||
<profile>
|
||||
<id>wildfly-remote-h2-mem</id>
|
||||
<dependencies>
|
||||
<!-- <dependency>
|
||||
<!-- <dependency>
|
||||
<groupId>org.libreccm</groupId>
|
||||
<artifactId>ccm-core</artifactId>
|
||||
<version>${project.parent.version}</version>
|
||||
|
|
@ -359,6 +368,11 @@
|
|||
<!--<version>8.2.1.Final</version>-->
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jboss.shrinkwrap.resolver</groupId>
|
||||
<artifactId>shrinkwrap-resolver-impl-maven</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jacoco</groupId>
|
||||
<artifactId>org.jacoco.core</artifactId>
|
||||
|
|
|
|||
|
|
@ -44,14 +44,16 @@ import javax.persistence.Table;
|
|||
query = "SELECT s FROM Shortcut s WHERE s.urlKey = :urlKey"),
|
||||
@NamedQuery(
|
||||
name = "Shortcut.findByRedirect",
|
||||
query = "SELECT s FROM Shortcut s WHERE s.redirect = :redirect")
|
||||
query = "SELECT s FROM Shortcut s "
|
||||
+ "WHERE s.redirect = :redirect "
|
||||
+ "ORDER BY s.urlKey")
|
||||
})
|
||||
public class Shortcut implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -5674633339633714327L;
|
||||
|
||||
@Id
|
||||
@Column(name = "SHORTCUTS_ID")
|
||||
@Column(name = "SHORTCUT_ID")
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private long shortcutId;
|
||||
|
||||
|
|
|
|||
|
|
@ -42,11 +42,21 @@ public class ShortcutManager {
|
|||
/**
|
||||
* Creates a Shortcut
|
||||
*
|
||||
* @param url
|
||||
* @param redirect
|
||||
* @param url The URL of the Shortcut. Can't be null.
|
||||
* @param redirect The URL to which the Shortcut redirects. Can't be null.
|
||||
* @return the new Shortcut
|
||||
*/
|
||||
public Shortcut createShortcut(final String url, final String redirect) {
|
||||
if (url == null || url.trim().isEmpty()) {
|
||||
throw new IllegalArgumentException(
|
||||
"The URL key of a Shortcut can't be empty");
|
||||
}
|
||||
|
||||
if (redirect == null || redirect.trim().isEmpty()) {
|
||||
throw new IllegalArgumentException(
|
||||
"The redirect target of a Shortcut can't be empty");
|
||||
}
|
||||
|
||||
Shortcut shortcut = new Shortcut();
|
||||
shortcut.setUrlKey(url);
|
||||
shortcut.setRedirect(redirect);
|
||||
|
|
@ -56,30 +66,50 @@ public class ShortcutManager {
|
|||
/**
|
||||
* Creates a Shortcut
|
||||
*
|
||||
* @param url
|
||||
* @param redirect
|
||||
* @param url The URL of the Shortcut. Can't be null.
|
||||
* @param redirect The URL to which the Shortcut redirects. Can't be null.
|
||||
* @return the new Shortcut
|
||||
*/
|
||||
public Shortcut createShortcut(final URL url, final URL redirect) {
|
||||
Shortcut shortcut = new Shortcut();
|
||||
shortcut.setUrlKey(url.toString());
|
||||
shortcut.setRedirect(redirect.toString());
|
||||
return shortcut;
|
||||
}
|
||||
// public Shortcut createShortcut(final URL url, final URL redirect) {
|
||||
// if (url == null) {
|
||||
// throw new IllegalArgumentException(
|
||||
// "The URL key of a Shortcut can't be empty");
|
||||
// }
|
||||
//
|
||||
// if (redirect == null) {
|
||||
// throw new IllegalArgumentException(
|
||||
// "The redirect target of a Shortcut can't be empty");
|
||||
// }
|
||||
//
|
||||
// Shortcut shortcut = new Shortcut();
|
||||
// shortcut.setUrlKey(url.toString());
|
||||
// shortcut.setRedirect(redirect.toString());
|
||||
// return shortcut;
|
||||
// }
|
||||
|
||||
/**
|
||||
* Creates a Shortcut
|
||||
*
|
||||
* @param uri
|
||||
* @param redirect
|
||||
* @param uri The URI of the Shortcut. Can't be null.
|
||||
* @param redirect The URI to which the Shortcut redirects. Can't be null.
|
||||
* @return the new Shortcut
|
||||
*/
|
||||
public Shortcut createShortcut(final URI uri, final URI redirect) {
|
||||
Shortcut shortcut = new Shortcut();
|
||||
shortcut.setUrlKey(uri.toString());
|
||||
shortcut.setRedirect(redirect.toString());
|
||||
return shortcut;
|
||||
}
|
||||
// public Shortcut createShortcut(final URI uri, final URI redirect) {
|
||||
// if (uri == null) {
|
||||
// throw new IllegalArgumentException(
|
||||
// "The URL key of a Shortcut can't be empty");
|
||||
// }
|
||||
//
|
||||
// if (redirect == null) {
|
||||
// throw new IllegalArgumentException(
|
||||
// "The redirect target of a Shortcut can't be empty");
|
||||
// }
|
||||
//
|
||||
// Shortcut shortcut = new Shortcut();
|
||||
// shortcut.setUrlKey(uri.toString());
|
||||
// shortcut.setRedirect(redirect.toString());
|
||||
// return shortcut;
|
||||
// }
|
||||
|
||||
/**
|
||||
* checks if the Shortcut exists.
|
||||
|
|
@ -87,6 +117,7 @@ public class ShortcutManager {
|
|||
* @return true if the Shortcut exists
|
||||
*/
|
||||
private boolean testShortcut(final Shortcut shortcut) {
|
||||
//ToDo
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -103,5 +134,4 @@ public class ShortcutManager {
|
|||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public class ShortcutRepository extends AbstractEntityRepository<Long, Shortcut>
|
|||
*
|
||||
* @param urlKey the wanted urlKey
|
||||
*
|
||||
* @return The shortcut with the specified urlKey if there is any.
|
||||
* @return The shortcut with the specified {@code urlKey} if there is any.
|
||||
*/
|
||||
public Optional<Shortcut> findByUrlKey(final String urlKey) {
|
||||
final TypedQuery<Shortcut> query = getEntityManager().createNamedQuery(
|
||||
|
|
@ -68,7 +68,7 @@ public class ShortcutRepository extends AbstractEntityRepository<Long, Shortcut>
|
|||
* Finds all shortcuts which redirect to the provided target.
|
||||
*
|
||||
* @param redirect the wanted redirect
|
||||
* @return List<Shortcut> a List of Shortcuts with the specified redirect
|
||||
* @return a List of Shortcuts with the specified {@code redirect}
|
||||
*/
|
||||
public List<Shortcut> findByRedirect(final String redirect) {
|
||||
final TypedQuery<Shortcut> query = getEntityManager().createNamedQuery(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
create table SHORTCUTS (
|
||||
shortcut_id bigint generated by default as identity,
|
||||
redirect varchar(1024),
|
||||
url_key varchar(1024),
|
||||
primary key (shortcut_id)
|
||||
);
|
||||
|
||||
alter table CCM_SHORTCUTS.SHORTCUTS
|
||||
add constraint UK_4otuwtog6qqdbg4e6p8xdpw8h unique (URL_KEY);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
create table SHORTCUTS (
|
||||
shortcut_id int8 not null,
|
||||
redirect varchar(1024),
|
||||
url_key varchar(1024),
|
||||
primary key (shortcut_id)
|
||||
);
|
||||
|
||||
alter table CCM_SHORTCUTS.SHORTCUTS
|
||||
add constraint UK_4otuwtog6qqdbg4e6p8xdpw8h unique (URL_KEY);
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* Copyright (C) 2016 LibreCCM Foundation.
|
||||
*
|
||||
* This library 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 library 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 library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.shortcuts;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.experimental.categories.Category;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
import org.libreccm.tests.categories.UnitTest;
|
||||
import org.libreccm.testutils.DatasetType;
|
||||
import org.libreccm.testutils.DatasetsVerifier;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@RunWith(Parameterized.class)
|
||||
@Category(UnitTest.class)
|
||||
public class DatasetsTest extends DatasetsVerifier {
|
||||
|
||||
@Parameterized.Parameters(name = "Dataset {0}")
|
||||
public static Collection<String> data() {
|
||||
return Arrays.asList(new String[]{
|
||||
"/datasets/org/libreccm/shortcuts/ShortcutRepositoryTest/data.xml",
|
||||
"/datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml",
|
||||
"/datasets/org/libreccm/shortcuts/ShortcutManagerTest/after-create.xml"
|
||||
});
|
||||
}
|
||||
|
||||
public DatasetsTest(final String datasetPath) {
|
||||
super(datasetPath);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getSchemas() {
|
||||
return new String[]{"ccm_core", "ccm_shortcuts"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public DatasetType getDatasetType() {
|
||||
return DatasetType.FLAT_XML;
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void setUpClass() {
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void tearDownClass() {
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,286 @@
|
|||
/*
|
||||
* Copyright (C) 2016 LibreCCM Foundation.
|
||||
*
|
||||
* This library 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 library 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 library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.shortcuts;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.IntStream;
|
||||
import javax.inject.Inject;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.PersistenceContext;
|
||||
import org.jboss.arquillian.container.test.api.Deployment;
|
||||
import org.jboss.arquillian.container.test.api.ShouldThrowException;
|
||||
import org.jboss.arquillian.junit.Arquillian;
|
||||
import org.jboss.arquillian.junit.InSequence;
|
||||
import org.jboss.arquillian.persistence.CreateSchema;
|
||||
import org.jboss.arquillian.persistence.PersistenceTest;
|
||||
import org.jboss.arquillian.persistence.ShouldMatchDataSet;
|
||||
import org.jboss.arquillian.persistence.UsingDataSet;
|
||||
import org.jboss.arquillian.transaction.api.annotation.TransactionMode;
|
||||
import org.jboss.arquillian.transaction.api.annotation.Transactional;
|
||||
import org.jboss.shrinkwrap.api.ShrinkWrap;
|
||||
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
|
||||
import org.jboss.shrinkwrap.api.spec.WebArchive;
|
||||
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
|
||||
import org.jboss.shrinkwrap.resolver.api.maven.PomEquippedResolveStage;
|
||||
import org.jboss.shrinkwrap.resolver.api.maven.ScopeType;
|
||||
import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependencies;
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.junit.experimental.categories.Category;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.libreccm.tests.categories.IntegrationTest;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@Category(IntegrationTest.class)
|
||||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"create_ccm_shortcuts_schema.sql"})
|
||||
public class ShortcutManagerTest {
|
||||
|
||||
@Inject
|
||||
private ShortcutManager shortcutManager;
|
||||
|
||||
@PersistenceContext
|
||||
private EntityManager entityManager;
|
||||
|
||||
public ShortcutManagerTest() {
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void setUpClass() {
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void tearDownClass() {
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
@Deployment
|
||||
public static WebArchive createDeployment() {
|
||||
final PomEquippedResolveStage pom = Maven
|
||||
.resolver()
|
||||
.loadPomFromFile("pom.xml");
|
||||
final PomEquippedResolveStage dependencies = pom
|
||||
.importCompileAndRuntimeDependencies();
|
||||
dependencies.addDependency(MavenDependencies.createDependency(
|
||||
"org.libreccm:ccm-core", ScopeType.RUNTIME, false));
|
||||
dependencies.addDependency(MavenDependencies.createDependency(
|
||||
"org.libreccm:ccm-testutils", ScopeType.RUNTIME, false));
|
||||
dependencies.addDependency(MavenDependencies.createDependency(
|
||||
"net.sf.saxon:Saxon-HE", ScopeType.RUNTIME, false));
|
||||
dependencies.addDependency(MavenDependencies.createDependency(
|
||||
"org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven",
|
||||
ScopeType.RUNTIME, false));
|
||||
final File[] libsWithCcmCore = dependencies.resolve().withTransitivity().
|
||||
asFile();
|
||||
|
||||
final List<File> libsList = new ArrayList<>(libsWithCcmCore.length - 1);
|
||||
IntStream.range(0, libsWithCcmCore.length).forEach(i -> {
|
||||
final File lib = libsWithCcmCore[i];
|
||||
if (!lib.getName().startsWith("ccm-core")) {
|
||||
libsList.add(lib);
|
||||
}
|
||||
});
|
||||
final File[] libs = libsList.toArray(new File[libsList.size()]);
|
||||
|
||||
for (File lib : libs) {
|
||||
System.err.printf("Adding file '%s' to test archive...%n",
|
||||
lib.getName());
|
||||
}
|
||||
|
||||
return ShrinkWrap.create(
|
||||
WebArchive.class,
|
||||
"LibreCCM-org.libreccm.shortcuts.ShortcutTest-web.war")
|
||||
.addPackage(org.libreccm.categorization.Categorization.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.configuration.Configuration.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.core.CcmCore.class.getPackage())
|
||||
.addPackage(org.libreccm.jpa.EntityManagerProducer.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
||||
.addPackage(org.libreccm.shortcuts.Shortcuts.class.getPackage())
|
||||
.addPackage(org.libreccm.web.CcmApplication.class.getPackage())
|
||||
.addPackage(org.libreccm.workflow.Workflow.class.getPackage())
|
||||
.addAsLibraries(libs)
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
.addAsWebInfResource("test-web.xml", "WEB-INF/web.xml")
|
||||
.addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml");
|
||||
}
|
||||
|
||||
@Test
|
||||
@InSequence(1)
|
||||
public void managerIsInjected() {
|
||||
assertThat(shortcutManager, is(not(nullValue())));
|
||||
}
|
||||
|
||||
@Test
|
||||
@InSequence(2)
|
||||
public void entityManagerIsInjected() {
|
||||
assertThat(entityManager, is(not((nullValue()))));
|
||||
}
|
||||
|
||||
@Test
|
||||
@UsingDataSet(
|
||||
"datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
@ShouldMatchDataSet(
|
||||
value = "datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml",
|
||||
excludeColumns = {"shortcut_id"})
|
||||
@InSequence(100)
|
||||
public void createShortcutStringParams() {
|
||||
shortcutManager.createShortcut("datenschutz",
|
||||
"/ccm/navigation/privacy");
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
@UsingDataSet(
|
||||
"datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
@ShouldThrowException(IllegalArgumentException.class)
|
||||
@InSequence(110)
|
||||
public void createShortcutStringParamsNullUrlKey() {
|
||||
shortcutManager.createShortcut(null, "http://www.example.org");
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
@UsingDataSet(
|
||||
"datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
@ShouldThrowException(IllegalArgumentException.class)
|
||||
@InSequence(120)
|
||||
public void createShortcutStringParamsNullRedirect() {
|
||||
shortcutManager.createShortcut("example", null);
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
@UsingDataSet(
|
||||
"datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
@ShouldThrowException(IllegalArgumentException.class)
|
||||
@InSequence(140)
|
||||
public void createShortcutStringParamsEmptyUrlKey() {
|
||||
shortcutManager.createShortcut(" ", "http://www.example.org");
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
@UsingDataSet(
|
||||
"datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
@ShouldThrowException(IllegalArgumentException.class)
|
||||
@InSequence(150)
|
||||
public void createShortcutStringParamsEmptyRedirect() {
|
||||
shortcutManager.createShortcut("example", " ");
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
@UsingDataSet(
|
||||
"datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
@ShouldThrowException(IllegalArgumentException.class)
|
||||
@InSequence(160)
|
||||
public void createShortcutStringParamsEmptyParams() {
|
||||
shortcutManager.createShortcut("", "");
|
||||
}
|
||||
|
||||
// @Test
|
||||
// @UsingDataSet(
|
||||
// "datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
// @ShouldMatchDataSet(
|
||||
// value = "datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml",
|
||||
// excludeColumns = {"shortcut_id"})
|
||||
// @InSequence(200)
|
||||
// public void createShortcutUrlParams() throws MalformedURLException {
|
||||
// final URL urlKey = new URL("datenschutz");
|
||||
// final URL redirect = new URL("/ccm/navigation/privacy");
|
||||
//
|
||||
// shortcutManager.createShortcut(urlKey, redirect);
|
||||
// }
|
||||
//
|
||||
// @Test(expected = IllegalArgumentException.class)
|
||||
// @UsingDataSet(
|
||||
// "datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
// @ShouldThrowException(IllegalArgumentException.class)
|
||||
// @InSequence(210)
|
||||
// public void createShortcutUrlParamsNullUrlKey() throws MalformedURLException {
|
||||
// shortcutManager.createShortcut(null, new URL("http://www.example.org"));
|
||||
// }
|
||||
//
|
||||
// @Test(expected = IllegalArgumentException.class)
|
||||
// @UsingDataSet(
|
||||
// "datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
// @ShouldThrowException(IllegalArgumentException.class)
|
||||
// @InSequence(220)
|
||||
// public void createShortcutUrlParamsNullRedirect() throws
|
||||
// MalformedURLException {
|
||||
// shortcutManager.createShortcut(new URL("example"), null);
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// @UsingDataSet(
|
||||
// "datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
// @ShouldMatchDataSet(
|
||||
// value = "datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml",
|
||||
// excludeColumns = {"shortcut_id"})
|
||||
// @InSequence(300)
|
||||
// public void createShortcutUriParams() throws URISyntaxException {
|
||||
// final URI urlKey = new URI("datenschutz");
|
||||
// final URI redirect = new URI("/ccm/navigation/privacy");
|
||||
//
|
||||
// shortcutManager.createShortcut(urlKey, redirect);
|
||||
// }
|
||||
//
|
||||
// @Test(expected = IllegalArgumentException.class)
|
||||
// @UsingDataSet(
|
||||
// "datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
// @ShouldThrowException(IllegalArgumentException.class)
|
||||
// @InSequence(310)
|
||||
// public void createShortcutUriParamsNullUrlKey() throws URISyntaxException {
|
||||
// shortcutManager.createShortcut(null, new URI("http://www.example.org"));
|
||||
// }
|
||||
//
|
||||
// @Test(expected = IllegalArgumentException.class)
|
||||
// @UsingDataSet(
|
||||
// "datasets/org/libreccm/shortcuts/ShortcutManagerTest/data.xml")
|
||||
// @ShouldThrowException(IllegalArgumentException.class)
|
||||
// @InSequence(320)
|
||||
// public void createShortcutUriParamsNullRedirect() throws URISyntaxException {
|
||||
// shortcutManager.createShortcut(new URI("example"), null);
|
||||
// }
|
||||
}
|
||||
|
|
@ -27,14 +27,11 @@ import org.jboss.arquillian.transaction.api.annotation.TransactionMode;
|
|||
import org.jboss.arquillian.transaction.api.annotation.Transactional;
|
||||
import org.jboss.shrinkwrap.api.ShrinkWrap;
|
||||
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
|
||||
import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
|
||||
import org.jboss.shrinkwrap.api.spec.WebArchive;
|
||||
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
|
||||
import org.jboss.shrinkwrap.resolver.api.maven.PomEquippedResolveStage;
|
||||
import org.jboss.shrinkwrap.resolver.api.maven.ScopeType;
|
||||
import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependencies;
|
||||
import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependency;
|
||||
import org.jboss.shrinkwrap.resolver.impl.maven.coordinate.MavenDependencyImpl;
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
|
|
@ -45,10 +42,15 @@ import org.junit.runner.RunWith;
|
|||
import org.libreccm.tests.categories.IntegrationTest;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.PersistenceContext;
|
||||
import org.jboss.arquillian.persistence.UsingDataSet;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
|
@ -90,51 +92,59 @@ public class ShortcutRepositoryTest {
|
|||
}
|
||||
|
||||
@Deployment
|
||||
public static EnterpriseArchive createDeployment() {
|
||||
public static WebArchive createDeployment() {
|
||||
final PomEquippedResolveStage pom = Maven
|
||||
.resolver()
|
||||
.loadPomFromFile("pom.xml");
|
||||
.resolver()
|
||||
.loadPomFromFile("pom.xml");
|
||||
final PomEquippedResolveStage dependencies = pom
|
||||
.importCompileAndRuntimeDependencies();
|
||||
.importCompileAndRuntimeDependencies();
|
||||
dependencies.addDependency(MavenDependencies.createDependency(
|
||||
"org.libreccm:ccm-core", ScopeType.RUNTIME, false));
|
||||
"org.libreccm:ccm-core", ScopeType.RUNTIME, false));
|
||||
dependencies.addDependency(MavenDependencies.createDependency(
|
||||
"org.libreccm:ccm-testutils", ScopeType.RUNTIME, false));
|
||||
"org.libreccm:ccm-testutils", ScopeType.RUNTIME, false));
|
||||
dependencies.addDependency(MavenDependencies.createDependency(
|
||||
"net.sf.saxon:Saxon-HE", ScopeType.RUNTIME, false));
|
||||
final File[] libs = dependencies.resolve().withTransitivity().asFile();
|
||||
"net.sf.saxon:Saxon-HE", ScopeType.RUNTIME, false));
|
||||
dependencies.addDependency(MavenDependencies.createDependency(
|
||||
"org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven",
|
||||
ScopeType.RUNTIME, false));
|
||||
final File[] libsWithCcmCore = dependencies.resolve().withTransitivity().
|
||||
asFile();
|
||||
|
||||
final List<File> libsList = new ArrayList<>(libsWithCcmCore.length - 1);
|
||||
IntStream.range(0, libsWithCcmCore.length).forEach(i -> {
|
||||
final File lib = libsWithCcmCore[i];
|
||||
if (!lib.getName().startsWith("ccm-core")) {
|
||||
libsList.add(lib);
|
||||
}
|
||||
});
|
||||
final File[] libs = libsList.toArray(new File[libsList.size()]);
|
||||
|
||||
for (File lib : libs) {
|
||||
System.err.printf("Adding file '%s' to test archive...%n",
|
||||
lib.getName());
|
||||
}
|
||||
|
||||
final WebArchive webArchive = ShrinkWrap.create(
|
||||
WebArchive.class,
|
||||
"LibreCCM-org.libreccm.shortcuts.ShortcutTest-web.war")
|
||||
// .addPackage(org.libreccm.categorization.Categorization.class
|
||||
// .getPackage())
|
||||
// .addPackage(org.libreccm.configuration.Configuration.class
|
||||
// .getPackage())
|
||||
// .addPackage(org.libreccm.core.CcmCore.class.getPackage())
|
||||
// .addPackage(org.libreccm.jpa.EntityManagerProducer.class
|
||||
// .getPackage())
|
||||
// .addPackage(org.libreccm.l10n.LocalizedString.class.getPackage())
|
||||
// .addPackage(org.libreccm.security.Permission.class.getPackage())
|
||||
.addPackage(org.libreccm.shortcuts.Shortcuts.class.getPackage())
|
||||
// .addPackage(org.libreccm.web.CcmApplication.class.getPackage())
|
||||
// .addPackage(org.libreccm.workflow.Workflow.class.getPackage())
|
||||
.addAsLibraries(libs)
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
.addAsWebInfResource("test-web.xml", "WEB-INF/web.xml")
|
||||
.addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml");
|
||||
|
||||
return ShrinkWrap.create(
|
||||
EnterpriseArchive.class,
|
||||
"LibreCCM-org.libreccm.shortcuts.ShortcutRepositoryTest.ear")
|
||||
.addAsModule(webArchive)
|
||||
.addAsResource("application.xml", "application.xml");
|
||||
WebArchive.class,
|
||||
"LibreCCM-org.libreccm.shortcuts.ShortcutTest-web.war")
|
||||
.addPackage(org.libreccm.categorization.Categorization.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.configuration.Configuration.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.core.CcmCore.class.getPackage())
|
||||
.addPackage(org.libreccm.jpa.EntityManagerProducer.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
||||
.addPackage(org.libreccm.shortcuts.Shortcuts.class.getPackage())
|
||||
.addPackage(org.libreccm.web.CcmApplication.class.getPackage())
|
||||
.addPackage(org.libreccm.workflow.Workflow.class.getPackage())
|
||||
.addAsLibraries(libs)
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
.addAsWebInfResource("test-web.xml", "WEB-INF/web.xml")
|
||||
.addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -149,4 +159,80 @@ public class ShortcutRepositoryTest {
|
|||
assertThat(entityManager, is(not((nullValue()))));
|
||||
}
|
||||
|
||||
@Test
|
||||
@UsingDataSet(
|
||||
"datasets/org/libreccm/shortcuts/ShortcutRepositoryTest/data.xml")
|
||||
@InSequence(10)
|
||||
public void findByUrlKey() {
|
||||
|
||||
final Optional<Shortcut> members = shortcutRepository.findByUrlKey(
|
||||
"members");
|
||||
final Optional<Shortcut> mitglieder = shortcutRepository.findByUrlKey(
|
||||
"mitglieder");
|
||||
final Optional<Shortcut> shop = shortcutRepository.findByUrlKey("shop");
|
||||
|
||||
assertThat(members.isPresent(), is(true));
|
||||
assertThat(members.get().getUrlKey(), is(equalTo("members")));
|
||||
assertThat(members.get().getRedirect(),
|
||||
is(equalTo("/ccm/navigation/members")));
|
||||
|
||||
assertThat(mitglieder.isPresent(), is(true));
|
||||
assertThat(mitglieder.get().getUrlKey(), is(equalTo("mitglieder")));
|
||||
assertThat(mitglieder.get().getRedirect(),
|
||||
is(equalTo("/ccm/navigation/members")));
|
||||
|
||||
assertThat(shop.isPresent(), is(true));
|
||||
assertThat(shop.get().getUrlKey(),
|
||||
is(equalTo("shop")));
|
||||
assertThat(shop.get().getRedirect(),
|
||||
is(equalTo("http://www.example.com")));
|
||||
}
|
||||
|
||||
@Test
|
||||
@UsingDataSet(
|
||||
"datasets/org/libreccm/shortcuts/ShortcutRepositoryTest/data.xml")
|
||||
@InSequence(10)
|
||||
public void findByUrlKeyNotExisting() {
|
||||
final Optional<Shortcut> result = shortcutRepository.findByUrlKey(
|
||||
"foo");
|
||||
|
||||
assertThat(result, is(not(nullValue())));
|
||||
assertThat(result.isPresent(), is(false));
|
||||
}
|
||||
|
||||
@Test
|
||||
@UsingDataSet(
|
||||
"datasets/org/libreccm/shortcuts/ShortcutRepositoryTest/data.xml")
|
||||
@InSequence(30)
|
||||
public void findByRedirect() {
|
||||
|
||||
final List<Shortcut> toMembers = shortcutRepository.findByRedirect(
|
||||
"/ccm/navigation/members");
|
||||
assertThat(toMembers.size(), is(2));
|
||||
assertThat(toMembers.get(0).getUrlKey(), is(equalTo("members")));
|
||||
assertThat(toMembers.get(0).getRedirect(),
|
||||
is(equalTo("/ccm/navigation/members")));
|
||||
assertThat(toMembers.get(1).getUrlKey(), is(equalTo("mitglieder")));
|
||||
assertThat(toMembers.get(1).getRedirect(),
|
||||
is(equalTo("/ccm/navigation/members")));
|
||||
|
||||
final List<Shortcut> toExampleCom = shortcutRepository.findByRedirect(
|
||||
"http://www.example.com");
|
||||
assertThat(toExampleCom.size(), is(1));
|
||||
assertThat(toExampleCom.get(0).getUrlKey(), is(equalTo("shop")));
|
||||
assertThat(toExampleCom.get(0).getRedirect(),
|
||||
is(equalTo("http://www.example.com")));
|
||||
}
|
||||
|
||||
@Test
|
||||
@UsingDataSet(
|
||||
"datasets/org/libreccm/shortcuts/ShortcutRepositoryTest/data.xml")
|
||||
@InSequence(30)
|
||||
public void findByRedirectNotExisting() {
|
||||
final List<Shortcut> result = shortcutRepository.findByRedirect(
|
||||
"http://www.example.org");
|
||||
|
||||
assertThat(result, is(not(nullValue())));
|
||||
assertThat(result.isEmpty(), is(true));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -624,14 +624,15 @@ CREATE SCHEMA ccm_shortcuts;
|
|||
add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME);
|
||||
|
||||
create table CCM_SHORTCUTS.SHORTCUTS (
|
||||
SHORTCUTS_ID bigint not null,
|
||||
SHORTCUT_ID bigint not null,
|
||||
REDIRECT varchar(1024),
|
||||
URL_KEY varchar(1024),
|
||||
primary key (SHORTCUTS_ID)
|
||||
primary key (SHORTCUT_ID)
|
||||
);
|
||||
|
||||
alter table CCM_SHORTCUTS.SHORTCUTS
|
||||
add constraint UK_4otuwtog6qqdbg4e6p8xdpw8h unique (URL_KEY);
|
||||
|
||||
create sequence hibernate_sequence start with 1 increment by 1;
|
||||
|
||||
alter table CCM_CORE.APPLICATIONS
|
||||
|
|
|
|||
|
|
@ -624,10 +624,10 @@ CREATE SCHEMA ccm_shortcuts;
|
|||
add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME);
|
||||
|
||||
create table CCM_SHORTCUTS.SHORTCUTS (
|
||||
SHORTCUTS_ID int8 not null,
|
||||
SHORTCUT_ID int8 not null,
|
||||
REDIRECT varchar(1024),
|
||||
URL_KEY varchar(1024),
|
||||
primary key (SHORTCUTS_ID)
|
||||
primary key (SHORTCUT_ID)
|
||||
);
|
||||
|
||||
alter table CCM_SHORTCUTS.SHORTCUTS
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dataset>
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-10"
|
||||
url_key="mitglieder"
|
||||
redirect="/ccm/navigation/members" />
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-20"
|
||||
url_key="members"
|
||||
redirect="/ccm/navigation/members" />
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-30"
|
||||
url_key="privacy"
|
||||
redirect="/ccm/navigation/privacy" />
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-40"
|
||||
url_key="shop"
|
||||
redirect="http://www.example.com" />
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-50"
|
||||
url_key="datenschutz"
|
||||
redirect="/ccm/navigation/privacy" />
|
||||
</dataset>
|
||||
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dataset>
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-10"
|
||||
url_key="mitglieder"
|
||||
redirect="/ccm/navigation/members" />
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-20"
|
||||
url_key="members"
|
||||
redirect="/ccm/navigation/members" />
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-30"
|
||||
url_key="privacy"
|
||||
redirect="/ccm/navigation/privacy" />
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-40"
|
||||
url_key="shop"
|
||||
redirect="http://www.example.com" />
|
||||
</dataset>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dataset>
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-10"
|
||||
url_key="mitglieder"
|
||||
redirect="/ccm/navigation/members" />
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-20"
|
||||
url_key="members"
|
||||
redirect="/ccm/navigation/members" />
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-30"
|
||||
url_key="privacy"
|
||||
redirect="/ccm/navigation/privacy" />
|
||||
<ccm_shortcuts.shortcuts shortcut_id="-40"
|
||||
url_key="shop"
|
||||
redirect="http://www.example.com" />
|
||||
</dataset>
|
||||
|
|
@ -108,7 +108,10 @@ public class DatasetsVerifier {
|
|||
if (getSchemas().length > 0) {
|
||||
buffer.append(";INIT=");
|
||||
for (final String schema : getSchemas()) {
|
||||
buffer.append(String.format("CREATE SCHEMA IF NOT EXISTS %s;",
|
||||
if (buffer.length() > 0) {
|
||||
buffer.append("\\;");
|
||||
}
|
||||
buffer.append(String.format("CREATE SCHEMA IF NOT EXISTS %s",
|
||||
schema));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue